1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.jboss.as.quickstarts.tasksrs;
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.tasksrs.model.*;
32 import org.jboss.shrinkwrap.api.spec.WebArchive;
33 import org.junit.Before;
34 import org.junit.Test;
35 import org.junit.runner.RunWith;
36
37
38
39
40
41 @RunWith(Arquillian.class)
42 public class TaskDaoTest {
43
44 @Deployment
45 public static WebArchive deployment() throws IllegalArgumentException, FileNotFoundException {
46 return new DefaultDeployment().withPersistence().withImportedData().getArchive()
47 .addClasses(Resources.class, User.class, UserDao.class, Task.class, TaskDao.class, TaskDaoImpl.class);
48 }
49
50 @Inject
51 private EntityManager em;
52
53 @Inject
54 private TaskDao taskDao;
55
56 private User detachedUser;
57
58 @Before
59 public void setUp() throws Exception {
60 detachedUser = new User("jdoe");
61 detachedUser.setId(1L);
62 }
63
64 @Test
65 @InSequence(1)
66 public void user_should_be_created_with_one_task_attached() throws Exception {
67
68 User user = new User("New user");
69 Task task = new Task("New task");
70
71
72 em.persist(user);
73 taskDao.createTask(user, task);
74 List<Task> userTasks = em.createQuery("SELECT t FROM Task t WHERE t.owner = :owner", Task.class)
75 .setParameter("owner", user).getResultList();
76
77
78 assertEquals(1, userTasks.size());
79 assertEquals(task, userTasks.get(0));
80 }
81
82 @Test
83 @InSequence(2)
84 public void all_tasks_should_be_obtained_from_detachedUser() {
85
86 List<Task> userTasks = taskDao.getAll(detachedUser);
87
88
89 assertEquals(2, userTasks.size());
90 }
91
92 @Test
93 @InSequence(3)
94 public void range_of_tasks_should_be_provided_by_taskDao() {
95
96 List<Task> headOfTasks = taskDao.getRange(detachedUser, 0, 1);
97 List<Task> tailOfTasks = taskDao.getRange(detachedUser, 1, 1);
98
99
100 assertEquals(1, headOfTasks.size());
101 assertEquals(1, tailOfTasks.size());
102 assertTrue(headOfTasks.get(0).getTitle().contains("first"));
103 assertTrue(tailOfTasks.get(0).getTitle().contains("second"));
104 }
105
106 @Test
107 @InSequence(4)
108 public void taskDao_should_provide_basic_case_insensitive_full_text_search() {
109
110 String taskTitlePart = "FIRST";
111
112
113 List<Task> titledTasks = taskDao.getForTitle(detachedUser, taskTitlePart);
114
115
116 assertEquals(1, titledTasks.size());
117 assertTrue(titledTasks.get(0).getTitle().contains("first"));
118 }
119
120 @Test
121 @InSequence(5)
122 public void taskDao_should_remove_task_from_detachedUser() {
123
124 Task task = new Task();
125 task.setId(1L);
126 task.setOwner(detachedUser);
127 assertEquals(2, taskDao.getAll(detachedUser).size());
128
129
130 taskDao.deleteTask(task);
131
132
133 assertEquals(1, taskDao.getAll(detachedUser).size());
134 }
135 }