1 package com.atlassian.marketplace.client.impl;
2
3 import java.net.URI;
4
5 import com.atlassian.marketplace.client.MpacException;
6 import com.atlassian.marketplace.client.api.AddonVersionsQuery;
7 import com.atlassian.marketplace.client.model.AddonVersion;
8 import com.atlassian.marketplace.client.model.AddonVersionSummary;
9 import com.atlassian.marketplace.client.model.TestModelBuilders;
10 import com.atlassian.marketplace.client.util.UriBuilder;
11
12 import com.google.common.collect.ImmutableList;
13
14 import org.junit.Test;
15
16 import static com.atlassian.fugue.Option.some;
17 import static com.atlassian.marketplace.client.TestObjects.HOST_BASE;
18 import static com.atlassian.marketplace.client.api.AddonVersionSpecifier.buildNumber;
19 import static com.atlassian.marketplace.client.api.AddonVersionSpecifier.latest;
20 import static com.atlassian.marketplace.client.api.AddonVersionSpecifier.versionName;
21 import static com.atlassian.marketplace.client.api.ApplicationKey.JIRA;
22 import static com.atlassian.marketplace.client.impl.ClientTester.FAKE_ADDONS_PATH;
23 import static com.atlassian.marketplace.client.model.TestModelBuilders.addonVersion;
24 import static org.hamcrest.MatcherAssert.assertThat;
25 import static org.hamcrest.Matchers.contains;
26 import static org.mockito.Mockito.verify;
27
28 public class AddonsImplVersionsTest extends AddonsImplTestBase<AddonVersion>
29 {
30 @Test
31 public void getVersionByBuildUsesAppropriateUri() throws Exception
32 {
33 setupVersionResource("x", versionByBuildUri(100));
34 assertThat(tester.client.addons().getVersion("x", buildNumber(100), AddonVersionsQuery.any()),
35 contains(ADDON_VERSION_REP));
36 }
37
38 @Test
39 public void getVersionByNameUsesAppropriateUri() throws Exception
40 {
41 setupVersionResource("x", versionByNameUri("1.0"));
42 assertThat(tester.client.addons().getVersion("x", versionName("1.0"), AddonVersionsQuery.any()),
43 contains(ADDON_VERSION_REP));
44 }
45
46 @Test
47 public void getLatestVersionUsesAddonResource() throws Exception
48 {
49 setupVersionResource("x", latestVersionUri("x"));
50 tester.client.addons().getVersion("x", latest(), AddonVersionsQuery.any());
51 verify(tester.httpTransport).get(URI.create(HOST_BASE + FAKE_ADDONS_PATH + "?limit=0"));
52 }
53
54 @Test
55 public void getLatestVersionUsesLatestVersionResource() throws Exception
56 {
57 setupVersionResource("x", latestVersionUri("x"));
58 assertThat(tester.client.addons().getVersion("x", latest(), AddonVersionsQuery.any()), contains(ADDON_VERSION_REP));
59 }
60
61 @Test
62 public void getLatestVersionPassesOtherParamsInQueryString() throws Exception
63 {
64
65
66 setupVersionResource("x", latestVersionUri("x").queryParam("application", "jira"));
67 assertThat(tester.client.addons().getVersion("x", latest(), AddonVersionsQuery.builder().application(some(JIRA)).build()),
68 contains(ADDON_VERSION_REP));
69 }
70
71 @Test
72 public void getLatestVersionAfterPassesAfterVersionInQueryString() throws Exception
73 {
74 setupVersionResource("x", latestVersionUri("x").queryParam("afterVersion", "1.0"));
75 assertThat(tester.client.addons().getVersion("x", latest(), AddonVersionsQuery.builder().afterVersion(some("1.0")).build()),
76 contains(ADDON_VERSION_REP));
77 }
78
79 @Test
80 public void getLatestVersionAfterPassesOtherParamsInQueryString() throws Exception
81 {
82
83
84 setupVersionResource("x", latestVersionUri("x").queryParam("application", "jira").queryParam("afterVersion", "1.0"));
85 assertThat(tester.client.addons().getVersion("x", latest(),
86 AddonVersionsQuery.builder().application(some(JIRA)).afterVersion(some("1.0")).build()),
87 contains(ADDON_VERSION_REP));
88 }
89
90 @Test
91 public void getVersionsPassesQueryParams() throws Exception
92 {
93 AddonVersionSummary version1 = TestModelBuilders.addonVersionSummary().name("1.0").build();
94 AddonVersionSummary version2 = TestModelBuilders.addonVersionSummary().name("2.0").build();
95 InternalModel.AddonVersions versionsRep =
96 InternalModel.addonVersions(ADDON_VERSIONS_LINKS, ImmutableList.of(version1, version2), 2);
97
98 setupAddonByKeyResource(addonByKeyUri("x"));
99 tester.mockResource(UriBuilder.fromUri(HOST_BASE + FAKE_ADDON_VERSIONS_PATH)
100 .queryParam("application", "jira").build(), versionsRep);
101 assertThat(tester.client.addons().getVersions("x",
102 AddonVersionsQuery.builder().application(some(JIRA)).build()),
103 contains(version1, version2));
104 }
105
106 @Override
107 protected URI getCollectionUri()
108 {
109 return URI.create(HOST_BASE + FAKE_ADDON_VERSIONS_PATH);
110 }
111
112 @Override
113 protected AddonVersion makeEntityToCreate()
114 {
115 return addonVersion().build();
116 }
117
118 @Override
119 protected AddonVersion makeEntityFromServer()
120 {
121 return addonVersion().links(ADDON_LINKS).build();
122 }
123
124 @Override
125 protected AddonVersion makeEntityWithUpdates(AddonVersion from)
126 {
127 return addonVersion(from).build();
128 }
129
130 @Override
131 protected AddonVersion createEntity(AddonVersion entity) throws Exception
132 {
133 setupAddonByKeyResource(addonByKeyUri("x"));
134 return tester.client.addons().createVersion("x", entity);
135 }
136
137 @Override
138 protected AddonVersion updateEntity(AddonVersion original, AddonVersion updated) throws MpacException
139 {
140 return tester.client.addons().updateVersion(original, updated);
141 }
142 }