1 package com.atlassian.user.impl.memory.search.query;
2
3 import com.atlassian.user.GroupManager;
4 import com.atlassian.user.UserManager;
5 import com.atlassian.user.generic.AbstractEntityQueryParserTest;
6 import com.atlassian.user.impl.memory.MemoryGroupManager;
7 import com.atlassian.user.impl.memory.MemoryUserManager;
8 import com.atlassian.user.repository.RepositoryIdentifier;
9 import com.atlassian.user.search.query.*;
10 import com.atlassian.user.search.page.Pager;
11 import com.atlassian.user.search.page.PagerUtils;
12 import com.atlassian.user.search.SearchResult;
13
14 import java.util.List;
15 import java.util.ArrayList;
16
17 public class TestDefaultEntityQueryParserWithMemory extends AbstractEntityQueryParserTest
18 {
19 protected MemoryGroupManager memoryGroupManager;
20 protected MemoryUserManager memoryUserManager;
21 private EntityQueryParser entityQueryParser;
22 private RepositoryIdentifier memoryIdentifier;
23
24 protected String[] getConfigLocations()
25 {
26 return new String[]{
27 "classpath:com/atlassian/user/impl/memory/memoryTestContext.xml",
28 };
29 }
30
31 protected void onSetUp() throws Exception
32 {
33 super.onSetUp();
34 entityQueryParser = new DefaultEntityQueryParser(memoryIdentifier, getUserManager(), getGroupManager());
35 }
36
37 protected void onTearDown() throws Exception
38 {
39 setDirty();
40 super.onTearDown();
41 }
42
43 public void setMemoryGroupManager(MemoryGroupManager memoryGroupManager)
44 {
45 this.memoryGroupManager = memoryGroupManager;
46 }
47
48 public void setMemoryUserManager(MemoryUserManager memoryUserManager)
49 {
50 this.memoryUserManager = memoryUserManager;
51 }
52
53 public void setMemoryIdentifier(RepositoryIdentifier memoryIdentifier)
54 {
55 this.memoryIdentifier = memoryIdentifier;
56 }
57
58 protected RepositoryIdentifier getRepositoryIdentifier()
59 {
60 return memoryIdentifier;
61 }
62
63 protected UserManager getUserManager()
64 {
65 return memoryUserManager;
66 }
67
68 protected GroupManager getGroupManager()
69 {
70 return memoryGroupManager;
71 }
72
73 protected EntityQueryParser getEntityQueryParser()
74 {
75 return entityQueryParser;
76 }
77
78
79 public void testWildcardSearch() throws Exception
80 {
81 createTestUsers();
82 UserNameTermQuery query = new UserNameTermQuery("", TermQuery.SUBSTRING_CONTAINS);
83 Pager users = getEntityQueryParser().findUsers(query).pager();
84 assertEquals(4, PagerUtils.count(users));
85 }
86
87 public void testNestedBooleanOrQuery() throws Exception
88 {
89 createTestUsers();
90
91 TermQuery q1 = new UserNameTermQuery("r", TermQuery.SUBSTRING_CONTAINS);
92 TermQuery q2 = new EmailTermQuery("org", TermQuery.SUBSTRING_CONTAINS);
93
94 TermQuery q3 = new UserNameTermQuery("bob", TermQuery.SUBSTRING_CONTAINS);
95 TermQuery q4 = new EmailTermQuery("acme", TermQuery.SUBSTRING_CONTAINS);
96
97
98 List<Query> queries = new ArrayList<Query>();
99 queries.add(q1);
100 queries.add(q2);
101 BooleanQuery query = new TwoTermBooleanQuery(q3, q4, BooleanQuery.AND);
102 queries.add(query);
103 MultiTermBooleanQuery parentQuery2 = new MultiTermBooleanQuery(queries.toArray(new Query[1]), false);
104 SearchResult result = getEntityQueryParser().findUsers(parentQuery2);
105 Pager pager = result.pager();
106
107 assertEquals(4, pager.getCurrentPage().size());
108 assertTrue(pagerContainsUsername(pager, "icarus"));
109 assertTrue(pagerContainsUsername(pager, "orpheus"));
110 assertTrue(pagerContainsUsername(pager, "peter"));
111 assertTrue(pagerContainsUsername(pager, "bob"));
112 }
113
114 }