View Javadoc
1   /*
2    * JBoss, Home of Professional Open Source
3    * Copyright 2014, Red Hat, Inc. and/or its affiliates, and individual
4    * contributors by the @authors tag. See the copyright.txt in the
5    * distribution for a full listing of individual contributors.
6    *
7    * Licensed under the Apache License, Version 2.0 (the "License");
8    * you may not use this file except in compliance with the License.
9    * You may obtain a copy of the License at
10   * http://www.apache.org/licenses/LICENSE-2.0
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  package org.jboss.as.quickstarts.tasksJsf;
18  
19  import static org.junit.Assert.assertEquals;
20  import static org.junit.Assert.assertTrue;
21  
22  import java.io.FileNotFoundException;
23  import java.util.List;
24  
25  import javax.inject.Inject;
26  import javax.persistence.EntityManager;
27  
28  import org.jboss.arquillian.container.test.api.Deployment;
29  import org.jboss.arquillian.junit.Arquillian;
30  import org.jboss.arquillian.junit.InSequence;
31  import org.jboss.as.quickstarts.tasksJsf.Resources;
32  import org.jboss.as.quickstarts.tasksJsf.Task;
33  import org.jboss.as.quickstarts.tasksJsf.TaskDao;
34  import org.jboss.as.quickstarts.tasksJsf.TaskDaoImpl;
35  import org.jboss.as.quickstarts.tasksJsf.User;
36  import org.jboss.as.quickstarts.tasksJsf.UserDao;
37  import org.jboss.shrinkwrap.api.spec.WebArchive;
38  import org.junit.Before;
39  import org.junit.Test;
40  import org.junit.runner.RunWith;
41  
42  /**
43   * @author Lukas Fryc
44   * @author Oliver Kiss
45   */
46  @RunWith(Arquillian.class)
47  public class TaskDaoTest {
48  
49      @Deployment
50      public static WebArchive deployment() throws IllegalArgumentException, FileNotFoundException {
51          return new DefaultDeployment().withPersistence().withImportedData().getArchive()
52                  .addClasses(Resources.class, User.class, UserDao.class, Task.class, TaskDao.class, TaskDaoImpl.class);
53      }
54  
55      @Inject
56      private EntityManager em;
57  
58      @Inject
59      private TaskDao taskDao;
60  
61      private User detachedUser;
62  
63      @Before
64      public void setUp() throws Exception {
65          detachedUser = new User("jdoe");
66          detachedUser.setId(1L);
67      }
68  
69      @Test
70      @InSequence(1)
71      public void user_should_be_created_with_one_task_attached() throws Exception {
72          // given
73          User user = new User("New user");
74          Task task = new Task("New task");
75  
76          // when
77          em.persist(user);
78          taskDao.createTask(user, task);
79          List<Task> userTasks = em.createQuery("SELECT t FROM Task t WHERE t.owner = :owner", Task.class)
80                  .setParameter("owner", user).getResultList();
81  
82          // then
83          assertEquals(1, userTasks.size());
84          assertEquals(task, userTasks.get(0));
85      }
86  
87      @Test
88      @InSequence(2)
89      public void all_tasks_should_be_obtained_from_detachedUser() {
90          // when
91          List<Task> userTasks = taskDao.getAll(detachedUser);
92  
93          // then
94          assertEquals(2, userTasks.size());
95      }
96  
97      @Test
98      @InSequence(3)
99      public void range_of_tasks_should_be_provided_by_taskDao() {
100         // when
101         List<Task> headOfTasks = taskDao.getRange(detachedUser, 0, 1);
102         List<Task> tailOfTasks = taskDao.getRange(detachedUser, 1, 1);
103 
104         // then
105         assertEquals(1, headOfTasks.size());
106         assertEquals(1, tailOfTasks.size());
107         assertTrue(headOfTasks.get(0).getTitle().contains("first"));
108         assertTrue(tailOfTasks.get(0).getTitle().contains("second"));
109     }
110 
111     @Test
112     @InSequence(4)
113     public void taskDao_should_provide_basic_case_insensitive_full_text_search() {
114         // given
115         String taskTitlePart = "FIRST";
116 
117         // when
118         List<Task> titledTasks = taskDao.getForTitle(detachedUser, taskTitlePart);
119 
120         // then
121         assertEquals(1, titledTasks.size());
122         assertTrue(titledTasks.get(0).getTitle().contains("first"));
123     }
124 
125     @Test
126     @InSequence(5)
127     public void taskDao_should_remove_task_from_detachedUser() {
128         // given
129         Task task = new Task();
130         task.setId(1L);
131         task.setOwner(detachedUser);
132         assertEquals(2, taskDao.getAll(detachedUser).size());
133 
134         // when
135         taskDao.deleteTask(task);
136 
137         // then
138         assertEquals(1, taskDao.getAll(detachedUser).size());
139     }
140 }