11package com .commercetools .sync .producttypes .utils ;
22
33import 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 ;
46import static io .vrap .rmf .base .client .utils .json .JsonUtils .fromJsonString ;
57import static java .util .Arrays .asList ;
68import static java .util .Collections .emptyList ;
1618import com .commercetools .api .models .graph_ql .GraphQLRequest ;
1719import com .commercetools .api .models .graph_ql .GraphQLResponse ;
1820import com .commercetools .api .models .product_type .AttributeDefinition ;
21+ import com .commercetools .api .models .product_type .AttributeDefinitionDraft ;
1922import com .commercetools .api .models .product_type .AttributeNestedType ;
23+ import com .commercetools .api .models .product_type .AttributeReferenceTypeId ;
2024import com .commercetools .api .models .product_type .AttributeSetType ;
2125import com .commercetools .api .models .product_type .AttributeTypeBuilder ;
2226import com .commercetools .api .models .product_type .ProductType ;
2630import com .commercetools .sync .commons .utils .CaffeineReferenceIdToKeyCacheImpl ;
2731import com .commercetools .sync .commons .utils .ReferenceIdToKeyCache ;
2832import com .commercetools .sync .producttypes .MockBuilderUtils ;
29- import com .commercetools .sync .producttypes .helpers .ResourceToDraftConverters ;
3033import io .vrap .rmf .base .client .ApiHttpResponse ;
3134import java .util .List ;
3235import java .util .UUID ;
3639
3740class 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