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.QueryBounds;
7   import com.atlassian.marketplace.client.api.VendorId;
8   import com.atlassian.marketplace.client.api.VendorQuery;
9   import com.atlassian.marketplace.client.model.Links;
10  import com.atlassian.marketplace.client.model.TestModelBuilders;
11  import com.atlassian.marketplace.client.model.Vendor;
12  import com.atlassian.marketplace.client.model.VendorSummary;
13  import com.atlassian.marketplace.client.util.UriBuilder;
14  
15  import com.google.common.collect.ImmutableList;
16  
17  import org.junit.Test;
18  
19  import static com.atlassian.fugue.Option.some;
20  import static com.atlassian.marketplace.client.TestObjects.HOST_BASE;
21  import static com.atlassian.marketplace.client.impl.ClientTester.FAKE_VENDORS_PATH;
22  import static com.atlassian.marketplace.client.model.ModelBuilders.links;
23  import static com.atlassian.marketplace.client.model.TestModelBuilders.vendor;
24  import static com.atlassian.marketplace.client.model.TestModelBuilders.vendorSummary;
25  import static org.hamcrest.MatcherAssert.assertThat;
26  import static org.hamcrest.Matchers.contains;
27  import static org.hamcrest.Matchers.equalTo;
28  
29  public class VendorsImplTest extends ApiImplTestBaseWithCreateAndUpdate<Vendor>
30  {
31      private static final URI FAKE_VENDOR_URI = URI.create("/vendor");
32      private static final VendorId FAKE_VENDOR_ID = VendorId.fromUri(FAKE_VENDOR_URI);
33      private static final Links VENDOR_LINKS = links().put("self", FAKE_VENDOR_URI).build();
34      private static final Vendor VENDOR_REP = TestModelBuilders.vendor().links(VENDOR_LINKS).build();
35      private static final VendorSummary VENDOR_SUMMARY_REP = vendorSummary().build();
36      private static final InternalModel.Vendors VENDORS_REP =
37              InternalModel.vendors(links().build(), ImmutableList.of(VENDOR_SUMMARY_REP), 2);
38      
39      @Test
40      public void getByIdUsesUriDirectly() throws Exception
41      {
42          tester.mockResource(tester.apiBase.resolve(FAKE_VENDOR_URI), VENDOR_REP);
43          assertThat(tester.client.vendors().getById(FAKE_VENDOR_ID), contains(VENDOR_REP));
44      }
45  
46      @Test
47      public void findUsesAddonsResource() throws Exception
48      {
49          tester.mockResource(vendorsApi().build(), VENDORS_REP);
50          
51          assertThat(tester.client.vendors().find(VendorQuery.any()), contains(VENDOR_SUMMARY_REP));
52      }
53  
54      @Test
55      public void findReturnsPageWithCorrectSize() throws Exception
56      {
57          tester.mockResource(vendorsApi().build(), VENDORS_REP);
58          
59          assertThat(tester.client.vendors().find(VendorQuery.any()).size(), equalTo(1));
60      }
61  
62      @Test
63      public void findReturnsPageWithCorrectTotalSize() throws Exception
64      {
65          tester.mockResource(vendorsApi().build(), VENDORS_REP);
66          
67          assertThat(tester.client.vendors().find(VendorQuery.any()).totalSize(), equalTo(2));
68      }
69  
70      private void testFindParams(UriBuilder uriWithParams, VendorQuery.Builder queryWithParams) throws Exception
71      {
72          tester.mockResource(uriWithParams.build(), VENDORS_REP);
73          assertThat(tester.client.vendors().find(queryWithParams.build()), contains(VENDOR_SUMMARY_REP));
74      }
75  
76      @Test
77      public void findPassesOffsetInQueryString() throws Exception
78      {
79          testFindParams(vendorsApi().queryParam("offset", "5"), VendorQuery.builder().bounds(QueryBounds.offset(5)));
80      }
81      
82      @Test
83      public void findPassesLimitInQueryString() throws Exception
84      {
85          testFindParams(vendorsApi().queryParam("limit", "10"), VendorQuery.builder().bounds(QueryBounds.limit(some(10))));
86      }
87  
88      @Test
89      public void findPassesForThisUserInQueryString() throws Exception
90      {
91          testFindParams(vendorsApi().queryParam("forThisUser", "true"), VendorQuery.builder().forThisUserOnly(true));
92      }
93  
94      @Override
95      protected URI getCollectionUri()
96      {
97          return vendorsApi().build();
98      }
99      
100     @Override
101     protected Vendor makeEntityToCreate()
102     {
103         return vendor().build();
104     }
105     
106     @Override
107     protected Vendor makeEntityFromServer()
108     {
109         return vendor().links(VENDOR_LINKS).build();
110     }
111     
112     @Override
113     protected Vendor makeEntityWithUpdates(Vendor from)
114     {
115         return vendor(from).build();
116     }
117     
118     @Override
119     protected Vendor createEntity(Vendor entity) throws MpacException
120     {
121         return tester.client.vendors().createVendor(entity);
122     }
123     
124     @Override
125     protected Vendor updateEntity(Vendor original, Vendor updated) throws MpacException
126     {
127         return tester.client.vendors().updateVendor(original, updated);
128     }
129     
130     private UriBuilder vendorsApi()
131     {
132         return UriBuilder.fromUri(HOST_BASE + FAKE_VENDORS_PATH);
133     }
134 }