/**
* Copyright (C) 2010-2014 Leon Blakey <lord.quackstar at gmail.com>
*
* This file is part of PircBotX.
*
* PircBotX is free software: you can redistribute it and/or modify it under the
* terms of the GNU General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later
* version.
*
* PircBotX is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with
* PircBotX. If not, see <http://www.gnu.org/licenses/>.
*/
package org.pircbotx;
import org.pircbotx.exception.DaoException;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import static org.testng.Assert.*;
/**
* Tests for PircBotX class. Any test that involves processing server lines
* should be in PircBotXProcessingTest.
*
* @author Leon Blakey
*/
@Test(singleThreaded = true)
public class UserChannelDaoTest {
protected PircBotX smallBot;
protected UserChannelDao dao;
@BeforeMethod
public void setup() {
smallBot = new PircBotX(TestUtils.generateConfigurationBuilder()
.buildConfiguration());
dao = smallBot.getUserChannelDao();
}
@Test(description = "Make sure getting the wrong user gives an exception", expectedExceptions = DaoException.class)
public void getUserInvalidTest() {
smallBot.getUserChannelDao().getUser("RandomInvalidUser");
}
@Test
public void getUserValidTest() {
User origUser = TestUtils.generateTestUserSource(smallBot);
assertNotNull(origUser, "createUser returns null");
assertEquals(origUser, dao.getUser(origUser.getNick()), "getUser doesn't return the same user during second call");
}
@Test(expectedExceptions = DaoException.class)
public void getChannelInvalidTest() {
dao.getChannel("#randomChannel");
}
@Test(description = "Make sure channel doesn't return null and reliably returns the correct value")
public void getChannelValidTest() {
Channel channel = dao.createChannel("#aChannel");
assertNotNull(channel, "createChannel returns null for unknown channel");
assertEquals(channel, dao.getChannel("#aChannel"), "getChannel doesn't return the same channel during second call");
}
@Test(description = "Make sure userExists works")
public void userExistsTest() {
User origUser = TestUtils.generateTestUserOther(smallBot);
//Make sure it exists
assertTrue(dao.containsUser(origUser.getNick()));
}
@Test(description = "Make sure channelExists works")
public void channelExistsTest() {
dao.createChannel("#aChannel");
//Make sure it exists
assertTrue(dao.channelExists("#aChannel"));
}
@Test
public void getUserByHostmaskFull() {
dao.createUser(TestUtils.generateTestUserSourceHostmask(smallBot));
assertTrue(dao.containsUser("SourceUser"));
assertTrue(dao.containsUser(TestUtils.generateTestUserSourceHostmask(smallBot)));
assertTrue(dao.containsUser(new UserHostmask(smallBot, null, "SourceUser", "~SomeTest", null)));
assertTrue(dao.containsUser(new UserHostmask(smallBot, null, "SourceUser", "~SomeTest", "")));
assertTrue(dao.containsUser(new UserHostmask(smallBot, null, "SourceUser", null, null)));
assertTrue(dao.containsUser(new UserHostmask(smallBot, null, "SourceUser", "", "")));
assertTrue(dao.containsUser(new UserHostmask(smallBot, null, "SourceUser", null, "")));
assertTrue(dao.containsUser(new UserHostmask(smallBot, null, "SourceUser", "", null)));
assertTrue(dao.containsUser(new UserHostmask(smallBot, "SourceUser")));
assertFalse(dao.containsUser(TestUtils.generateTestUserOtherHostmask(smallBot)));
}
@Test
public void userHostmaskEqualsAndHashCodeTest() {
UserHostmask user1 = TestUtils.generateTestUserOtherHostmask(smallBot);
UserHostmask user2 = TestUtils.generateTestUserOtherHostmask(smallBot);
assertEquals(user1, user2);
assertEquals(user1.hashCode(), user2.hashCode());
}
@Test
public void userEqualsAndHashCodeTest() {
User user1 = new User(TestUtils.generateTestUserOtherHostmask(smallBot));
User user2 = new User(TestUtils.generateTestUserOtherHostmask(smallBot));
assertEquals(user1, user2);
//The following was removed since Users need to rely on uuid's to keep the DAO in sync
//assertEquals(user1.hashCode(), user2.hashCode());
}
}