Look Ma! No repository
in between!
Inspired by a tweet from Josh Long.
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
@RestController
public class BookResource {
@GetMapping("/book/{id}")
public ResponseEntity<Book> get(@PathVariable("id") Book book) {
return Objects.nonNull(book) ? ResponseEntity.ok(book) : ResponseEntity.notFound().build();
}
}
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = RANDOM_PORT)
public class BookResourceTest {
@Autowired
private BookRepository repository;
@Autowired
private TestRestTemplate restTemplate;
@Before
public void setUp() {
repository.save(
new Book("Spring Data Rest With Web Demo")
);
}
@Test
public void get() {
ResponseEntity<Book> response = restTemplate.getForEntity("/book/{id}", Book.class, 1L);
assertThat(response.getStatusCode())
.isEqualTo(OK);
assertThat(response.getBody().getTitle())
.isEqualTo("Spring Data Rest With Web Demo");
}
@Test
public void getWithNonExistingId() {
ResponseEntity<Book> response = restTemplate.getForEntity("/book/{id}", Book.class, 100L);
assertThat(response.getStatusCode())
.isEqualTo(NOT_FOUND);
}
}