1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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
44
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
73 User user = new User("New user");
74 Task task = new Task("New task");
75
76
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
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
91 List<Task> userTasks = taskDao.getAll(detachedUser);
92
93
94 assertEquals(2, userTasks.size());
95 }
96
97 @Test
98 @InSequence(3)
99 public void range_of_tasks_should_be_provided_by_taskDao() {
100
101 List<Task> headOfTasks = taskDao.getRange(detachedUser, 0, 1);
102 List<Task> tailOfTasks = taskDao.getRange(detachedUser, 1, 1);
103
104
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
115 String taskTitlePart = "FIRST";
116
117
118 List<Task> titledTasks = taskDao.getForTitle(detachedUser, taskTitlePart);
119
120
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
129 Task task = new Task();
130 task.setId(1L);
131 task.setOwner(detachedUser);
132 assertEquals(2, taskDao.getAll(detachedUser).size());
133
134
135 taskDao.deleteTask(task);
136
137
138 assertEquals(1, taskDao.getAll(detachedUser).size());
139 }
140 }