96 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
		
		
			
		
	
	
			96 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
|  | package controllers;
 | ||
|  | 
 | ||
|  | import com.fasterxml.jackson.databind.node.ObjectNode;
 | ||
|  | import org.junit.Test;
 | ||
|  | import play.Application;
 | ||
|  | import play.inject.guice.GuiceApplicationBuilder;
 | ||
|  | import play.libs.Json;
 | ||
|  | import play.mvc.Http;
 | ||
|  | import play.mvc.Result;
 | ||
|  | import play.test.WithApplication;
 | ||
|  | 
 | ||
|  | import static org.junit.Assert.assertEquals;
 | ||
|  | import static org.junit.Assert.assertTrue;
 | ||
|  | import static play.mvc.Http.Status.OK;
 | ||
|  | import static play.test.Helpers.*;
 | ||
|  | 
 | ||
|  | public class StudentControllerUnitTest extends WithApplication {
 | ||
|  | 
 | ||
|  |     @Override
 | ||
|  |     protected Application provideApplication() {
 | ||
|  |         return new GuiceApplicationBuilder().build();
 | ||
|  |     }
 | ||
|  | 
 | ||
|  |     @Test
 | ||
|  |     public void givenStudentPostData_whenCreatingStudent_ThenShouldReturnCreatedStudent() {
 | ||
|  |         final ObjectNode jsonNode = Json.newObject();
 | ||
|  |         jsonNode.put("firstName", "John");
 | ||
|  |         jsonNode.put("lastName", "Baeldung");
 | ||
|  |         jsonNode.put("age", 25);
 | ||
|  | 
 | ||
|  |         Http.RequestBuilder request = new Http.RequestBuilder()
 | ||
|  |                 .method(POST)
 | ||
|  |                 .bodyJson(jsonNode)
 | ||
|  |                 .uri("/");
 | ||
|  | 
 | ||
|  |         Result result = route(app, request);
 | ||
|  |         assertEquals(CREATED, result.status());
 | ||
|  |         assertTrue(result.contentType().isPresent());
 | ||
|  |         assertEquals("application/json", result.contentType().get());
 | ||
|  |     }
 | ||
|  | 
 | ||
|  |     @Test
 | ||
|  |     public void givenUrlToListStudents_whenListingStudents_ThenShouldReturnStudentList() {
 | ||
|  |         Http.RequestBuilder request = new Http.RequestBuilder()
 | ||
|  |                 .method(GET)
 | ||
|  |                 .uri("/");
 | ||
|  | 
 | ||
|  |         Result result = route(app, request);
 | ||
|  |         assertEquals(OK, result.status());
 | ||
|  |         assertTrue(result.contentType().isPresent());
 | ||
|  |         assertEquals("application/json", result.contentType().get());
 | ||
|  |     }
 | ||
|  | 
 | ||
|  |     @Test
 | ||
|  |     public void givenUrlToRetrieveSingleStudent_whenRetrievingStudent_ThenShouldReturn404NotFound() {
 | ||
|  |         Http.RequestBuilder request = new Http.RequestBuilder()
 | ||
|  |                 .method(GET)
 | ||
|  |                 .uri("/1");
 | ||
|  | 
 | ||
|  |         Result result = route(app, request);
 | ||
|  |         assertEquals(NOT_FOUND, result.status());
 | ||
|  |         assertTrue(result.contentType().isPresent());
 | ||
|  |         assertEquals("application/json", result.contentType().get());
 | ||
|  |     }
 | ||
|  | 
 | ||
|  |     @Test
 | ||
|  |     public void givenUrlToUpdateStudent_whenaUpdatingStudent_ThenShouldFail() {
 | ||
|  |         final ObjectNode jsonNode = Json.newObject();
 | ||
|  |         jsonNode.put("firstName", "John");
 | ||
|  |         jsonNode.put("lastName", "Baeldung");
 | ||
|  |         jsonNode.put("age", 25);
 | ||
|  | 
 | ||
|  |         Http.RequestBuilder request = new Http.RequestBuilder()
 | ||
|  |                 .method(PUT)
 | ||
|  |                 .bodyJson(jsonNode)
 | ||
|  |                 .uri("/");
 | ||
|  | 
 | ||
|  |         Result result = route(app, request);
 | ||
|  |         assertEquals(INTERNAL_SERVER_ERROR, result.status());
 | ||
|  |         assertTrue(result.contentType().isPresent());
 | ||
|  |         assertEquals("application/json", result.contentType().get());
 | ||
|  |     }
 | ||
|  | 
 | ||
|  |     @Test
 | ||
|  |     public void givenIdToDeleteStudent_whenDeletingStudent_ThenShouldFail() {
 | ||
|  |         Http.RequestBuilder request = new Http.RequestBuilder()
 | ||
|  |                 .method(DELETE)
 | ||
|  |                 .uri("/1");
 | ||
|  | 
 | ||
|  |         Result result = route(app, request);
 | ||
|  |         assertEquals(NOT_FOUND, result.status());
 | ||
|  |         assertTrue(result.contentType().isPresent());
 | ||
|  |         assertEquals("application/json", result.contentType().get());
 | ||
|  |     }
 | ||
|  | }
 |