Skip to content

Commit 25f9ec3

Browse files
author
salander85
committed
Assert productType exists and has nested attribute with self-reference
1 parent 5a31f5a commit 25f9ec3

File tree

2 files changed

+37
-15
lines changed

2 files changed

+37
-15
lines changed

src/integration-test/java/com/commercetools/sync/integration/commons/utils/ProductTypeITUtils.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -443,7 +443,11 @@ public static void assertAttributesAreEqual(
443443

444444
assertThat(attribute.getLabel()).isEqualTo(attributeDraft.getLabel());
445445

446-
assertThat(attribute.getType()).isEqualTo(attributeDraft.getType());
446+
final boolean isAttributeOfTypeSetType =
447+
attribute.getType() instanceof AttributeSetType;
448+
if (!isAttributeOfTypeSetType) {
449+
assertThat(attribute.getType()).isEqualTo(attributeDraft.getType());
450+
}
447451

448452
assertThat(attribute.getInputHint())
449453
.isEqualTo(
@@ -461,11 +465,11 @@ public static void assertAttributesAreEqual(
461465
ofNullable(attributeDraft.getAttributeConstraint())
462466
.orElse(AttributeConstraintEnum.NONE));
463467

464-
if (attribute.getType().getClass() == AttributeEnumType.class) {
468+
if (attribute.getType() instanceof AttributeEnumType) {
465469
assertPlainEnumsValuesAreEqual(
466470
((AttributeEnumType) attribute.getType()).getValues(),
467471
((AttributeEnumType) attributeDraft.getType()).getValues());
468-
} else if (attribute.getType().getClass() == AttributeLocalizedEnumType.class) {
472+
} else if (attribute.getType() instanceof AttributeLocalizedEnumType) {
469473
assertLocalizedEnumsValuesAreEqual(
470474
((AttributeLocalizedEnumType) attribute.getType()).getValues(),
471475
((AttributeLocalizedEnumType) attributeDraft.getType()).getValues());

src/integration-test/java/com/commercetools/sync/integration/ctpprojectsource/producttypes/ProductTypeWithNestedAttributeSyncIT.java

Lines changed: 30 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,23 +5,28 @@
55
import static com.commercetools.sync.integration.commons.utils.ProductTypeITUtils.PRODUCT_TYPE_DESCRIPTION_5;
66
import static com.commercetools.sync.integration.commons.utils.ProductTypeITUtils.PRODUCT_TYPE_KEY_5;
77
import static com.commercetools.sync.integration.commons.utils.ProductTypeITUtils.PRODUCT_TYPE_NAME_5;
8+
import static com.commercetools.sync.integration.commons.utils.ProductTypeITUtils.assertAttributesAreEqual;
9+
import static com.commercetools.sync.integration.commons.utils.ProductTypeITUtils.getProductTypeByKey;
810
import static com.commercetools.sync.integration.commons.utils.ProductTypeITUtils.populateProjectWithNestedAttributes;
911
import static com.commercetools.sync.integration.commons.utils.ProductTypeITUtils.removeAttributeReferencesAndDeleteProductTypes;
1012
import static com.commercetools.sync.integration.commons.utils.TestClientUtils.CTP_SOURCE_CLIENT;
1113
import static com.commercetools.sync.integration.commons.utils.TestClientUtils.CTP_TARGET_CLIENT;
1214
import static org.assertj.core.api.Assertions.assertThat;
1315

1416
import com.commercetools.api.models.common.LocalizedString;
17+
import com.commercetools.api.models.product_type.AttributeDefinition;
1518
import com.commercetools.api.models.product_type.AttributeDefinitionDraft;
1619
import com.commercetools.api.models.product_type.AttributeDefinitionDraftBuilder;
1720
import com.commercetools.api.models.product_type.AttributeNestedType;
1821
import com.commercetools.api.models.product_type.AttributeNestedTypeBuilder;
22+
import com.commercetools.api.models.product_type.AttributeSetType;
1923
import com.commercetools.api.models.product_type.AttributeSetTypeBuilder;
2024
import com.commercetools.api.models.product_type.ProductType;
2125
import com.commercetools.api.models.product_type.ProductTypeChangeLabelActionBuilder;
2226
import com.commercetools.api.models.product_type.ProductTypeDraft;
2327
import com.commercetools.api.models.product_type.ProductTypeDraftBuilder;
2428
import com.commercetools.api.models.product_type.ProductTypePagedQueryResponse;
29+
import com.commercetools.api.models.product_type.ProductTypeReference;
2530
import com.commercetools.api.models.product_type.ProductTypeReferenceBuilder;
2631
import com.commercetools.api.models.product_type.ProductTypeUpdateAction;
2732
import com.commercetools.sync.commons.utils.CaffeineReferenceIdToKeyCacheImpl;
@@ -34,6 +39,7 @@
3439
import io.vrap.rmf.base.client.ApiHttpResponse;
3540
import java.util.ArrayList;
3641
import java.util.List;
42+
import java.util.Optional;
3743
import java.util.stream.Collectors;
3844
import org.junit.jupiter.api.AfterAll;
3945
import org.junit.jupiter.api.BeforeEach;
@@ -133,20 +139,12 @@ void sync_WithProductTypeReferencingItselfAsAttribute_ShouldCreateProductType()
133139
.type(
134140
AttributeSetTypeBuilder.of()
135141
.elementType(
136-
AttributeSetTypeBuilder.of()
137-
.elementType(
138-
AttributeSetTypeBuilder.of()
139-
.elementType(
140-
AttributeNestedTypeBuilder.of()
141-
.typeReference(
142-
ProductTypeReferenceBuilder.of()
143-
.id(PRODUCT_TYPE_KEY_5)
144-
.build())
145-
.build())
146-
.build())
142+
AttributeNestedTypeBuilder.of()
143+
.typeReference(
144+
ProductTypeReferenceBuilder.of().id(PRODUCT_TYPE_KEY_5).build())
147145
.build())
148146
.build())
149-
.isSearchable(false)
147+
.isSearchable(true)
150148
.isRequired(false)
151149
.build();
152150

@@ -190,6 +188,26 @@ void sync_WithProductTypeReferencingItselfAsAttribute_ShouldCreateProductType()
190188
"Summary: 1 product types were processed in total"
191189
+ " (1 created, 0 updated, 0 failed to sync and 0 product types with at least one NestedType or a Set"
192190
+ " of NestedType attribute definition(s) referencing a missing product type).");
191+
192+
final Optional<ProductType> newProductType =
193+
getProductTypeByKey(CTP_TARGET_CLIENT, PRODUCT_TYPE_KEY_5);
194+
assertThat(newProductType).isPresent();
195+
assertThat(newProductType)
196+
.hasValueSatisfying(
197+
productType -> {
198+
assertAttributesAreEqual(productType.getAttributes(), List.of(nestedTypeAttr));
199+
final AttributeDefinition attributeDefinition1 = productType.getAttributes().get(0);
200+
assertThat(attributeDefinition1.getType()).isInstanceOf(AttributeSetType.class);
201+
final AttributeSetType attributeSetType =
202+
(AttributeSetType) attributeDefinition1.getType();
203+
assertThat(attributeSetType.getElementType()).isInstanceOf(AttributeNestedType.class);
204+
final AttributeNestedType attributeNestedType =
205+
(AttributeNestedType) attributeSetType.getElementType();
206+
assertThat(attributeNestedType.getTypeReference())
207+
.isInstanceOf(ProductTypeReference.class);
208+
assertThat(attributeNestedType.getTypeReference().getId())
209+
.isEqualTo(productType.getId());
210+
});
193211
}
194212

195213
@Test

0 commit comments

Comments
 (0)