This lesson focuses on implementing sorting in a Spring Boot application to return Cash Cards in a meaningful order—specifically, sorting them by amount in descending order. The process involves writing a test that initially fails due to the lack of sorting implementation, adding the sorting functionality in the controller, and then verifying that the tests pass. Additionally, an experiment is conducted by changing the sort order to ensure the robustness of the test.

Key Steps and Concepts:

  1. Writing a Test That Expects Sorted Results:

    @Test
    void shouldReturnASortedPageOfCashCards() {
        ResponseEntity<String> response = restTemplate.getForEntity("/cashcards?page=0&size=1&sort=amount,desc", String.class);
        assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
    
        DocumentContext documentContext = JsonPath.parse(response.getBody());
        JSONArray read = documentContext.read("$[*]");
        assertThat(read.size()).isEqualTo(1);
    
        double amount = documentContext.read("$[0].amount");
        assertThat(amount).isEqualTo(150.00);
    }
    
  2. Understanding the Test:

  3. Running the Test and Observing Failure:

  4. Implementing Sorting in the Controller:

  5. Rerunning the Tests:

  6. Experimenting by Changing the Sort Order:

  7. Restoring the Test to Pass:

Conclusion:


이 강의는 Spring Boot 애플리케이션에서 정렬을 구현하여 Cash Card를 의미 있는 순서로 반환하는 방법에 초점을 맞추고 있습니다. 특히 금액을 기준으로 내림차순 정렬하여 가장 높은 금액이 먼저 오도록 합니다. 먼저 실패하는 테스트를 작성하고, 컨트롤러에 정렬 기능을 구현한 후, 테스트가 통과하는지 확인합니다. 또한, 테스트의 견고성을 확인하기 위해 정렬 순서를 변경하는 실험도 수행합니다.

주요 단계 및 개념:

  1. 정렬된 결과를 기대하는 테스트 작성:

    @Test
    void shouldReturnASortedPageOfCashCards() {
        ResponseEntity<String> response = restTemplate.getForEntity("/cashcards?page=0&size=1&sort=amount,desc", String.class);
        assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
    
        DocumentContext documentContext = JsonPath.parse(response.getBody());
        JSONArray read = documentContext.read("$[*]");
        assertThat(read.size()).isEqualTo(1);
    
        double amount = documentContext.read("$[0].amount");
        assertThat(amount).isEqualTo(150.00);
    }
    
  2. 테스트 이해하기:

  3. 테스트 실행 및 실패 관찰: