Package controllers

Source Code of controllers.SampleRestControllerTest

package controllers;

import static org.fest.assertions.Assertions.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import static play.test.Helpers.contentAsString;
import static play.test.Helpers.fakeApplication;
import static play.test.Helpers.inMemoryDatabase;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import models.Sample;

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.core.JsonProcessingException;

import org.junit.Before;
import org.junit.Test;

import play.Logger;
import play.Logger.ALogger;
import play.api.mvc.RequestHeader;
import play.mvc.Http.Context;
import play.mvc.Http.Request;
import play.mvc.Http.RequestBody;
import play.mvc.Result;
import play.test.FakeApplication;
import play.test.Helpers;
import play.utils.crud.RestResult;
import play.utils.crud.RestResult.Status;
import play.utils.inject.InjectAdapter;

public class SampleRestControllerTest {
 
  private static ALogger log = Logger.of(SampleRestControllerTest.class);
 
  SampleRestController controller;

  @Before
  public void start() {
    FakeApplication app = fakeApplication(inMemoryDatabase());
    Helpers.start(app);
    controller = getInstance(SampleRestController.class);
  }

  @Test
  public void testGetDao() {
    assertThat(controller.getDao()).isNotNull();
  }

  @Test
  public void testGetKeyClass() {
    assertThat(controller.getKeyClass()).isEqualTo(Long.class);
  }

  @Test
  public void testGetModelClass() {
    assertThat(controller.getModelClass()).isEqualTo(Sample.class);
  }

  @Test
  public void testUpdate() throws JsonProcessingException, IOException {
    setHttpContext(parseJson("{ \"name\": \"name\", \"value\": \"test\" }"));

    Result result = controller.update(42L);
   
    assertThat(result).isNotNull();
    RestResult res = toEntity(result, RestResult.class);
    assertThat(res).isNotNull();
    assertThat(res.getStatus()).isEqualTo(Status.NOT_FOUND);
    assertThat(res.getKey()).isEqualTo(42L);
  }

  @Test
  public void testList() {
    Result result = controller.list();
   
    assertThat(result).isNotNull();
    RestResult res = toEntity(result, RestResult.class);
    assertThat(res).isNotNull();
    assertThat(res.getStatus()).isEqualTo(Status.OK);
    assertThat(res.getList()).isNotNull();
  }

  @Test
  public void testGet() {
    Result result = controller.read(42L);
   
    assertThat(result).isNotNull();
    RestResult res = toEntity(result, RestResult.class);
    assertThat(res).isNotNull();
    assertThat(res.getStatus()).isEqualTo(Status.NOT_FOUND);
    assertThat(res.getKey()).isEqualTo(42L);
  }

  @Test
  public void testDelete() {
    Result result = controller.delete(42L);
   
    assertThat(result).isNotNull();
    RestResult res = toEntity(result, RestResult.class);
    assertThat(res).isNotNull();
    assertThat(res.getStatus()).isEqualTo(Status.CANNOT_DELETE);
    assertThat(res.getKey()).isEqualTo(42L);
  }

  @Test
  public void testCreate() {
    Sample entity = new Sample();
    entity.setName("test");
    setHttpContext(toJson(entity));
   
    Result result = controller.create();
   
    assertThat(result).isNotNull();
    RestResult res = toEntity(result, RestResult.class);
    assertThat(res).isNotNull();
    assertThat(res.getStatus()).isEqualTo(Status.OK);
  }

  private <T> T toEntity(Result result, Class<T> valueType) {
    if (log.isDebugEnabled())
      log.debug("toEntity <-");
    if (log.isDebugEnabled())
      log.debug("valueType : " + valueType);
    if (log.isDebugEnabled())
      log.debug("result : " + result);

    T ent = null;
    try {
      String str = contentAsString(result);
      if (log.isDebugEnabled())
        log.debug("str : " + str);

      ObjectMapper om = new ObjectMapper();
      ent = om.readValue(str, valueType);
    } catch (Exception e) {
      e.printStackTrace();
    }
    return ent;
  }

  protected <T> JsonNode toJson(T entity) {
    ObjectMapper om = new ObjectMapper();
    JsonNode req = om.valueToTree(entity);
    return req;
  }

  protected JsonNode parseJson(String json) throws JsonProcessingException, IOException {
    ObjectMapper om = new ObjectMapper();
    JsonNode req = om.readTree(json);
    return req;
  }

  protected <T> T getInstance(Class<T> type) {
    return InjectAdapter.getInstance().getInstance(type);
  }

  protected void setHttpContext(Map<String, String[]> requestBody) {
    RequestHeader reqHeader = mock(RequestHeader.class);
    Request req = mock(Request.class);
    if (requestBody != null) {
      RequestBody reqBody = mock(RequestBody.class);
      when(req.body()).thenReturn(reqBody);
      when(reqBody.asFormUrlEncoded()).thenReturn(requestBody);
    }
    Map<String, String> session = new HashMap<String, String>();
    Map<String, String> flash = new HashMap<String, String>();
    Map<String, Object> args = new HashMap<String, Object>();

    Context.current.set(new Context(1L, reqHeader, req, session, flash, args));
  }
 
  protected void setHttpContext(JsonNode requestBody) {
    RequestHeader reqHeader = mock(RequestHeader.class);
    Request req = mock(Request.class);
    if (requestBody != null) {
      RequestBody reqBody = mock(RequestBody.class);
      when(req.body()).thenReturn(reqBody);
      when(reqBody.asJson()).thenReturn(requestBody);
    }
    Map<String, String> session = new HashMap<String, String>();
    Map<String, String> flash = new HashMap<String, String>();
    Map<String, Object> args = new HashMap<String, Object>();

    Context.current.set(new Context(1L, reqHeader, req, session, flash, args));
  }

}
TOP

Related Classes of controllers.SampleRestControllerTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.