Skip to content

Commit fda6f6c

Browse files
author
Illia Kucheriavyi
authored
Merge pull request #189 from kojiba/main
Added first items and validation of items for
2 parents e408d73 + 0a9d9c1 commit fda6f6c

15 files changed

+574
-164
lines changed

O-FISHTests/CatchViewModelTests.swift

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,67 @@ class CatchViewModelTests: XCTestCase {
110110
//then
111111
XCTAssertNotNil(fish)
112112
}
113+
114+
115+
func testIsComplete() {
116+
//given
117+
let sut = CatchViewModel()
118+
sut.fish = "Some fish"
119+
120+
// when
121+
sut.quantityType = [.weight, .count]
122+
sut.weight = 1
123+
sut.unit = .pound
124+
sut.number = 10
125+
126+
//then
127+
XCTAssertTrue(sut.isComplete)
128+
129+
// when
130+
sut.quantityType = [.count]
131+
sut.weight = 0
132+
sut.unit = .notSelected
133+
sut.number = 10
134+
135+
//then
136+
XCTAssertTrue(sut.isComplete)
137+
138+
// when
139+
sut.quantityType = [.weight]
140+
sut.weight = 1
141+
sut.unit = .kilograms
142+
sut.number = 0
143+
144+
//then
145+
XCTAssertTrue(sut.isComplete)
146+
}
147+
148+
func testIsNotComplete() {
149+
//given
150+
let sut = CatchViewModel()
151+
152+
//then
153+
XCTAssertFalse(sut.isComplete)
154+
155+
// when
156+
sut.fish = "Some fish"
157+
sut.weight = 1
158+
sut.unit = .kilograms
159+
sut.number = 1
160+
161+
// then
162+
XCTAssertFalse(sut.isComplete, "QuantityType mandatory")
163+
164+
// when
165+
sut.fish = ""
166+
sut.weight = 1
167+
sut.unit = .kilograms
168+
sut.number = 1
169+
sut.quantityType = [.weight, .count]
170+
171+
// then
172+
XCTAssertFalse(sut.isComplete, "Fish type mandatory")
173+
}
113174

114175
func testInitWithCatch() {
115176
//given

O-FISHTests/CrewMemberViewModelTests.swift

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,39 @@ class CrewMemberViewModelTests: XCTestCase {
8787
XCTAssertEqual(crew?.name, name)
8888
XCTAssertEqual(crew?.license, license)
8989
}
90-
90+
91+
func testIsComplete() {
92+
//given
93+
let sut = CrewMemberViewModel()
94+
95+
// when
96+
sut.name = "Name"
97+
sut.license = "Licence number"
98+
99+
//then
100+
XCTAssertTrue(sut.isComplete, "If name and licence is filled then crew should be complete")
101+
}
102+
103+
func testIsNotComplete() {
104+
//given
105+
let sut = CrewMemberViewModel()
106+
107+
// when
108+
sut.name = "Name"
109+
sut.license = ""
110+
111+
//then
112+
XCTAssertFalse(sut.isComplete, "Should not be complete if only name exists")
113+
114+
sut.name = ""
115+
sut.license = "Licence"
116+
XCTAssertFalse(sut.isComplete, "Should not be complete if only license exists")
117+
118+
sut.name = ""
119+
sut.license = ""
120+
XCTAssertFalse(sut.isComplete, "Should not be complete if no data")
121+
}
122+
91123
func testSaveCrewNil() {
92124
//given
93125
let crewMember: CrewMember? = nil

O-FISHTests/EMSViewModelTests.swift

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,53 @@ class EMSViewModelTests: XCTestCase {
6161
XCTAssertEqual(emsIn?.emsDescription, description)
6262
XCTAssertEqual(emsIn?.registryNumber, registryNumber)
6363
}
64+
65+
func testIsComplete() {
66+
//given
67+
let sut = EMSViewModel()
68+
69+
// when
70+
sut.emsType = "Some type"
71+
sut.registryNumber = "12345789"
72+
73+
//then
74+
XCTAssertTrue(sut.isComplete, "If name and licence is filled then crew should be complete")
75+
76+
// when
77+
sut.emsType = "Other"
78+
sut.registryNumber = "12345789"
79+
sut.emsDescription = "Some description"
80+
81+
//then
82+
XCTAssertTrue(sut.isComplete, "For other type should be an additional description")
83+
}
84+
85+
func testIsNotComplete() {
86+
//given
87+
let sut = EMSViewModel()
88+
89+
// when
90+
sut.emsType = ""
91+
sut.registryNumber = "12345789"
92+
93+
//then
94+
XCTAssertFalse(sut.isComplete, "EMS type mandatory")
95+
96+
// when
97+
sut.emsType = "Other"
98+
sut.registryNumber = "12345789"
99+
sut.emsDescription = ""
100+
101+
//then
102+
XCTAssertFalse(sut.isComplete, "For Other type should be an additional description")
103+
104+
// when
105+
sut.emsType = "Type"
106+
sut.registryNumber = ""
107+
108+
//then
109+
XCTAssertFalse(sut.isComplete, "Registry number mandatory")
110+
}
64111

65112
func testSaveEMSNil() {
66113
//given

o-fish-ios/ViewModel/Report/CatchViewModel.swift

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,19 @@ class CatchViewModel: ObservableObject, Identifiable {
5555
fish.isEmpty && quantityType.contains(.notSelected) && number == 0 && weight == 0 && unit == .notSelected
5656
}
5757

58+
var isComplete: Bool {
59+
var result = false
60+
61+
result = !fish.isEmpty
62+
result = result && !(quantityType == [.notSelected])
63+
64+
result = result && !(quantityType.contains(.weight) && weight == 0)
65+
result = result && !(quantityType.contains(.weight) && unit == .notSelected)
66+
result = result && !(quantityType.contains(.count) && number == 0)
67+
68+
return result
69+
}
70+
5871
convenience init(_ fishCatch: Catch?) {
5972
self.init()
6073
if let fishCatch = fishCatch {

o-fish-ios/ViewModel/Report/CrewMemberViewModel.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,10 @@ class CrewMemberViewModel: ObservableObject, Identifiable {
2323
name.isEmpty && license.isEmpty
2424
}
2525

26+
var isComplete: Bool {
27+
!name.isEmpty && !license.isEmpty
28+
}
29+
2630
convenience init(_ crewMember: CrewMember?, isCaptain: Bool = false) {
2731
self.init()
2832
if let crewMember = crewMember {

o-fish-ios/ViewModel/Report/EMSViewModel.swift

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,12 @@ class EMSViewModel: ObservableObject, Identifiable {
2020
emsType == "" && registryNumber.isEmpty
2121
}
2222

23+
var isComplete: Bool {
24+
!emsType.isEmpty
25+
&& !registryNumber.isEmpty
26+
&& !(emsType == "Other" ? emsDescription.isEmpty : false)
27+
}
28+
2329
convenience init(_ eMS: EMS?) {
2430
self.init()
2531
if let eMS = eMS {

0 commit comments

Comments
 (0)