Package se.gu.fire

Source Code of se.gu.fire.SubmissionTest

package se.gu.fire;

import java.util.Calendar;
import java.util.Date;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.Persistence;
import org.junit.After;
import org.junit.AfterClass;
import static org.junit.Assert.*;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import se.gu.fire.core.Assignment;
import se.gu.fire.core.Comment;
import se.gu.fire.core.FireUser;
import se.gu.fire.core.StoredFile;
import se.gu.fire.core.StudentGroup;
import se.gu.fire.core.Submission;
import se.gu.fire.core.Submission.SubmissionStatus;
import se.gu.fire.data.AssignmentManager;
import se.gu.fire.data.CommentManager;
import se.gu.fire.data.GroupManager;
import se.gu.fire.data.SubmissionManager;
import se.gu.fire.data.UserManager;
import se.gu.fire.util.test.TestBean;
import se.gu.fire.util.test.TestUtil;

public class SubmissionTest {

    private static EntityManager em;
    private static TestBean testBean;

    @BeforeClass
    public static void setUpClass() throws Exception {
        em = Persistence.createEntityManagerFactory(TestUtil.TEST_PU_NAME).createEntityManager();
        testBean = new TestBean(em);
    }

    public SubmissionTest() {
    }

    @AfterClass
    public static void tearDownClass() {
    }

    @Before
    public void setUp() {
        testBean.clearDb();
    }

    @After
    public void tearDown() {
        testBean.clearDb();
    }

    @Test
    public void testingSubmissions() {

        // Create the managers
        AssignmentManager am = new AssignmentManager();
        am.setEntityManager(em);

        SubmissionManager sm = new SubmissionManager();
        sm.setEntityManager(em);

        UserManager um = new UserManager();
        um.setEntityManager(em);

        GroupManager gm = new GroupManager();
        gm.setEntityManager(em);

        CommentManager cm = new CommentManager();
        cm.setEntityManager(em);

        // Fix assignment
        Assignment assign = new Assignment.Builder()
                .title("Ratnum labb")
                .information("Programmera RatNum labben ordentligt annars kommer Christopher.")
                .finalDeadline(new Date(Calendar.getInstance().getTime().getTime()+15000))
                .firstDeadline(new Date(Calendar.getInstance().getTime().getTime()+10000))
                .build();
           
        em.getTransaction().begin();
        am.create(assign);
        em.getTransaction().commit();


        // Fix users
        FireUser u = TestUtil.createRandomUser();
       
        em.getTransaction().begin();
        um.create(u);
        em.getTransaction().commit();


        FireUser u2 = TestUtil.createRandomUser();
       
        em.getTransaction().begin();
        um.create(u2);
        em.getTransaction().commit();

        // Student group
        StudentGroup group = new StudentGroup();
        em.getTransaction().begin();
        group.addGroupMember(u);
        gm.create(group);
        em.getTransaction().commit();

        assertEquals(SubmissionStatus.NotSubmitted, sm.getAssignmentStatus(assign, group));


        // Test adding submission and a file
        byte[] text = "Java, Lava\nNava".getBytes();
       
        Submission sub = new Submission.Builder()
                .assignment(assign)
                .submittingGroup(group)
                .grader(u2)
                .build();
       
        em.getTransaction().begin();
        sm.create(sub);
        em.getTransaction().commit();
        assertEquals(SubmissionStatus.New, sm.getAssignmentStatus(assign, group));

        Comment com = new Comment(u2, "Total katastrof! Bara Christopher kan rädda dig nu");

        sub.addComments(com);
        sub.addFile(new StoredFile("Hacker.java", text, "text/plain"));
        Submission sub2 = sm.read(sub.getId());

        assertEquals(sub, sub2);

        // Test setSubmissionStatus()
        sub.setSubmissionStatus(SubmissionStatus.Rejected);
        em.getTransaction().begin();
        sm.update(sub);
        em.getTransaction().commit();

        assertEquals(SubmissionStatus.Rejected, sm.getAssignmentStatus(assign, group));

        // Ensure comment exits
        assertTrue(sub2.getComments().size() > 0);

        // Ensure files exists
        List<StoredFile> files = sm.getSubmissionFiles(sub);
        assertTrue(files.size() > 0);

        sub = sm.read(sub.getId());
        assertEquals(SubmissionStatus.Rejected, sub.getSubmissionStatus());

        // Test getAllByGroup()
        Submission subAgain = new Submission.Builder()
                .assignment(assign)
                .submittingGroup(group)
                .grader(u2)
                .build();

        em.getTransaction().begin();
        sm.create(subAgain);
        em.getTransaction().commit();
        List<Submission> allGroupSub = sm.getAllByGroup(group);
        assertNotNull(allGroupSub);
        assertTrue(allGroupSub.size() >= 2);

        // Test getALlByGroup(Assignment, Group)
        allGroupSub = sm.getAllByGroup(assign, group);
        assertNotNull(allGroupSub);
        assertTrue(allGroupSub.size() >= 2);

        // Test submission with no grader doesn't give NPE
        subAgain = new Submission.Builder()
                .assignment(assign)
                .submittingGroup(group)
                .build();

        em.getTransaction().begin();
        sm.create(subAgain);
        em.getTransaction().commit();
       
        List<Submission> assignedSub = sm.getAllForGrader(assign, u2);
        assertNotNull(assignedSub);
        assertTrue(assignedSub.size() >= 2);

        // Test for isPassed
        subAgain.setSubmissionStatus(SubmissionStatus.Accepted);

        em.getTransaction().begin();
        sm.update(subAgain);
        em.getTransaction().commit();
       
        assertTrue(sm.isPassed(assign, group));     
        assertEquals(SubmissionStatus.Accepted, sm.getAssignmentStatus(assign, group));

        // Testa att group inte klarat kursen
        //assertFalse(am.isCompletedCourse(group));

    }
}
TOP

Related Classes of se.gu.fire.SubmissionTest

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.