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());
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |