/
PhaseEventCreateTests.groovy
192 lines (140 loc) · 5.55 KB
/
PhaseEventCreateTests.groovy
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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
/*
* Copyright 2009 Qbranch AB
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package se.qbranch.qanban
import grails.test.*
class PhaseEventCreateTests extends GrailsUnitTestCase {
def user1
def user2
def board
def phase1
def phase2
def phase3
def card1onPhase1
def card2onPhase1
def card3onPhase2
protected void setUp() {
super.setUp()
// User mock
user1 = new User(username: "opsmrkr01", userRealName: "Mr. Krister")
user2 = new User(username: "opsshba01", userRealName: "Shean Banan")
mockDomain(User,[user1,user2])
// Board mock
board = new Board()
mockDomain(Board,[board])
// Phase / PhaseEventCreate mock
mockDomain(PhaseEventCreate)
mockDomain(Phase)
def phaseEventCreate1 = new PhaseEventCreate(title: "First phase", cardLimit: 5, phasePos: 0, user: user1, board: board)
def phaseEventCreate2 = new PhaseEventCreate(title: "Second phase", cardLimit: 10, phasePos: 1, user: user1 , board: board)
def phaseEventCreate3 = new PhaseEventCreate(title: "Third phase", cardLimit: 0, user: user1, phasePos: 2, board: board)
phaseEventCreate1.beforeInsert()
phaseEventCreate1.save()
phaseEventCreate1.process()
phaseEventCreate2.beforeInsert()
phaseEventCreate2.save()
phaseEventCreate2.process()
phaseEventCreate3.beforeInsert()
phaseEventCreate3.save()
phaseEventCreate3.process()
phase1 = phaseEventCreate1.phase
phase2 = phaseEventCreate2.phase
phase3 = phaseEventCreate3.phase
assertEquals phase1, Phase.findByDomainId(phase1.domainId)
// Card / CardEventCreate mock
mockDomain(CardEventCreate)
mockDomain(Card)
def cardEventCreate1 = new CardEventCreate(title:"Card #1",caseNumber:1,description:"The first card originally from First phase on the first position",phaseDomainId:phase1.domainId,user:user1)
def cardEventCreate2 = new CardEventCreate(title:"Card #2",caseNumber:2,description:"The second card originally from First phase on the second position",phaseDomainId:phase1.domainId,user:user1)
def cardEventCreate3 = new CardEventCreate(title:"Card #3",caseNumber:3,description:"The third card originally from Second phase on the first position",phaseDomainId:phase2.domainId,user:user1)
cardEventCreate1.beforeInsert()
cardEventCreate1.save()
cardEventCreate1.process()
cardEventCreate2.beforeInsert()
cardEventCreate2.save()
cardEventCreate2.process()
cardEventCreate3.beforeInsert()
cardEventCreate3.save()
cardEventCreate3.process()
card1onPhase1 = cardEventCreate1.card
card2onPhase1 = cardEventCreate2.card
card3onPhase2 = cardEventCreate3.card
// Assertions to validate the mock setup
assertEquals 1, board.id
assertEquals 3, board.phases.size()
assertEquals 1, phase1.id
assertEquals 2, phase1.cards.size()
assertEquals 2, phase2.id
assertEquals 1, phase2.cards.size()
assertEquals 3, phase3.id
assertEquals 1, card1onPhase1.id
assertEquals 2, card2onPhase1.id
assertEquals 3, card3onPhase2.id
mockDomain(PhaseEventCreate)
}
protected void tearDown() {
super.tearDown()
}
void testCreatingAValidPhase() {
String title = 'Fourth phase'
Integer position = 1
Integer cardLimit = 100
def createEvent = new PhaseEventCreate(
title: title,
cardLimit: cardLimit,
phasePos: position,
board: board,
user: user1
)
createEvent.beforeInsert()
createEvent.save()
createEvent.process()
assertNotNull "There should be a phase", createEvent.phase
def newPhase = createEvent.phase
assertEquals newPhase.domainId, createEvent.domainId
assertEquals title, newPhase.title
assertEquals position, board.phases.indexOf(newPhase)
}
void testCreatingPhaseWithoudPosition() {
String title = 'Fourth phase'
Integer cardLimit = 100
def createEvent = new PhaseEventCreate(
title: title,
cardLimit: cardLimit,
board: board,
user: user1
)
if( createEvent.validate() ){
createEvent.beforeInsert()
createEvent.save()
createEvent.process()
}
assertNull "There should not be a phase", createEvent.phase
}
void testCreatingAPhaseWithLiteralsAsLimit(){
String cardLimit = "limit with literals"
String title = "Fourth phase"
def createEvent = new PhaseEventCreate(
title: title,
cardLimit: cardLimit,
board: board,
user: user1 ,
phasePos: 1
)
createEvent.validate();
println "$cardLimit - $createEvent.cardLimit"
assertTrue "Shiould have errors", createEvent.hasErrors()
}
}