Package controllers

Source Code of controllers.UserControllerTest

package controllers;

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import dao.DataAccessException;
import models.DaoManager;
import models.entities.Contact;
import models.entities.User;
import models.entities.UserRole;
import org.junit.Test;
import play.Logger;
import play.db.jpa.JPA;
import play.libs.F;
import play.libs.Json;
import play.mvc.Result;
import utils.DemoData;

import java.util.ArrayList;
import java.util.List;

import static org.fest.assertions.Assertions.assertThat;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static play.mvc.Http.Status.OK;
import static play.test.Helpers.*;

/**
* Created by kiryl on 18.08.2014.
*/
public class UserControllerTest {
    @Test
    public void getUserTest() {
        running(fakeApplication(), new Runnable() {
            public void run() {
                DemoData.loadDemoData();

                User user = DemoData.user1;

                Result result = callAction(routes.ref.UserController.getUser(user.getId()));
                Logger.debug("response: " + contentAsString(result));
                JsonNode resultJson = Json.parse(contentAsString(result));
                assertThat(status(result)).isEqualTo(OK);
                assertThat(resultJson.get("login").asText()).isEqualTo(user.getLogin());
            }
        });
    }

    @Test
    public void listTest() {
        running(fakeApplication(), new Runnable() {
            public void run() {
                DemoData.loadDemoData();

                Result result = callAction(routes.ref.UserController.list(1));
                assertThat(status(result)).isEqualTo(OK);
                JsonNode resultJson = Json.parse(contentAsString(result));
                assertTrue(resultJson.isContainerNode());
            }
        });
    }

    @Test
    public void addNewTest() {
        running(fakeApplication(), new Runnable() {
            public void run() {
                final Contact c1 = new Contact();
                c1.setFirstName("Jack");
                c1.setLastName("Jones");
                JPA.withTransaction(new F.Callback0() {
                    @Override
                    public void invoke() throws Throwable {
                        try {
                            DaoManager.getContactDao().persist(c1);
                        } catch (DataAccessException e) {
                            e.printStackTrace();
                        }
                    }
                });
                Integer contactId = c1.getId();

                ObjectNode userNode = Json.newObject();
                userNode.put("login", "login1");
                userNode.put("password", "password");
                userNode.put("contactId", contactId);

                List<Integer> roles = new ArrayList<Integer>();
                ArrayNode array = new ObjectMapper().valueToTree(roles);
                userNode.putArray("roleIds").addAll(array);

                Logger.debug(userNode.toString());
                Result result = callAction(routes.ref.UserController.addNew(), fakeRequest().withJsonBody(userNode));
                Logger.debug("response: " + contentAsString(result));
                assertThat(status(result)).isEqualTo(OK);

                JPA.withTransaction(new F.Callback0() {
                    @Override
                    public void invoke() throws Throwable {
                        try {
                            User savedUser = DaoManager.getUserDao().getBatch(0, 1).get(0);
                            assertNotNull(savedUser.getId());
                            assertThat(savedUser.getLogin()).isEqualTo("login1");
                        } catch (DataAccessException e) {
                            e.printStackTrace();
                        }
                    }
                });
            }
        });
    }

    @Test
    public void updateTest() {
        running(fakeApplication(), new Runnable() {
            public void run() {
                DemoData.loadDemoData();

                ObjectNode userNode = Json.newObject();
                userNode.put("login", "login1");
                userNode.put("password", "passwodr");

                Logger.debug(userNode.toString());

                Result result = callAction(routes.ref.UserController.update(DemoData.user1.getId()),
                        fakeRequest().withJsonBody(userNode));
                Logger.debug("response: " + contentAsString(result));
                assertThat(status(result)).isEqualTo(OK);

                JPA.withTransaction(new F.Callback0() {
                    @Override
                    public void invoke() throws Throwable {
                        User savedUser = DaoManager.getUserDao().getBatch(0,2).get(0);
                        assertNotNull(savedUser.getId());
                        assertThat(savedUser.getLogin()).isEqualTo("login1");
                    }
                });
            }
        });
    }

    @Test
    public void removeTest() {
        running(fakeApplication(), new Runnable() {
            public void run() {
                DemoData.loadDemoData();

                Integer userId = DemoData.user1.getId();
                Result result = callAction(routes.ref.UserController.remove(userId));
                Logger.debug("response: " + contentAsString(result));
                assertThat(status(result)).isEqualTo(OK);

                result = callAction(routes.ref.UserController.getUser(userId));
                assertThat(status(result)).isEqualTo(NOT_FOUND);
            }
        });
    }

}
TOP

Related Classes of controllers.UserControllerTest

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.