Shut down core after the test.
[xudocci.git] / src / test / java / net / pterodactylus / xdcc / core / CoreTest.java
1 package net.pterodactylus.xdcc.core;
2
3 import static org.mockito.Matchers.any;
4 import static org.mockito.Matchers.anyString;
5 import static org.mockito.Mockito.mock;
6 import static org.mockito.Mockito.verify;
7 import static org.mockito.Mockito.when;
8
9 import net.pterodactylus.irc.Connection;
10 import net.pterodactylus.irc.ConnectionFactory;
11 import net.pterodactylus.xdcc.core.event.CoreStarted;
12 import net.pterodactylus.xdcc.data.Channel;
13 import net.pterodactylus.xdcc.data.Network;
14
15 import com.google.common.eventbus.EventBus;
16 import org.junit.After;
17 import org.junit.Before;
18 import org.junit.Test;
19
20 public class CoreTest {
21
22         private static final String TEMP_DIRECTORY = "/tmp";
23         private static final String FINAL_DIRECTORY = "/final";
24         private final EventBus eventBus = mock(EventBus.class);
25         private final ConnectionFactory connectionFactory = mock(ConnectionFactory.class);
26         private final Core core =
27                         new Core(eventBus, connectionFactory, TEMP_DIRECTORY, FINAL_DIRECTORY);
28         private final Connection firstConnection = mock(Connection.class);
29         private final Connection secondConnection = mock(Connection.class);
30
31         @Before
32         public void setupConnections() {
33                 when(firstConnection.username(anyString())).thenReturn(firstConnection);
34                 when(secondConnection.username(anyString())).thenReturn(secondConnection);
35         }
36
37         @Before
38         public void setupConnectionFactory() {
39                 when(connectionFactory.createConnection("first.net", 6667)).thenReturn(firstConnection);
40                 when(connectionFactory.createConnection("second.net", 6667)).thenReturn(secondConnection);
41         }
42
43         @After
44         public void tearDown() {
45                 core.stopAndWait();
46         }
47
48         @Test
49         public void startingTheCoreConnectsToConfiguredNetworks() {
50                 Network firstNetwork = Network.builder("FirstNet")
51                                 .addServer()
52                                 .at("first.net")
53                                 .port(6667)
54                                 .endServer()
55                                 .build();
56                 Channel firstChannel = new Channel(firstNetwork, "#first");
57                 Network secondNetwork = Network.builder("SecondNet")
58                                 .addServer()
59                                 .at("second.net")
60                                 .port(6667)
61                                 .endServer()
62                                 .build();
63                 Channel secondChannel = new Channel(secondNetwork, "#second");
64                 core.addChannel(firstChannel);
65                 core.addChannel(secondChannel);
66                 core.startAndWait();
67                 verify(eventBus).post(any(CoreStarted.class));
68                 verify(firstConnection).open();
69                 verify(secondConnection).open();
70         }
71
72 }