-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathProclaimWeekSymbolTest.java
More file actions
90 lines (78 loc) · 3.1 KB
/
ProclaimWeekSymbolTest.java
File metadata and controls
90 lines (78 loc) · 3.1 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
package com.dddheroes.heroesofddd.astrologers.write.proclaimweeksymbol;
import com.dddheroes.heroesofddd.astrologers.events.WeekSymbolProclaimed;
import com.dddheroes.heroesofddd.astrologers.write.AstrologersId;
import com.dddheroes.heroesofddd.astrologers.write.AstrologersTest;
import com.dddheroes.heroesofddd.astrologers.write.MonthWeek;
import com.dddheroes.heroesofddd.astrologers.write.WeekSymbol;
import com.dddheroes.heroesofddd.shared.domain.identifiers.CreatureId;
import com.dddheroes.heroesofddd.shared.domain.DomainRule;
import org.junit.jupiter.api.*;
import java.util.List;
public class ProclaimWeekSymbolTest extends AstrologersTest {
@Test
void givenNothing_whenProclaimWeekSymbol_ThenSuccess() {
// given
var astrologersId = AstrologersId.random();
var month = 4;
var week = 2;
var weekOf = CreatureId.of("angel");
var growth = +5;
// when
var whenCommand = ProclaimWeekSymbol.command(astrologersId.raw(), month, week, weekOf.raw(), growth);
// when
var thenEvent = WeekSymbolProclaimed.event(
astrologersId,
MonthWeek.of(month, week),
WeekSymbol.of(weekOf, growth)
);
fixture.givenNoPriorActivity()
.when(whenCommand)
.expectEvents(thenEvent);
}
@Test
void givenWeekSymbolProclaimed_whenProclaimWeekSymbol_ThenException() {
// given
var astrologersId = AstrologersId.random();
var month = 4;
var week = 2;
var weekOf = CreatureId.of("black-dragon");
var growth = +5;
var givenEvents = List.of(
WeekSymbolProclaimed.event(
astrologersId,
MonthWeek.of(month, week),
WeekSymbol.of(weekOf, growth)
)
);
// when
var whenCommand = ProclaimWeekSymbol.command(astrologersId.raw(), month, week, weekOf.raw(), growth);
// when
fixture.given(givenEvents)
.when(whenCommand)
.expectException(DomainRule.ViolatedException.class)
.expectExceptionMessage("Only one symbol can be proclaimed per week");
}
@Test
void givenWeekSymbolProclaimed_whenProclaimWeekSymbolForPastWeek_ThenException() {
// given
var astrologersId = AstrologersId.random();
var month = 4;
var week = 2;
var weekOf = CreatureId.of("cyclops");
var growth = +5;
var givenEvents = List.of(
WeekSymbolProclaimed.event(
astrologersId,
MonthWeek.of(month, week),
WeekSymbol.of(weekOf, growth)
)
);
// when
var whenCommand = ProclaimWeekSymbol.command(astrologersId.raw(), month, week - 1, weekOf.raw(), growth);
// when
fixture.given(givenEvents)
.when(whenCommand)
.expectException(DomainRule.ViolatedException.class)
.expectExceptionMessage("Only one symbol can be proclaimed per week");
}
}