Package com.agilebooster.data.jpa

Source Code of com.agilebooster.data.jpa.ProjectControllerTest

/*
* (C) Copyright 2014 Agile Booster.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
*     Maxime ESCOURBIAC
*/
package com.agilebooster.data.jpa;

import com.agilebooster.data.entity.Project;
import com.agilebooster.data.entity.User;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.junit.After;
import org.junit.AfterClass;
import static org.junit.Assert.*;
import org.junit.BeforeClass;
import org.junit.Test;

/**
* Test class for ProjectController.
*
* @author Maxime ESCOURBIAC
*/
public class ProjectControllerTest {

    private static User scrumMaster;
    private static User productOwner;
    private static User developer1;
    private static User developer2;
    private static User developer3;
    private static UserController userController;

    /**
     * Default constructor.
     */
    public ProjectControllerTest() {
    }

    /**
     * Init the test environment.
     */
    @BeforeClass
    public static void initContext() {
        userController = new UserController();
        scrumMaster = new User("ScrumMaster@agilebooster.fr", "Forename", "Last Name", "password", true);
        scrumMaster = userController.create(scrumMaster);
        productOwner = new User("ProductOwner@agilebooster.fr", "Forename", "Last Name", "password", true);
        productOwner = userController.create(productOwner);
        developer1 = new User("developer1@agilebooster.fr", "Forename", "Last Name", "password", true);
        developer1 = userController.create(developer1);
        developer2 = new User("developer2@agilebooster.fr", "Forename", "Last Name", "password", true);
        developer2 = userController.create(developer2);
        developer3 = new User("developer3@agilebooster.fr", "Forename", "Last Name", "password", true);
        developer3 = userController.create(developer3);
    }

    /**
     * Destroy the test environment.
     */
    @AfterClass
    public static void destroyContext() {
        userController.destroy(scrumMaster);
        userController.destroy(productOwner);
        userController.destroy(developer1);
        userController.destroy(developer2);
        userController.destroy(developer3);
    }

    /**
     * Clean the users after each test.
     */
    @After
    public void cleanData() {
        scrumMaster = userController.refresh(scrumMaster);
        productOwner = userController.refresh(productOwner);
        developer1 = userController.refresh(developer1);
        developer2 = userController.refresh(developer2);
        developer3 = userController.refresh(developer3);
    }

    /**
     * Test of create method, of class ProjectController.
     */
    @Test
    public void testCreate() {
        System.out.println("ProjectController:Create");
        ProjectController projectController = new ProjectController();
        List<User> assignedUsers = new ArrayList<>();
        assignedUsers.add(developer1);
        assignedUsers.add(developer2);
        assignedUsers.add(developer3);
        Date creationDate = new Date();
        Project project = new Project("Test Create", "TCE", "Project creation test.", creationDate, "http://www.testCreate.com", "http://www.testCreate.git", scrumMaster, productOwner);
        project.setAssignedUsers(assignedUsers);
        Project projectResult = projectController.create(project);

        //Check Project properties.
        assertNotNull(projectResult.getId());
        assertEquals(project.getName(), projectResult.getName());
        assertEquals(project.getKeyName(), projectResult.getKeyName());
        assertEquals(project.getDescription(), projectResult.getDescription());
        assertEquals(project.getCreationDate(), projectResult.getCreationDate());
        assertEquals(project.getURLWebsite(), projectResult.getURLWebsite());
        assertEquals(project.getURLRepository(), projectResult.getURLRepository());
        assertEquals(project.getScrumMaster(), projectResult.getScrumMaster());
        assertEquals(project.getProductOwner(), projectResult.getProductOwner());
        assertEquals(project.getAssignedUsers(), projectResult.getAssignedUsers());

        //Check users properties.
        scrumMaster = userController.refresh(scrumMaster);
        assertTrue(scrumMaster.getAssignedProjectsAsSM().contains(projectResult));
        productOwner = userController.refresh(productOwner);
        assertTrue(productOwner.getAssignedProjectsAsPO().contains(projectResult));
        developer1 = userController.refresh(developer1);
        assertTrue(developer1.getAssignedProjects().contains(projectResult));
        developer2 = userController.refresh(developer2);
        assertTrue(developer2.getAssignedProjects().contains(projectResult));
        developer3 = userController.refresh(developer3);
        assertTrue(developer3.getAssignedProjects().contains(projectResult));

        projectController.destroy(project);
    }

    /**
     * Test of destroy method, of class ProjectController.
     */
    @Test
    public void testDestroy() {
        System.out.println("ProjectController:Destroy");
        ProjectController projectController = new ProjectController();
        List<User> assignedUsers = new ArrayList<>();
        assignedUsers.add(developer1);
        assignedUsers.add(developer2);
        assignedUsers.add(developer3);
        Date creationDate = new Date();
        Project project = new Project("Test Destroy", "TDY", "Project destroy test.", creationDate, "http://www.testDestroy.com", "http://www.testDestroy.git", scrumMaster, productOwner);
        project.setAssignedUsers(assignedUsers);
        project = projectController.create(project);
        assertTrue(projectController.destroy(project));
    }

    /**
     * Test of getProjects method, of class ProjectController.
     */
    @Test
    public void testGetProject() {
        System.out.println("ProjectController:GetProjects");
        ProjectController instance = new ProjectController();
        List<User> assignedUsers = new ArrayList<>();
        assignedUsers.add(developer1);
        assignedUsers.add(developer2);
        assignedUsers.add(developer3);
        Date creationDate = new Date();
        Project project1 = new Project("Test Get Project 1", "TG1", "Project Get Project 1 test.", creationDate, "http://www.testGetProject.com", "http://www.testGetProject.git", scrumMaster, productOwner);
        Project project2 = new Project("Test Get Project 2", "TG2", "Project Get Project 2 test.", creationDate, "http://www.testGetProject.com", "http://www.testGetProject.git", scrumMaster, productOwner);
        Project project3 = new Project("Test Get Project 3", "TG3", "Project Get Project 3 test.", creationDate, "http://www.testGetProject.com", "http://www.testGetProject.git", scrumMaster, productOwner);
        project1.setAssignedUsers(assignedUsers);
        project2.setAssignedUsers(assignedUsers);
        project3.setAssignedUsers(assignedUsers);
        project1 = instance.create(project1);
        project2 = instance.create(project2);
        project3 = instance.create(project3);
        List result = instance.getProjects();
        assertTrue(result.contains(project1));
        assertTrue(result.contains(project2));
        assertTrue(result.contains(project3));
        instance.destroy(project1);
        instance.destroy(project2);
        instance.destroy(project3);
    }

    /**
     * Test of getProjectByKeyName method, of class ProjectController.
     */
    @Test
    public void testGetProjectByKeyName() {
        System.out.println("ProjectController:GetProjectByKeyName");
        List<User> assignedUsers = new ArrayList<>();
        assignedUsers.add(developer1);
        assignedUsers.add(developer2);
        assignedUsers.add(developer3);
        Date creationDate = new Date();
        Project project = new Project("Test Get Project By KeyName", "TGK", "Project Get Project By KeyName.", creationDate, "http://www.testGetProjectByKeyName.com", "http://www.testGetProjectByKeyName.git", scrumMaster, productOwner);
        project.setAssignedUsers(assignedUsers);
        ProjectController instance = new ProjectController();
        instance.create(project);

        //Check true case.
        Project projectResult = instance.getProjectByKeyName(project.getKeyName());
        assertEquals(project.getName(), projectResult.getName());
        assertEquals(project.getKeyName(), projectResult.getKeyName());
        assertEquals(project.getDescription(), projectResult.getDescription());
        assertEquals(project.getCreationDate(), projectResult.getCreationDate());
        assertEquals(project.getURLWebsite(), projectResult.getURLWebsite());
        assertEquals(project.getURLRepository(), projectResult.getURLRepository());
        assertEquals(project.getScrumMaster(), projectResult.getScrumMaster());
        assertEquals(project.getProductOwner(), projectResult.getProductOwner());
        assertEquals(project.getAssignedUsers(), projectResult.getAssignedUsers());
        instance.destroy(projectResult);

        //Check wrong case.
        projectResult = instance.getProjectByKeyName("FCE");
        assertNull(projectResult);
    }
}
TOP

Related Classes of com.agilebooster.data.jpa.ProjectControllerTest

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.