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 }