Skip to content

Commit 6c9ffbc

Browse files
Merge pull request #164 from SpineEventEngine/split-validation-test
Split `ValidationTest`
2 parents 9ba0136 + f5f250d commit 6c9ffbc

15 files changed

+725
-501
lines changed

buildSrc/src/main/kotlin/io/spine/dependency/local/McJava.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,12 @@ object McJava {
4242
/**
4343
* The version used to in the build classpath.
4444
*/
45-
const val dogfoodingVersion = "2.0.0-SNAPSHOT.257"
45+
const val dogfoodingVersion = "2.0.0-SNAPSHOT.258"
4646

4747
/**
4848
* The version to be used for integration tests.
4949
*/
50-
const val version = "2.0.0-SNAPSHOT.257"
50+
const val version = "2.0.0-SNAPSHOT.258"
5151

5252
/**
5353
* The ID of the Gradle plugin.

buildSrc/src/main/kotlin/io/spine/dependency/local/ProtoData.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ object ProtoData {
7373
* The version of ProtoData dependencies.
7474
*/
7575
val version: String
76-
private const val fallbackVersion = "0.69.1"
76+
private const val fallbackVersion = "0.69.3"
7777

7878
/**
7979
* The distinct version of ProtoData used by other build tools.
@@ -82,7 +82,7 @@ object ProtoData {
8282
* transitional dependencies, this is the version used to build the project itself.
8383
*/
8484
val dogfoodingVersion: String
85-
private const val fallbackDfVersion = "0.69.1"
85+
private const val fallbackDfVersion = "0.69.3"
8686

8787
/**
8888
* The artifact for the ProtoData Gradle plugin.

dependencies.md

+15-15
Original file line numberDiff line numberDiff line change
@@ -852,7 +852,7 @@
852852

853853
The dependencies distributed under several licenses, are used according their commercial-use-friendly license.
854854

855-
This report was generated on **Tue Nov 26 18:37:09 WET 2024** using [Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under [Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
855+
This report was generated on **Thu Nov 28 16:17:26 WET 2024** using [Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under [Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
856856

857857

858858

@@ -1709,7 +1709,7 @@ This report was generated on **Tue Nov 26 18:37:09 WET 2024** using [Gradle-Lice
17091709

17101710
The dependencies distributed under several licenses, are used according their commercial-use-friendly license.
17111711

1712-
This report was generated on **Tue Nov 26 18:37:09 WET 2024** using [Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under [Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
1712+
This report was generated on **Thu Nov 28 16:17:26 WET 2024** using [Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under [Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
17131713

17141714

17151715

@@ -2371,7 +2371,7 @@ This report was generated on **Tue Nov 26 18:37:09 WET 2024** using [Gradle-Lice
23712371

23722372
The dependencies distributed under several licenses, are used according their commercial-use-friendly license.
23732373

2374-
This report was generated on **Tue Nov 26 18:37:09 WET 2024** using [Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under [Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
2374+
This report was generated on **Thu Nov 28 16:17:27 WET 2024** using [Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under [Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
23752375

23762376

23772377

@@ -3022,7 +3022,7 @@ This report was generated on **Tue Nov 26 18:37:09 WET 2024** using [Gradle-Lice
30223022

30233023
The dependencies distributed under several licenses, are used according their commercial-use-friendly license.
30243024

3025-
This report was generated on **Tue Nov 26 18:37:09 WET 2024** using [Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under [Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
3025+
This report was generated on **Thu Nov 28 16:17:27 WET 2024** using [Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under [Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
30263026

30273027

30283028

@@ -3947,7 +3947,7 @@ This report was generated on **Tue Nov 26 18:37:09 WET 2024** using [Gradle-Lice
39473947

39483948
The dependencies distributed under several licenses, are used according their commercial-use-friendly license.
39493949

3950-
This report was generated on **Tue Nov 26 18:37:10 WET 2024** using [Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under [Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
3950+
This report was generated on **Thu Nov 28 16:17:27 WET 2024** using [Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under [Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
39513951

39523952

39533953

@@ -4807,7 +4807,7 @@ This report was generated on **Tue Nov 26 18:37:10 WET 2024** using [Gradle-Lice
48074807

48084808
The dependencies distributed under several licenses, are used according their commercial-use-friendly license.
48094809

4810-
This report was generated on **Tue Nov 26 18:37:10 WET 2024** using [Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under [Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
4810+
This report was generated on **Thu Nov 28 16:17:27 WET 2024** using [Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under [Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
48114811

48124812

48134813

@@ -5701,7 +5701,7 @@ This report was generated on **Tue Nov 26 18:37:10 WET 2024** using [Gradle-Lice
57015701

57025702
The dependencies distributed under several licenses, are used according their commercial-use-friendly license.
57035703

5704-
This report was generated on **Tue Nov 26 18:37:10 WET 2024** using [Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under [Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
5704+
This report was generated on **Thu Nov 28 16:17:28 WET 2024** using [Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under [Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
57055705

57065706

57075707

@@ -6574,7 +6574,7 @@ This report was generated on **Tue Nov 26 18:37:10 WET 2024** using [Gradle-Lice
65746574

65756575
The dependencies distributed under several licenses, are used according their commercial-use-friendly license.
65766576

6577-
This report was generated on **Tue Nov 26 18:37:11 WET 2024** using [Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under [Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
6577+
This report was generated on **Thu Nov 28 16:17:28 WET 2024** using [Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under [Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
65786578

65796579

65806580

@@ -7327,7 +7327,7 @@ This report was generated on **Tue Nov 26 18:37:11 WET 2024** using [Gradle-Lice
73277327

73287328
The dependencies distributed under several licenses, are used according their commercial-use-friendly license.
73297329

7330-
This report was generated on **Tue Nov 26 18:37:11 WET 2024** using [Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under [Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
7330+
This report was generated on **Thu Nov 28 16:17:28 WET 2024** using [Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under [Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
73317331

73327332

73337333

@@ -8229,7 +8229,7 @@ This report was generated on **Tue Nov 26 18:37:11 WET 2024** using [Gradle-Lice
82298229

82308230
The dependencies distributed under several licenses, are used according their commercial-use-friendly license.
82318231

8232-
This report was generated on **Tue Nov 26 18:37:11 WET 2024** using [Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under [Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
8232+
This report was generated on **Thu Nov 28 16:17:28 WET 2024** using [Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under [Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
82338233

82348234

82358235

@@ -8985,7 +8985,7 @@ This report was generated on **Tue Nov 26 18:37:11 WET 2024** using [Gradle-Lice
89858985

89868986
The dependencies distributed under several licenses, are used according their commercial-use-friendly license.
89878987

8988-
This report was generated on **Tue Nov 26 18:37:11 WET 2024** using [Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under [Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
8988+
This report was generated on **Thu Nov 28 16:17:28 WET 2024** using [Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under [Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
89898989

89908990

89918991

@@ -9745,7 +9745,7 @@ This report was generated on **Tue Nov 26 18:37:11 WET 2024** using [Gradle-Lice
97459745

97469746
The dependencies distributed under several licenses, are used according their commercial-use-friendly license.
97479747

9748-
This report was generated on **Tue Nov 26 18:37:11 WET 2024** using [Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under [Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
9748+
This report was generated on **Thu Nov 28 16:17:29 WET 2024** using [Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under [Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
97499749

97509750

97519751

@@ -10496,7 +10496,7 @@ This report was generated on **Tue Nov 26 18:37:11 WET 2024** using [Gradle-Lice
1049610496

1049710497
The dependencies distributed under several licenses, are used according their commercial-use-friendly license.
1049810498

10499-
This report was generated on **Tue Nov 26 18:37:12 WET 2024** using [Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under [Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
10499+
This report was generated on **Thu Nov 28 16:17:29 WET 2024** using [Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under [Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
1050010500

1050110501

1050210502

@@ -11374,7 +11374,7 @@ This report was generated on **Tue Nov 26 18:37:12 WET 2024** using [Gradle-Lice
1137411374

1137511375
The dependencies distributed under several licenses, are used according their commercial-use-friendly license.
1137611376

11377-
This report was generated on **Tue Nov 26 18:37:12 WET 2024** using [Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under [Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
11377+
This report was generated on **Thu Nov 28 16:17:29 WET 2024** using [Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under [Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
1137811378

1137911379

1138011380

@@ -12252,4 +12252,4 @@ This report was generated on **Tue Nov 26 18:37:12 WET 2024** using [Gradle-Lice
1225212252

1225312253
The dependencies distributed under several licenses, are used according their commercial-use-friendly license.
1225412254

12255-
This report was generated on **Tue Nov 26 18:37:12 WET 2024** using [Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under [Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).
12255+
This report was generated on **Thu Nov 28 16:17:29 WET 2024** using [Gradle-License-Report plugin](https://github.com/jk1/Gradle-License-Report) by Evgeny Naumenko, licensed under [Apache 2.0 License](https://github.com/jk1/Gradle-License-Report/blob/master/LICENSE).

java-tests/consumer/build.gradle.kts

-19
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,6 @@
2525
*/
2626

2727
import io.spine.dependency.local.Spine
28-
import io.spine.gradle.protobuf.configureIdea
29-
import io.spine.gradle.protobuf.excludeProtocOutput
30-
import io.spine.gradle.protobuf.makeDirsForIdeaModule
3128
import io.spine.protodata.gradle.plugin.CreateSettingsDirectory
3229
import io.spine.protodata.gradle.plugin.LaunchProtoData
3330
import io.spine.util.theOnly
@@ -41,22 +38,6 @@ protoData {
4138
)
4239
}
4340

44-
protobuf {
45-
generateProtoTasks.all().configureEach {
46-
excludeProtocOutput()
47-
makeDirsForIdeaModule()
48-
}
49-
}
50-
51-
val thisProject = project
52-
53-
gradle.afterProject {
54-
// Invoke only for the project of interest.
55-
if (thisProject == this@afterProject) {
56-
configureIdea()
57-
}
58-
}
59-
6041
val settingsDirTask: CreateSettingsDirectory = tasks.withType<CreateSettingsDirectory>().theOnly()
6142

6243
val copySettings by tasks.registering(Copy::class) {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
/*
2+
* Copyright 2024, TeamDev. All rights reserved.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* https://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Redistribution and use in source and/or binary forms, with or without
11+
* modification, must retain the above copyright notice and the following
12+
* disclaimer.
13+
*
14+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
15+
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
16+
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
17+
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
18+
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
19+
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
20+
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
21+
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
22+
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24+
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25+
*/
26+
27+
package io.spine.validation.test
28+
29+
import com.google.errorprone.annotations.CanIgnoreReturnValue
30+
import com.google.protobuf.Message
31+
import io.kotest.matchers.collections.shouldHaveSize
32+
import io.kotest.matchers.shouldNotBe
33+
import io.spine.validate.ConstraintViolation
34+
import io.spine.validate.ValidationException
35+
import org.junit.jupiter.api.Assertions.fail
36+
import org.junit.jupiter.api.assertDoesNotThrow
37+
import org.junit.jupiter.api.assertThrows
38+
39+
@CanIgnoreReturnValue
40+
internal fun assertValidationException(builder: Message.Builder): ConstraintViolation {
41+
val exception = assertThrows<ValidationException> {
42+
builder.build()
43+
}
44+
val error = exception.asMessage()
45+
error.constraintViolationList shouldHaveSize 1
46+
return error.constraintViolationList[0]
47+
}
48+
49+
internal fun assertNoException(builder: Message.Builder) {
50+
try {
51+
assertDoesNotThrow {
52+
val result = builder.build()
53+
result shouldNotBe null
54+
}
55+
} catch (e: ValidationException) {
56+
fail<Any>("Unexpected constraint violation: " + e.constraintViolations, e)
57+
}
58+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
/*
2+
* Copyright 2024, TeamDev. All rights reserved.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* https://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Redistribution and use in source and/or binary forms, with or without
11+
* modification, must retain the above copyright notice and the following
12+
* disclaimer.
13+
*
14+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
15+
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
16+
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
17+
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
18+
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
19+
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
20+
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
21+
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
22+
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24+
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25+
*/
26+
27+
package io.spine.validation.test
28+
29+
import org.junit.jupiter.api.DisplayName
30+
import org.junit.jupiter.api.Test
31+
32+
@DisplayName("`(distinct)` rule should")
33+
internal class DistinctRuleITest {
34+
35+
@Test
36+
fun `reject a list with duplicate entries`() {
37+
val flake = snowflake {
38+
edges = 6
39+
vertices = 6
40+
}
41+
val builder = Blizzard.newBuilder()
42+
.addSnowflake(flake)
43+
.addSnowflake(flake)
44+
45+
assertValidationException(builder)
46+
}
47+
48+
@Test
49+
fun `reject a map with duplicate entries`() {
50+
val player = player {
51+
shirtName = "John Doe"
52+
}
53+
val builder = Team.newBuilder()
54+
.putPlayers(7, player)
55+
.putPlayers(10, player)
56+
assertValidationException(builder)
57+
}
58+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
/*
2+
* Copyright 2024, TeamDev. All rights reserved.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* https://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Redistribution and use in source and/or binary forms, with or without
11+
* modification, must retain the above copyright notice and the following
12+
* disclaimer.
13+
*
14+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
15+
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
16+
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
17+
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
18+
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
19+
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
20+
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
21+
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
22+
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24+
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25+
*/
26+
27+
package io.spine.validation.test
28+
29+
import org.junit.jupiter.api.DisplayName
30+
import org.junit.jupiter.api.Test
31+
32+
@DisplayName("`(is_required)` rule for `oneof` fields should")
33+
internal class IsRequiredRuleITest {
34+
35+
@Test
36+
fun `reject if none of the alternatives is set`() {
37+
assertValidationException(Lunch.newBuilder())
38+
}
39+
40+
@Test
41+
fun `accept if an alternative is set`() = assertNoException(
42+
Lunch.newBuilder()
43+
.setHotSoup("Minestrone")
44+
)
45+
}

0 commit comments

Comments
 (0)