You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

71 lines
2.1 KiB

  1. package de.fd.fh.server.game.web;
  2. import de.fd.fh.server.game.GameId;
  3. import de.fd.fh.server.game.GameService;
  4. import org.junit.jupiter.api.BeforeEach;
  5. import org.junit.jupiter.api.Test;
  6. import org.mockito.ArgumentCaptor;
  7. import org.mockito.Mock;
  8. import org.mockito.MockitoAnnotations;
  9. import spark.Request;
  10. import spark.Response;
  11. import java.io.IOException;
  12. import static org.junit.jupiter.api.Assertions.*;
  13. import static org.mockito.ArgumentMatchers.any;
  14. import static org.mockito.Mockito.verify;
  15. import static org.mockito.Mockito.when;
  16. public class GameControllerTest
  17. {
  18. @Mock
  19. Request request;
  20. @Mock
  21. Response response;
  22. @Mock
  23. GameService service;
  24. @BeforeEach
  25. void before()
  26. {
  27. MockitoAnnotations.openMocks(this);
  28. }
  29. @Test
  30. void testCreateGame() throws IOException
  31. {
  32. when(request.body()).thenReturn("{\"whiteUserId\":\"12345\",\"blackUserId\":\"98765\"}");
  33. when(service.createGame(any(), any())).thenReturn(GameId.of("56789"));
  34. ArgumentCaptor<String> bodyCaptor = ArgumentCaptor.forClass(String.class);
  35. ArgumentCaptor<Integer> statusCaptor = ArgumentCaptor.forClass(Integer.class);
  36. new GameController(service).createGame(request, response);
  37. verify(response).body(bodyCaptor.capture());
  38. verify(response).status(statusCaptor.capture());
  39. assertNotNull(bodyCaptor.getValue());
  40. assertTrue(bodyCaptor.getValue().contains("56789"));
  41. assertNotNull(statusCaptor.getValue());
  42. assertEquals(201, statusCaptor.getValue());
  43. }
  44. @Test
  45. void testFailedCreateGame() throws IOException
  46. {
  47. when(request.body()).thenReturn("{\"whiteUserId\":\"12345\",\"blackUserId\":\"98765\"}");
  48. when(service.createGame(any(), any())).thenReturn(null);
  49. ArgumentCaptor<Integer> statusCaptor = ArgumentCaptor.forClass(Integer.class);
  50. new GameController(service).createGame(request, response);
  51. verify(response).status(statusCaptor.capture());
  52. assertNotNull(statusCaptor.getValue());
  53. assertEquals(400, statusCaptor.getValue());
  54. }
  55. }