Skip to content

Commit 05f2ae3

Browse files
authored
Merge pull request #11 from BSStudio/feature/let_speedtimer_start_at_given_timer
Feature: let speedtimer start at given time
2 parents 55094dd + f910e98 commit 05f2ae3

10 files changed

Lines changed: 49 additions & 34 deletions

File tree

messaging/src/main/java/hu/bsstudio/robonaut/configuration/RabbitConfiguration.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ public Jackson2JsonMessageConverter jackson2JsonMessageConverter() {
5656
}
5757

5858
@Bean
59-
public ConnectionNameStrategy cns() {
59+
public ConnectionNameStrategy connectionNameStrategy() {
6060
return new SimplePropertyValueConnectionNameStrategy("spring.application.name");
6161
}
6262
}

service/src/main/java/hu/bsstudio/robonaut/race/speed/timer/BroadcastingSpeedTimerService.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ public class BroadcastingSpeedTimerService implements SpeedTimerService {
1717
private final SpeedTimerService service;
1818

1919
@Override
20-
public Mono<SpeedTimer> startTimer() {
21-
return service.startTimer()
20+
public Mono<SpeedTimer> startTimer(final SpeedTimer speedTimer) {
21+
return service.startTimer(speedTimer)
2222
.doOnNext(this::sendTimerInformation);
2323
}
2424

service/src/main/java/hu/bsstudio/robonaut/race/speed/timer/DefaultSpeedTimerService.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,15 @@
88
@RequiredArgsConstructor
99
public class DefaultSpeedTimerService implements SpeedTimerService {
1010

11-
private static final int TIMER_INITIAL_VALUE = 0;
12-
1311
@Override
14-
public Mono<SpeedTimer> startTimer() {
15-
return Mono.just(new SpeedTimer(TIMER_INITIAL_VALUE, TimerAction.START));
12+
public Mono<SpeedTimer> startTimer(final SpeedTimer speedTimer) {
13+
return Mono.just(speedTimer)
14+
.filter(timer -> timer.getTimerAction() == TimerAction.START);
1615
}
1716

1817
@Override
1918
public Mono<SpeedTimer> stopTimerAt(final SpeedTimer speedTimer) {
2019
return Mono.just(speedTimer)
21-
.filter(timer -> timer.getTimerAction().equals(TimerAction.STOP));
20+
.filter(timer -> timer.getTimerAction() == TimerAction.STOP);
2221
}
2322
}

service/src/main/java/hu/bsstudio/robonaut/race/speed/timer/SpeedTimerService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import reactor.core.publisher.Mono;
55

66
public interface SpeedTimerService {
7-
Mono<SpeedTimer> startTimer();
7+
Mono<SpeedTimer> startTimer(final SpeedTimer speedTimer);
88

99
Mono<SpeedTimer> stopTimerAt(final SpeedTimer speedTimer);
1010
}

service/src/test/java/hu/bsstudio/robonaut/race/speed/timer/BroadcastingSpeedTimerServiceTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,10 @@ void setUp() {
3232

3333
@Test
3434
void shouldReturnSpeedTimerFromUnderLyingServiceAndSendItWhenTimerIsStarted() {
35-
when(mockService.startTimer())
35+
when(mockService.startTimer(SPEED_TIMER))
3636
.thenReturn(Mono.just(SPEED_TIMER));
3737

38-
final var result = underTest.startTimer();
38+
final var result = underTest.startTimer(SPEED_TIMER);
3939

4040
StepVerifier.create(result)
4141
.expectNext(SPEED_TIMER)

service/src/test/java/hu/bsstudio/robonaut/race/speed/timer/DefaultSpeedTimerServiceTest.java

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@
88

99
final class DefaultSpeedTimerServiceTest {
1010

11+
private static final SpeedTimer SPEED_TIMER_START = new SpeedTimer(2020, TimerAction.START);
12+
private static final SpeedTimer SPEED_TIMER_STOP = new SpeedTimer(2020, TimerAction.STOP);
13+
1114
private DefaultSpeedTimerService underTest;
1215

1316
@BeforeEach
@@ -16,30 +19,38 @@ void setUp() {
1619
}
1720

1821
@Test
19-
void shouldReturnTimerWithZeroInitialValueWhenTimerIsStarted() {
20-
final var result = underTest.startTimer();
22+
void shouldReturnTimerOnStart() {
23+
24+
final var result = underTest.startTimer(SPEED_TIMER_START);
25+
26+
StepVerifier.create(result)
27+
.expectNext(SPEED_TIMER_START)
28+
.verifyComplete();
29+
}
30+
31+
@Test
32+
void shouldReturnEmptyWhenActionDoesNotMatchOnStart() {
33+
34+
final var result = underTest.startTimer(SPEED_TIMER_STOP);
2135

2236
StepVerifier.create(result)
23-
.expectNext(new SpeedTimer(0, TimerAction.START))
2437
.verifyComplete();
2538
}
2639

2740
@Test
2841
void shouldReturnTimerOnStop() {
29-
final var speedTimer = new SpeedTimer(2020, TimerAction.STOP);
3042

31-
final var result = underTest.stopTimerAt(speedTimer);
43+
final var result = underTest.stopTimerAt(SPEED_TIMER_STOP);
3244

3345
StepVerifier.create(result)
34-
.expectNext(speedTimer)
46+
.expectNext(SPEED_TIMER_STOP)
3547
.verifyComplete();
3648
}
3749

3850
@Test
39-
void shouldReturnEmptyWhenActionDoesNotMatch() {
40-
final var speedTimer = new SpeedTimer(2020, TimerAction.START);
51+
void shouldReturnEmptyWhenActionDoesNotMatchOnStop() {
4152

42-
final var result = underTest.stopTimerAt(speedTimer);
53+
final var result = underTest.stopTimerAt(SPEED_TIMER_START);
4354

4455
StepVerifier.create(result)
4556
.verifyComplete();

web/src/main/java/hu/bsstudio/robonaut/speed/StartSpeedTimerHandler.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@ public class StartSpeedTimerHandler implements HandlerFunction<ServerResponse> {
1717

1818
@Override
1919
public Mono<ServerResponse> handle(final ServerRequest request) {
20-
final var speedTimer = service.startTimer();
20+
final var speedTimer = request.bodyToMono(SpeedTimer.class)
21+
.flatMap(service::startTimer);
2122
return ServerResponse.ok().body(speedTimer, SpeedTimer.class);
2223
}
2324
}

web/src/main/resources/static/open-api.yaml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ paths:
8383
tags:
8484
- skill
8585
summary: Stop Skill Timer
86-
description: "Broadcast skill timer start state on `skill.timer` queue in JSON format.
86+
description: "Broadcast skill timer stop state on `skill.timer` queue in JSON format.
8787
If the _timerAction_ field don't match to the endpoint no action will be made"
8888
requestBody:
8989
content:
@@ -190,11 +190,11 @@ paths:
190190
$ref: '#/components/schemas/Timer'
191191
responses:
192192
200:
193-
description: "The updated team"
193+
description: "Timer state"
194194
content:
195195
application/json:
196196
schema:
197-
$ref: '#/components/schemas/DetailedTeam'
197+
$ref: '#/components/schemas/Timer'
198198
/api/speed/timer/stop:
199199
post:
200200
tags:
@@ -209,7 +209,7 @@ paths:
209209
$ref: '#/components/schemas/Timer'
210210
responses:
211211
200:
212-
description: "The updated team"
212+
description: "Timer state"
213213
content:
214214
application/json:
215215
schema:
@@ -276,7 +276,7 @@ paths:
276276
- $ref: '#/components/schemas/QualifiedTeam'
277277
responses:
278278
200:
279-
description: "The updated team"
279+
description: "The updated teams"
280280
content:
281281
application/json:
282282
schema:
@@ -300,7 +300,7 @@ paths:
300300
- $ref: '#/components/schemas/AudienceScoredTeam'
301301
responses:
302302
200:
303-
description: "The updated team"
303+
description: "The updated teams"
304304
content:
305305
application/json:
306306
schema:
@@ -324,7 +324,7 @@ paths:
324324
- $ref: '#/components/schemas/EndResultedTeam'
325325
responses:
326326
200:
327-
description: "The updated team"
327+
description: "The updated teams"
328328
content:
329329
application/json:
330330
schema:

web/src/test/java/hu/bsstudio/robonaut/speed/StartSpeedTimerHandlerTest.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ final class StartSpeedTimerHandlerTest {
1919
private SpeedTimerService mockService;
2020

2121
private WebTestClient webTestClient;
22+
public static final SpeedTimer SPEED_TIMER = new SpeedTimer(0, TimerAction.START);
2223

2324
@BeforeEach
2425
void setUp() {
@@ -31,12 +32,13 @@ void setUp() {
3132

3233
@Test
3334
void shouldReturnSpeedTimerWithOkStatus() {
34-
final var speedTimer = new SpeedTimer(0, TimerAction.START);
35-
when(mockService.startTimer())
36-
.thenReturn(Mono.just(speedTimer));
35+
when(mockService.startTimer(SPEED_TIMER))
36+
.thenReturn(Mono.just(SPEED_TIMER));
3737

38-
webTestClient.post().uri("/test").exchange()
38+
webTestClient.post().uri("/test")
39+
.bodyValue(SPEED_TIMER)
40+
.exchange()
3941
.expectStatus().isOk()
40-
.expectBody(SpeedTimer.class).isEqualTo(speedTimer);
42+
.expectBody(SpeedTimer.class).isEqualTo(SPEED_TIMER);
4143
}
4244
}

web/src/test/java/hu/bsstudio/robonaut/speed/StopSpeedTimerHandlerTest.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,9 @@ void shouldReturnSpeedTimerWithOkStatus() {
3535
when(mockService.stopTimerAt(speedTimer))
3636
.thenReturn(Mono.just(speedTimer));
3737

38-
webTestClient.post().uri("/test").bodyValue(speedTimer).exchange()
38+
webTestClient.post().uri("/test")
39+
.bodyValue(speedTimer)
40+
.exchange()
3941
.expectStatus().isOk()
4042
.expectBody(SpeedTimer.class).isEqualTo(speedTimer);
4143
}

0 commit comments

Comments
 (0)