-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathAddCreatureToArmyTest.java
More file actions
97 lines (80 loc) · 3.38 KB
/
AddCreatureToArmyTest.java
File metadata and controls
97 lines (80 loc) · 3.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
package com.dddheroes.heroesofddd.armies.write.addcreature;
import com.dddheroes.heroesofddd.armies.write.ArmyTest;
import com.dddheroes.heroesofddd.shared.domain.valueobjects.Amount;
import com.dddheroes.heroesofddd.shared.domain.identifiers.CreatureId;
import com.dddheroes.heroesofddd.shared.CreatureIds;
import com.dddheroes.heroesofddd.shared.domain.DomainRule;
import org.junit.jupiter.api.*;
import java.util.List;
class AddCreatureToArmyTest extends ArmyTest {
@Test
void givenEmptyArmy_WhenAddCreatureToArmy_ThenSuccess() {
// given
var givenEvents = List.of();
// when
var whenCommand = addCreatureToArmy(CreatureIds.angel(), 1);
// then
var thenEvent = creatureAddedToArmy(CreatureIds.angel(), 1);
fixture.given(givenEvents)
.when(whenCommand)
.expectEvents(thenEvent);
}
@Test
void givenSomeStacksInArmy_WhenAddCreatureToArmy_ThenSuccess() {
// given
var givenEvents = List.of(
creatureAddedToArmy(CreatureIds.centaur(), 5),
creatureAddedToArmy(CreatureIds.bowman(), 99)
);
// when
var whenCommand = addCreatureToArmy(CreatureIds.angel(), 1);
// then
var thenEvent = creatureAddedToArmy(CreatureIds.angel(), 1);
fixture.given(givenEvents)
.when(whenCommand)
.expectEvents(thenEvent);
}
@Test
void givenArmyWithMaxCreatureStacks_WhenAddAnotherCreature_ThenException() {
// given
var givenEvents = List.of(
creatureAddedToArmy(CreatureIds.centaur(), 5),
creatureAddedToArmy(CreatureIds.angel(), 1),
creatureAddedToArmy(CreatureIds.archAngel(), 3),
creatureAddedToArmy(CreatureIds.blackDragon(), 9),
creatureAddedToArmy(CreatureIds.redDragon(), 15),
creatureAddedToArmy(CreatureIds.bowman(), 12),
creatureAddedToArmy(CreatureIds.behemoth(), 11)
);
// when
var whenCommand = addCreatureToArmy(CreatureIds.phoenix(), 3);
// then
fixture.given(givenEvents)
.when(whenCommand)
.expectException(DomainRule.ViolatedException.class)
.expectExceptionMessage("Can have max 7 different creature stacks in the army");
}
@Test
void givenArmyWithMaxCreatureStacks_WhenAddPresentCreature_ThenSuccess() {
// given
var givenEvents = List.of(
creatureAddedToArmy(CreatureIds.centaur(), 5),
creatureAddedToArmy(CreatureIds.angel(), 1),
creatureAddedToArmy(CreatureIds.archAngel(), 3),
creatureAddedToArmy(CreatureIds.blackDragon(), 9),
creatureAddedToArmy(CreatureIds.redDragon(), 15),
creatureAddedToArmy(CreatureIds.bowman(), 12),
creatureAddedToArmy(CreatureIds.behemoth(), 11)
);
// when
var whenCommand = addCreatureToArmy(CreatureIds.archAngel(), 5);
// then
var thenEvent = creatureAddedToArmy(CreatureIds.archAngel(), 5);
fixture.given(givenEvents)
.when(whenCommand)
.expectEvents(thenEvent);
}
private AddCreatureToArmy addCreatureToArmy(CreatureId creatureId, int quantity) {
return new AddCreatureToArmy(armyId, creatureId, Amount.of(quantity));
}
}