View Javadoc

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.ApplicationKey;
7   import com.atlassian.marketplace.client.api.ApplicationVersionSpecifier;
8   import com.atlassian.marketplace.client.model.ApplicationVersion;
9   import com.atlassian.marketplace.client.util.UriBuilder;
10  
11  import org.junit.Test;
12  
13  import static com.atlassian.marketplace.client.TestObjects.HOST_BASE;
14  import static com.atlassian.marketplace.client.api.ApplicationKey.JIRA;
15  import static com.atlassian.marketplace.client.impl.ClientTester.FAKE_APPLICATIONS_PATH;
16  import static com.atlassian.marketplace.client.model.TestModelBuilders.applicationVersion;
17  import static org.hamcrest.MatcherAssert.assertThat;
18  import static org.hamcrest.Matchers.contains;
19  import static org.mockito.Mockito.verify;
20  
21  public abstract class ApplicationsImplVersionsTest extends ApiImplTestBaseWithCreateAndUpdate<ApplicationVersion>
22      implements ApplicationsImplTestBase
23  {
24      @Test
25      public void getVersionUsesApplicationsResource() throws Exception
26      {
27          setupAppVersionResource(JIRA, latestVersionUri(JIRA));
28          tester.client.applications().getVersion(JIRA, ApplicationVersionSpecifier.latest());
29  
30          verify(tester.httpTransport).get(URI.create(HOST_BASE + FAKE_APPLICATIONS_PATH + "?limit=0"));
31      }
32  
33      @Test
34      public void getLatestVersionUsesLatestVersionResource() throws Exception
35      {
36          setupAppVersionResource(JIRA, latestVersionUri(JIRA));
37  
38          assertThat(tester.client.applications().getVersion(JIRA, ApplicationVersionSpecifier.latest()),
39                  contains(APP_VER_REP));
40      }
41  
42      @Test
43      public void getVersionByBuildUsesVersionByBuildResource() throws Exception
44      {
45          setupAppVersionResource(JIRA, versionByBuildUri(JIRA, 100));
46  
47          assertThat(tester.client.applications().getVersion(JIRA, ApplicationVersionSpecifier.buildNumber(100)),
48                  contains(APP_VER_REP));
49      }
50  
51      @Test
52      public void getVersionByNameUsesVersionByNameResource() throws Exception
53      {
54          setupAppVersionResource(JIRA, versionByNameUri(JIRA, "1.0"));
55  
56          assertThat(tester.client.applications().getVersion(JIRA, ApplicationVersionSpecifier.versionName("1.0")),
57                  contains(APP_VER_REP));
58      }
59      
60      @Override
61      protected URI getCollectionUri()
62      {
63          return URI.create(HOST_BASE + FAKE_APP_VERSIONS_PATH);
64      }
65      
66      @Override
67      protected ApplicationVersion makeEntityToCreate()
68      {
69          return applicationVersion().build();
70      }
71      
72      @Override
73      protected ApplicationVersion makeEntityFromServer()
74      {
75          return applicationVersion().links(APP_LINKS).build();
76      }
77      
78      @Override
79      protected ApplicationVersion makeEntityWithUpdates(ApplicationVersion from)
80      {
81          return applicationVersion(from).build();
82      }
83      
84      @Override
85      protected ApplicationVersion createEntity(ApplicationVersion entity) throws Exception
86      {
87          setupAppByKeyResource(appByKeyUri(JIRA));
88          return tester.client.applications().createVersion(JIRA, entity);
89      }
90      
91      @Override
92      protected ApplicationVersion updateEntity(ApplicationVersion original, ApplicationVersion updated) throws MpacException
93      {
94          return tester.client.applications().updateVersion(original, updated);
95      }
96  
97      protected UriBuilder appsApi()
98      {
99          return UriBuilder.fromUri(HOST_BASE + FAKE_APPLICATIONS_PATH);
100     }
101     
102     protected UriBuilder appsApiZeroLengthQuery()
103     {
104         return appsApi().queryParam("limit", 0);
105     }
106 
107     protected UriBuilder appByKeyUri(ApplicationKey key)
108     {
109         return UriBuilder.fromUri(HOST_BASE + FAKE_APP_BY_KEY_PATH + key.getKey());
110     }
111 
112     protected void setupAppsResource(UriBuilder appsUri) throws Exception
113     {
114         setupAppsResource(appsUri, APPS_REP);
115     }
116     
117     protected void setupAppsResource(UriBuilder appsUri, InternalModel.Applications rep) throws Exception
118     {
119         tester.mockResource(appsUri.build(), rep);
120     }
121     
122     protected void setupAppByKeyResource(UriBuilder uri) throws Exception
123     {
124         setupAppsResource(appsApiZeroLengthQuery());
125         tester.mockResource(uri.build(), APP_REP);
126     }
127     
128     protected UriBuilder latestVersionUri(ApplicationKey key)
129     {
130         return UriBuilder.fromUri(HOST_BASE + FAKE_APP_LATEST_PATH + key.getKey());
131     }
132 
133     protected UriBuilder versionByBuildUri(ApplicationKey key, int buildNumber)
134     {
135         return UriBuilder.fromUri(HOST_BASE + FAKE_APP_VER_PATH + key.getKey() + "/" + buildNumber);
136     }
137 
138     protected UriBuilder versionByNameUri(ApplicationKey key, String name)
139     {
140         return UriBuilder.fromUri(HOST_BASE + FAKE_APP_VER_PATH + "name/" + name);
141     }
142     
143     protected void setupAppVersionResource(ApplicationKey key, UriBuilder uri) throws Exception
144     {
145         setupAppByKeyResource(appByKeyUri(key));
146         tester.mockResource(uri.build(), APP_VER_REP);
147     }
148 }