Skip to content

Commit cbc5043

Browse files
author
salander85
committed
Correct reference resolution of producttype attribute
1 parent 57329e3 commit cbc5043

File tree

2 files changed

+96
-5
lines changed

2 files changed

+96
-5
lines changed

src/main/java/com/commercetools/sync/producttypes/helpers/ResourceToDraftConverters.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public static AttributeDefinitionDraftBuilder toAttributeDefinitionDraftBuilder(
3939
.label(attributeDefinition.getLabel())
4040
.isSearchable(attributeDefinition.getIsSearchable())
4141
.inputTip(attributeDefinition.getInputTip())
42-
.isRequired(attributeDefinition.getIsSearchable())
42+
.isRequired(attributeDefinition.getIsRequired())
4343
.attributeConstraint(attributeDefinition.getAttributeConstraint())
4444
.inputHint(attributeDefinition.getInputHint());
4545
}

src/test/java/com/commercetools/sync/producttypes/utils/ProductTypeTransformUtilsTest.java

Lines changed: 95 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package com.commercetools.sync.producttypes.utils;
22

33
import static com.commercetools.api.models.common.LocalizedString.ofEnglish;
4+
import static com.commercetools.sync.producttypes.MockBuilderUtils.createMockAttributeDefinitionDraftBuilder;
5+
import static com.commercetools.sync.producttypes.MockBuilderUtils.createMockProductTypeDraftBuilder;
46
import static io.vrap.rmf.base.client.utils.json.JsonUtils.fromJsonString;
57
import static java.util.Arrays.asList;
68
import static java.util.Collections.emptyList;
@@ -16,7 +18,9 @@
1618
import com.commercetools.api.models.graph_ql.GraphQLRequest;
1719
import com.commercetools.api.models.graph_ql.GraphQLResponse;
1820
import com.commercetools.api.models.product_type.AttributeDefinition;
21+
import com.commercetools.api.models.product_type.AttributeDefinitionDraft;
1922
import com.commercetools.api.models.product_type.AttributeNestedType;
23+
import com.commercetools.api.models.product_type.AttributeReferenceTypeId;
2024
import com.commercetools.api.models.product_type.AttributeSetType;
2125
import com.commercetools.api.models.product_type.AttributeTypeBuilder;
2226
import com.commercetools.api.models.product_type.ProductType;
@@ -26,7 +30,6 @@
2630
import com.commercetools.sync.commons.utils.CaffeineReferenceIdToKeyCacheImpl;
2731
import com.commercetools.sync.commons.utils.ReferenceIdToKeyCache;
2832
import com.commercetools.sync.producttypes.MockBuilderUtils;
29-
import com.commercetools.sync.producttypes.helpers.ResourceToDraftConverters;
3033
import io.vrap.rmf.base.client.ApiHttpResponse;
3134
import java.util.List;
3235
import java.util.UUID;
@@ -36,6 +39,7 @@
3639

3740
class ProductTypeTransformUtilsTest {
3841

42+
private static final String MAIN_PRODUCT_TYPE_KEY = "main-product-type";
3943
final ReferenceIdToKeyCache referenceIdToKeyCache = new CaffeineReferenceIdToKeyCacheImpl();
4044

4145
@AfterEach
@@ -61,7 +65,8 @@ void mapToProductDrafts_WithProductTypeWithNoAttributeDefs_ShouldReturnProductTy
6165

6266
// assertion
6367
assertThat(productTypeDrafts)
64-
.containsExactly(ResourceToDraftConverters.toProductTypeDraft(productTypeFoo));
68+
.containsExactly(
69+
createMockProductTypeDraftBuilder().key("foo").attributes(emptyList()).build());
6570
}
6671

6772
@Test
@@ -101,10 +106,96 @@ void mapToProductDrafts_WithNoReferences_ShouldReturnCorrectProductTypeDrafts()
101106
.join();
102107

103108
// assertion
109+
assertThat(productTypeDrafts)
110+
.containsExactlyInAnyOrder(
111+
createMockProductTypeDraftBuilder()
112+
.key(productTypeFoo.getKey())
113+
.attributes(createMockAttributeDefinitionDraftBuilder().build())
114+
.build(),
115+
createMockProductTypeDraftBuilder()
116+
.key(productTypeBar.getKey())
117+
.attributes(
118+
createMockAttributeDefinitionDraftBuilder()
119+
.name(numberAttr.getName())
120+
.label(numberAttr.getLabel())
121+
.type(numberAttr.getType())
122+
.build())
123+
.build());
124+
}
125+
126+
@Test
127+
void mapToProductDrafts_WithReferencesAndSetOfReferences_ShouldResolveAttributesCorrectly() {
128+
// preparation
129+
final AttributeDefinition attributeProductReference =
130+
MockBuilderUtils.createMockAttributeDefinitionBuilder()
131+
.name("product-reference")
132+
.label(ofEnglish("product-reference"))
133+
.isRequired(false)
134+
.isSearchable(true)
135+
.type(
136+
attributeTypeBuilder ->
137+
attributeTypeBuilder
138+
.referenceBuilder()
139+
.referenceTypeId(AttributeReferenceTypeId.PRODUCT))
140+
.build();
141+
final AttributeDefinition colorProductReferenceSetAttribute =
142+
MockBuilderUtils.createMockAttributeDefinitionBuilder()
143+
.name("product-reference-set")
144+
.label(ofEnglish("product-reference-set"))
145+
.isRequired(false)
146+
.isSearchable(true)
147+
.type(
148+
attributeTypeBuilder ->
149+
attributeTypeBuilder
150+
.setBuilder()
151+
.elementType(
152+
typeBuilder ->
153+
typeBuilder
154+
.referenceBuilder()
155+
.referenceTypeId(AttributeReferenceTypeId.PRODUCT)))
156+
.build();
157+
158+
final ProductType mainProductType =
159+
MockBuilderUtils.createMockProductTypeBuilder()
160+
.key(MAIN_PRODUCT_TYPE_KEY)
161+
.name(MAIN_PRODUCT_TYPE_KEY)
162+
.description("a main product type")
163+
.attributes(attributeProductReference, colorProductReferenceSetAttribute)
164+
.build();
165+
166+
// test
167+
final List<ProductTypeDraft> productTypeDrafts =
168+
ProductTypeTransformUtils.toProductTypeDrafts(
169+
mock(ProjectApiRoot.class), referenceIdToKeyCache, singletonList(mainProductType))
170+
.join();
171+
172+
// assertion
173+
final AttributeDefinitionDraft productReferenceSetAttrDraft =
174+
createMockAttributeDefinitionDraftBuilder()
175+
.name(colorProductReferenceSetAttribute.getName())
176+
.label(colorProductReferenceSetAttribute.getLabel())
177+
.isRequired(false)
178+
.isSearchable(true)
179+
.type(colorProductReferenceSetAttribute.getType())
180+
.build();
181+
182+
final AttributeDefinitionDraft productReferenceAttrDraft =
183+
createMockAttributeDefinitionDraftBuilder()
184+
.name(attributeProductReference.getName())
185+
.label(attributeProductReference.getLabel())
186+
.isRequired(false)
187+
.isSearchable(true)
188+
.type(attributeProductReference.getType())
189+
.build();
190+
104191
assertThat(productTypeDrafts)
105192
.containsExactly(
106-
ResourceToDraftConverters.toProductTypeDraft(productTypeFoo),
107-
ResourceToDraftConverters.toProductTypeDraft(productTypeBar));
193+
createMockProductTypeDraftBuilder()
194+
.name(MAIN_PRODUCT_TYPE_KEY)
195+
.key(MAIN_PRODUCT_TYPE_KEY)
196+
.description("a main product type")
197+
.attributes(productReferenceAttrDraft, productReferenceSetAttrDraft)
198+
.build());
108199
}
109200

110201
@Test

0 commit comments

Comments
 (0)