Skip to content

Commit 5d08cf9

Browse files
committed
Added more tests
Signed-off-by: Arnau Mora <[email protected]>
1 parent 27256da commit 5d08cf9

File tree

6 files changed

+148
-73
lines changed

6 files changed

+148
-73
lines changed

src/main/kotlin/KoverIgnore.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
interface KoverIgnore
1+
annotation class KoverIgnore

src/main/kotlin/data/Height.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
package data
22

3+
import KoverIgnore
4+
5+
@KoverIgnore
36
data class Height(
47
val pitch: Int,
58
val height: Int
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package data
2+
3+
import java.time.Month
4+
import kotlin.test.Test
5+
import kotlin.test.assertEquals
6+
import kotlin.test.assertFalse
7+
import kotlin.test.assertNotEquals
8+
9+
class TestBlockingRecurrenceYearly {
10+
@Test
11+
fun `test equals and hashCode`() {
12+
val br1 = BlockingRecurrenceYearly(1U, Month.MAY, 1U, Month.AUGUST)
13+
val br2 = BlockingRecurrenceYearly(1U, Month.MAY, 1U, Month.AUGUST)
14+
15+
assertEquals(br1, br2)
16+
assertFalse(br1.equals(""))
17+
assertNotEquals(br1, br2.copy(fromDay = 2U))
18+
assertNotEquals(br1, br2.copy(fromMonth = Month.AUGUST))
19+
assertNotEquals(br1, br2.copy(toDay = 2U))
20+
assertNotEquals(br1, br2.copy(toMonth = Month.SEPTEMBER))
21+
assertEquals(br1.hashCode(), br2.hashCode())
22+
}
23+
}

src/test/kotlin/data/TestGrades.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ class TestGrades {
1313
assertEquals(SportsGrade.G6B_PLUS, GradeValue.fromString("6b+"))
1414
assertEquals(SportsGrade.G7C, GradeValue.fromString("7c"))
1515
assertEquals(SportsGrade.G9C_PLUS, GradeValue.fromString("9c+"))
16+
assertEquals(ArtificialGrade.A2, GradeValue.fromString("A2"))
1617
assertEquals(SportsGrade.UNKNOWN, GradeValue.fromString("¿?"))
1718
}
1819
}

src/test/kotlin/data/TestLatLng.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,17 @@ package data
22

33
import kotlin.test.Test
44
import kotlin.test.assertEquals
5+
import kotlin.test.assertFalse
6+
import kotlin.test.assertNotEquals
57

68
class TestLatLng {
79
@Test
810
fun `test LatLng`() {
911
val point = LatLng(0.12345, 0.67890)
1012
assertEquals(point, LatLng.fromJson(point.toJson()))
13+
assertNotEquals(point, LatLng(0.12346, 0.67890))
14+
assertNotEquals(point, point.copy(latitude = 0.987654))
15+
assertNotEquals(point, point.copy(longitude = 0.987654))
16+
assertFalse(point.equals(""))
1117
}
1218
}
Lines changed: 114 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,107 @@
11
package server.database
22

33
import ServerDatabase
4+
import data.BlockingRecurrenceYearly
5+
import data.BlockingTypes
46
import database.entity.Area
7+
import database.entity.Blocking
58
import database.entity.Path
69
import database.entity.Sector
710
import database.entity.Zone
811
import java.io.File
912
import java.net.URL
13+
import java.time.Instant
14+
import java.time.Month
1015
import kotlin.test.Test
1116
import kotlin.test.assertContentEquals
1217
import kotlin.test.assertEquals
1318
import kotlin.test.assertNotNull
19+
import kotlin.test.assertNull
1420
import server.DataProvider
1521
import server.base.ApplicationTestBase
1622
import storage.Storage
1723

1824
class TestDatabase: ApplicationTestBase() {
25+
private suspend fun createTestArea(): Area = ServerDatabase.instance.query {
26+
Area.new {
27+
displayName = DataProvider.SampleArea.displayName
28+
webUrl = URL(DataProvider.SampleArea.webUrl)
29+
30+
// Required, but not used
31+
image = File(Storage.ImagesDir, "abc")
32+
}
33+
}
34+
35+
private suspend fun createTestZone(area: Area): Zone = ServerDatabase.instance.query {
36+
Zone.new {
37+
displayName = DataProvider.SampleZone.displayName
38+
webUrl = URL(DataProvider.SampleZone.webUrl)
39+
point = DataProvider.SampleZone.point
40+
pointsSet = DataProvider.SampleZone.points.map { it.toJson().toString() }
41+
42+
// Required, but not used
43+
image = File(Storage.ImagesDir, "abc")
44+
kmz = File(Storage.TracksDir, "abc")
45+
46+
// Must specify a parent
47+
this.area = area
48+
}
49+
}
50+
51+
private suspend fun createTestSector(zone: Zone): Sector = ServerDatabase.instance.query {
52+
Sector.new {
53+
displayName = DataProvider.SampleSector.displayName
54+
point = DataProvider.SampleSector.point
55+
kidsApt = DataProvider.SampleSector.kidsApt
56+
sunTime = DataProvider.SampleSector.sunTime
57+
walkingTime = DataProvider.SampleSector.walkingTime
58+
59+
// Required, but not used
60+
image = File(Storage.ImagesDir, "abc")
61+
62+
// Must specify a parent
63+
this.zone = zone
64+
}
65+
}
66+
67+
private suspend fun createTestPath(sector: Sector): Path = ServerDatabase.instance.query {
68+
Path.new {
69+
displayName = DataProvider.SamplePath.displayName
70+
sketchId = DataProvider.SamplePath.sketchId
71+
72+
height = DataProvider.SamplePath.height
73+
grade = DataProvider.SamplePath.grade
74+
ending = DataProvider.SamplePath.ending
75+
76+
pitches = DataProvider.SamplePath.pitches
77+
78+
stringCount = DataProvider.SamplePath.stringCount
79+
80+
paraboltCount = DataProvider.SamplePath.paraboltCount
81+
burilCount = DataProvider.SamplePath.burilCount
82+
pitonCount = DataProvider.SamplePath.pitonCount
83+
spitCount = DataProvider.SamplePath.spitCount
84+
tensorCount = DataProvider.SamplePath.tensorCount
85+
86+
crackerRequired = DataProvider.SamplePath.crackerRequired
87+
friendRequired = DataProvider.SamplePath.friendRequired
88+
lanyardRequired = DataProvider.SamplePath.lanyardRequired
89+
nailRequired = DataProvider.SamplePath.nailRequired
90+
pitonRequired = DataProvider.SamplePath.pitonRequired
91+
stapesRequired = DataProvider.SamplePath.stapesRequired
92+
93+
builder = DataProvider.SamplePath.builder
94+
reBuilder = DataProvider.SamplePath.reBuilder
95+
96+
// Must specify a parent
97+
this.sector = sector
98+
}
99+
}
100+
19101
@Test
20102
@Suppress("LongMethod")
21103
fun `test creating data classes`() = test {
22-
val area = ServerDatabase.instance.query {
23-
Area.new {
24-
displayName = DataProvider.SampleArea.displayName
25-
webUrl = URL(DataProvider.SampleArea.webUrl)
26-
27-
// Required, but not used
28-
image = File(Storage.ImagesDir, "abc")
29-
}
30-
}
104+
val area = createTestArea()
31105
ServerDatabase.instance.query {
32106
Area.findById(area.id).let {
33107
assertNotNull(it)
@@ -36,21 +110,7 @@ class TestDatabase: ApplicationTestBase() {
36110
}
37111
}
38112

39-
val zone = ServerDatabase.instance.query {
40-
Zone.new {
41-
displayName = DataProvider.SampleZone.displayName
42-
webUrl = URL(DataProvider.SampleZone.webUrl)
43-
point = DataProvider.SampleZone.point
44-
pointsSet = DataProvider.SampleZone.points.map { it.toJson().toString() }
45-
46-
// Required, but not used
47-
image = File(Storage.ImagesDir, "abc")
48-
kmz = File(Storage.TracksDir, "abc")
49-
50-
// Must specify a parent
51-
this.area = area
52-
}
53-
}
113+
val zone = createTestZone(area)
54114
ServerDatabase.instance.query {
55115
Zone.findById(zone.id).let {
56116
assertNotNull(it)
@@ -61,21 +121,7 @@ class TestDatabase: ApplicationTestBase() {
61121
}
62122
}
63123

64-
val sector = ServerDatabase.instance.query {
65-
Sector.new {
66-
displayName = DataProvider.SampleSector.displayName
67-
point = DataProvider.SampleSector.point
68-
kidsApt = DataProvider.SampleSector.kidsApt
69-
sunTime = DataProvider.SampleSector.sunTime
70-
walkingTime = DataProvider.SampleSector.walkingTime
71-
72-
// Required, but not used
73-
image = File(Storage.ImagesDir, "abc")
74-
75-
// Must specify a parent
76-
this.zone = zone
77-
}
78-
}
124+
val sector = createTestSector(zone)
79125
ServerDatabase.instance.query {
80126
Sector.findById(sector.id).let {
81127
assertNotNull(it)
@@ -87,39 +133,7 @@ class TestDatabase: ApplicationTestBase() {
87133
}
88134
}
89135

90-
val path = ServerDatabase.instance.query {
91-
Path.new {
92-
displayName = DataProvider.SamplePath.displayName
93-
sketchId = DataProvider.SamplePath.sketchId
94-
95-
height = DataProvider.SamplePath.height
96-
grade = DataProvider.SamplePath.grade
97-
ending = DataProvider.SamplePath.ending
98-
99-
pitches = DataProvider.SamplePath.pitches
100-
101-
stringCount = DataProvider.SamplePath.stringCount
102-
103-
paraboltCount = DataProvider.SamplePath.paraboltCount
104-
burilCount = DataProvider.SamplePath.burilCount
105-
pitonCount = DataProvider.SamplePath.pitonCount
106-
spitCount = DataProvider.SamplePath.spitCount
107-
tensorCount = DataProvider.SamplePath.tensorCount
108-
109-
crackerRequired = DataProvider.SamplePath.crackerRequired
110-
friendRequired = DataProvider.SamplePath.friendRequired
111-
lanyardRequired = DataProvider.SamplePath.lanyardRequired
112-
nailRequired = DataProvider.SamplePath.nailRequired
113-
pitonRequired = DataProvider.SamplePath.pitonRequired
114-
stapesRequired = DataProvider.SamplePath.stapesRequired
115-
116-
builder = DataProvider.SamplePath.builder
117-
reBuilder = DataProvider.SamplePath.reBuilder
118-
119-
// Must specify a parent
120-
this.sector = sector
121-
}
122-
}
136+
val path = createTestPath(sector)
123137
ServerDatabase.instance.query {
124138
Path.findById(path.id).let {
125139
assertNotNull(it)
@@ -153,4 +167,32 @@ class TestDatabase: ApplicationTestBase() {
153167
}
154168
}
155169
}
170+
171+
@Test
172+
fun `test Blocking with recurrence`() = test {
173+
val area = createTestArea()
174+
val zone = createTestZone(area)
175+
val sector = createTestSector(zone)
176+
val path = createTestPath(sector)
177+
178+
val blocking = ServerDatabase.instance.query {
179+
Blocking.new {
180+
this.timestamp = Instant.ofEpochMilli(1710086772)
181+
this.type = BlockingTypes.BIRD
182+
this.recurrence = BlockingRecurrenceYearly(1U, Month.JANUARY, 2U, Month.FEBRUARY)
183+
this.path = path
184+
}
185+
}
186+
ServerDatabase.instance.query {
187+
Blocking.findById(blocking.id).let {
188+
assertNotNull(it)
189+
190+
assertEquals(it.timestamp, Instant.ofEpochMilli(1710086772))
191+
assertEquals(it.type, BlockingTypes.BIRD)
192+
assertEquals(it.recurrence, BlockingRecurrenceYearly(1U, Month.JANUARY, 2U, Month.FEBRUARY))
193+
assertNull(it.endDate)
194+
assertEquals(it.path.id.value, path.id.value)
195+
}
196+
}
197+
}
156198
}

0 commit comments

Comments
 (0)