1 package com.atlassian.marketplace.client.api;
2
3 import com.google.common.collect.ImmutableList;
4
5 import org.hamcrest.Matchers;
6 import org.junit.Test;
7
8 import static com.atlassian.fugue.Option.none;
9 import static com.atlassian.fugue.Option.some;
10 import static com.atlassian.marketplace.client.api.AddonQuery.any;
11 import static com.atlassian.marketplace.client.api.AddonQuery.builder;
12 import static com.atlassian.marketplace.client.api.ApplicationKey.JIRA;
13 import static com.atlassian.marketplace.client.api.Cost.ALL_PAID;
14 import static com.atlassian.marketplace.client.api.HostingType.CLOUD;
15 import static org.hamcrest.MatcherAssert.assertThat;
16 import static org.hamcrest.Matchers.equalTo;
17
18 public class AddonQueryTest
19 {
20 @Test
21 public void defaultQueryIsSameAsAny()
22 {
23 assertThat(builder().build(), equalTo(any()));
24 }
25
26 @Test
27 public void defaultQueryHasNoAccessToken()
28 {
29 assertThat(any().getAccessToken(), equalTo(none(String.class)));
30 }
31
32 @Test
33 public void accessTokenCanBeSet()
34 {
35 assertThat(builder().accessToken(some("x")).build().getAccessToken(), equalTo(some("x")));
36 }
37
38 @Test
39 public void defaultQueryHasNoApplication()
40 {
41 assertThat(any().getApplication(), equalTo(none(ApplicationKey.class)));
42 }
43
44 @Test
45 public void applicationCanBeSet()
46 {
47 AddonQuery q = AddonQuery.builder().application(some(JIRA)).build();
48 assertThat(q.getApplication(), equalTo(some(JIRA)));
49 }
50
51 @Test
52 public void defaultQueryHasNoAppBuildNumber()
53 {
54 assertThat(any().getAppBuildNumber(), equalTo(none(Integer.class)));
55 }
56
57 @Test
58 public void appBuildNumberCanBeSet()
59 {
60 AddonQuery q = builder().appBuildNumber(some(1000)).build();
61 assertThat(q.getAppBuildNumber(), equalTo(some(1000)));
62 }
63
64 @Test
65 public void defaultQueryHasNoCategories()
66 {
67 assertThat(any().getCategoryNames(), Matchers.<String>emptyIterable());
68 }
69
70 @Test
71 public void categoriesCanBeSet()
72 {
73 AddonQuery q = AddonQuery.builder().categoryNames(ImmutableList.of("a", "b")).build();
74 assertThat(q.getCategoryNames(), Matchers.<String>contains("a", "b"));
75 }
76
77 @Test
78 public void defaultQueryHasNoCost()
79 {
80 assertThat(any().getCost(), Matchers.<Cost>emptyIterable());
81 }
82
83 @Test
84 public void costCanBeSet()
85 {
86 AddonQuery q = AddonQuery.builder().cost(some(ALL_PAID)).build();
87 assertThat(q.getCost(), equalTo(some(ALL_PAID)));
88 }
89
90 @Test
91 public void defaultQueryHasNoHosting()
92 {
93 assertThat(any().getHosting(), equalTo(none(HostingType.class)));
94 }
95
96 @Test
97 public void hostingCanBeSet()
98 {
99 AddonQuery q = AddonQuery.builder().hosting(some(CLOUD)).build();
100 assertThat(q.getHosting(), equalTo(some(CLOUD)));
101 }
102
103 @Test
104 public void defaultQueryHasNoSearchText()
105 {
106 assertThat(any().getSearchText(), equalTo(none(String.class)));
107 }
108
109 @Test
110 public void searchTextCanBeSet()
111 {
112 AddonQuery q = AddonQuery.builder().searchText(some("yo")).build();
113 assertThat(q.getSearchText(), equalTo(some("yo")));
114 }
115
116 @Test
117 public void defaultQueryHasWithVersionFalse()
118 {
119 assertThat(any().isWithVersion(), equalTo(false));
120 }
121
122 @Test
123 public void withVersionCanBeSet()
124 {
125 AddonQuery q = AddonQuery.builder().withVersion(true).build();
126 assertThat(q.isWithVersion(), equalTo(true));
127 }
128
129 @Test
130 public void defaultQueryHasDefaultBounds()
131 {
132 assertThat(any().getBounds(), equalTo(QueryBounds.defaultBounds()));
133 }
134
135 @Test
136 public void boundsCanBeSet()
137 {
138 QueryBounds b = QueryBounds.offset(2).withLimit(some(3));
139 AddonQuery q = AddonQuery.builder().bounds(b).build();
140 assertThat(q.getBounds(), equalTo(b));
141 }
142 }