8000 mocks-to-maps.1 : use map for destinationFinder · test-driven-development/code@68d7caa · GitHub
[go: up one dir, main page]

Skip to content

Commit 68d7caa

Browse files
Duncan McGregordmcg
authored andcommitted
mocks-to-maps.1 : use map for destinationFinder
1 parent 85b293e commit 68d7caa

File tree

1 file changed

+24
-22
lines changed

1 file changed

+24
-22
lines changed

src/test/java/travelator/recommendations/RecommendationsTests.kt

Lines changed: 24 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,22 @@ import org.mockito.Mockito
66
import org.mockito.Mockito.mock
77
import travelator.Id
88
import travelator.destinations.FeaturedDestination
9-
import travelator.destinations.FeaturedDestinations
109
import travelator.domain.DistanceCalculator
1110
import travelator.domain.Location
12-
import java.util.Set
1311

1412
class RecommendationsTests {
1513
private val distanceCalculator = mock(DistanceCalculator::class.java)
16-
private val featuredDestinations = mock(FeaturedDestinations::class.java)
1714

18-
private val recommendations = Recommendations(
19-
featuredDestinations::findCloseTo,
20-
distanceCalculator::distanceInMetersBetween
21-
)
15+
private val featuredDestinations =
16+
mutableMapOf<Location, List<FeaturedDestination>>()
17+
.withDefault { emptyList() }
18+
19+
private val recommendations =
20+
Recommendations(
21+
featuredDestinations::getValue,
22+
distanceCalculator::distanceInMetersBetween
23+
)
24+
2225
private val paris = location("Paris")
2326
private val louvre = featured("Louvre", "Rue de Rivoli")
2427
private val eiffelTower = featured("Eiffel Tower", "Champ de Mars")
@@ -40,35 +43,35 @@ class RecommendationsTests {
4043
givenFeaturedDestinationsFor(paris, emptyList())
4144
Assertions.assertEquals(
4245
emptyList<Any>(),
43-
recommendations.recommendationsFor(Set.of(paris))
46+
recommendations.recommendationsFor(setOf(paris))
4447
)
4548
}
4649

4750
@Test
4851
fun returns_recommendations_for_single_location() {
4952
givenFeaturedDestinationsFor(
5053
paris,
51-
java.util.List.of(
54+
listOf(
5255
eiffelTower,
5356
louvre
5457
)
5558
)
5659
givenADistanceBetween(paris, eiffelTower, 5000)
5760
givenADistanceBetween(paris, louvre, 1000)
5861
Assertions.assertEquals(
59-
java.util.List.of(
62+
listOf(
6063
FeaturedDestinationSuggestion(paris, louvre, 1000),
6164
FeaturedDestinationSuggestion(paris, eiffelTower, 5000)
6265
),
63-
recommendations.recommendationsFor(Set.of(paris))
66+
recommendations.recommendationsFor(setOf(paris))
6467
)
6568
}
6669

6770
@Test
6871
fun returns_recommendations_for_multi_location() {
6972
givenFeaturedDestinationsFor(
7073
paris,
71-
java.util.List.of(
74+
listOf(
7275
eiffelTower,
7376
louvre
7477
)
@@ -77,29 +80,29 @@ class RecommendationsTests {
7780
givenADistanceBetween(paris, louvre, 1000)
7881
givenFeaturedDestinationsFor(
7982
alton,
80-
java.util.List.of(
83+
listOf(
8184
flowerFarm,
8285
watercressLine
8386
)
8487
)
8588
givenADistanceBetween(alton, flowerFarm, 5300)
8689
givenADistanceBetween(alton, watercressLine, 320)
8790
Assertions.assertEquals(
88-
java.util.List.of(
91+
listOf(
8992
FeaturedDestinationSuggestion(alton, watercressLine, 320),
9093
FeaturedDestinationSuggestion(paris, louvre, 1000),
9194
FeaturedDestinationSuggestion(paris, eiffelTower, 5000),
9295
FeaturedDestinationSuggestion(alton, flowerFarm, 5300)
9396
),
94-
recommendations.recommendationsFor(Set.of(paris, alton))
97+
recommendations.recommendationsFor(setOf(paris, alton))
9598
)
9699
}
97100

98101
@Test
99102
fun deduplicates_using_smallest_distance() {
100103
givenFeaturedDestinationsFor(
101104
alton,
102-
java.util.List.of(
105+
listOf(
103106
flowerFarm,
104107
watercressLine
105108
)
@@ -108,19 +111,19 @@ class RecommendationsTests {
108111
givenADistanceBetween(alton, watercressLine, 320)
109112
givenFeaturedDestinationsFor(
110113
froyle,
111-
java.util.List.of(
114+
listOf(
112115
flowerFarm,
113116
watercressLine
114117
)
115118
)
116119
givenADistanceBetween(froyle, flowerFarm, 0)
117120
givenADistanceBetween(froyle, watercressLine, 6300)
118121
Assertions.assertEquals(
119-
java.util.List.of(
122+
listOf(
120123
FeaturedDestinationSuggestion(froyle, flowerFarm, 0),
121124
FeaturedDestinationSuggestion(alton, watercressLine, 320)
122125
),
123-
recommendations.recommendationsFor(Set.of(alton, froyle))
126+
recommendations.recommendationsFor(setOf(alton, froyle))
124127
)
125128
}
126129

@@ -138,10 +141,9 @@ class RecommendationsTests {
138141

139142
private fun givenFeaturedDestinationsFor(
140143
location: Location,
141-
result: List<FeaturedDestination>
144+
destinations: List<FeaturedDestination>
142145
) {
143-
Mockito.`when`(featuredDestinations.findCloseTo(location))
144-
.thenReturn(result)
146+
featuredDestinations[location] = destinations.toList()
145147
}
146148

147149
private fun givenADistanceBetween(

0 commit comments

Comments
 (0)
0