1 package civitas.common.mix.votemix.tests;
2
3 import static org.junit.jupiter.api.Assertions.assertThrows;
4 import static org.mockito.Mockito.verify;
5
6 import org.junit.jupiter.api.DisplayName;
7 import org.junit.jupiter.api.Test;
8 import org.mockito.InjectMocks;
9 import org.mockito.Mock;
10
11 import civitas.common.mix.AddCommitmentToMix;
12 import civitas.common.mix.votemix.AddVoteAndCommitmentToVoteMix;
13 import civitas.common.mix.votemix.AddVoteToVoteMix;
14 import civitas.common.tests.RandomAwareTestBase;
15 import civitas.common.tests.VoteTestData;
16
17 class AddVoteAndCommitmentToVoteMixTest extends RandomAwareTestBase implements VoteMixTestData, VoteTestData {
18
19 @InjectMocks
20 AddVoteAndCommitmentToVoteMix addVoteAndCommitmentToVoteMix;
21
22 @Mock
23 AddVoteToVoteMix addVoteToVoteMix;
24
25 @Mock
26 AddCommitmentToMix addCommitmentToMix;
27
28 @Test
29 @DisplayName("adds the vote to the mix and adds the commitment to the mix")
30 void test() throws IllegalAccessException {
31 addVoteAndCommitmentToVoteMix.apply(VOTE_MIX_MOCK, VOTE_MOCK, BYTES);
32 verify(addCommitmentToMix).apply(VOTE_MIX_MOCK, BYTES);
33 verify(addVoteToVoteMix).apply(VOTE_MIX_MOCK, VOTE_MOCK);
34 }
35
36 @Test
37 @DisplayName("if the mix is null, a NullPointerException is thrown")
38 void test1() {
39 assertThrows(NullPointerException.class, () -> addVoteAndCommitmentToVoteMix.apply(null, VOTE_MOCK, BYTES));
40 }
41
42 @Test
43 @DisplayName("if the vote is null, a NullPointerException is thrown")
44 void test2() {
45 assertThrows(NullPointerException.class, () -> addVoteAndCommitmentToVoteMix.apply(VOTE_MIX_MOCK, null, BYTES));
46 }
47
48 @Test
49 @DisplayName("if the commitments is null, a NullPointerException is thrown")
50 void test3() {
51 assertThrows(
52 NullPointerException.class, () -> addVoteAndCommitmentToVoteMix.apply(VOTE_MIX_MOCK, VOTE_MOCK, null));
53 }
54 }