package tv.dyndns.kishibe.qmaclone.server; import static org.junit.Assert.assertEquals; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; import org.mockito.Captor; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import tv.dyndns.kishibe.qmaclone.client.packet.PacketProblem; import tv.dyndns.kishibe.qmaclone.server.database.Database; import com.google.common.collect.ImmutableList; @RunWith(MockitoJUnitRunner.class) public class VoteManagerTest { private static final int FAKE_PROBLEM_ID = 12345; @Mock private Database mockDatabase; @Mock private ThreadPool mockThreadPool; @Mock private RestrictedUserUtils mockRestrictedUserUtils; @Captor private ArgumentCaptor<PacketProblem> problemCaptor; private VoteManager voteManager; @Before public void setUp() throws Exception { voteManager = new VoteManager(mockDatabase, mockThreadPool, mockRestrictedUserUtils); } @Test public void resetShouldSetVoteGoodBadToZero() throws Exception { PacketProblem fakePacketProblem = new PacketProblem(); fakePacketProblem.voteGood = 10; fakePacketProblem.voteBad = 20; when(mockDatabase.getProblem(ImmutableList.of(FAKE_PROBLEM_ID))).thenReturn( ImmutableList.of(fakePacketProblem)); voteManager.reset(FAKE_PROBLEM_ID); verify(mockDatabase).updateProblem(problemCaptor.capture()); assertEquals(0, problemCaptor.getValue().voteGood); assertEquals(0, problemCaptor.getValue().voteBad); } }