8
8
namespace Magento \GraphQl \Quote ;
9
9
10
10
use Magento \Catalog \Api \ProductRepositoryInterface ;
11
- use Magento \Catalog \Model \Product ;
12
11
use Magento \Catalog \Test \Fixture \Attribute as AttributeFixture ;
13
12
use Magento \Catalog \Test \Fixture \Product as ProductFixture ;
14
13
use Magento \Framework \Exception \NoSuchEntityException ;
@@ -57,37 +56,43 @@ protected function setUp(): void
57
56
* @throws \Exception
58
57
*/
59
58
#[
60
- DataFixture(AttributeFixture::class, ['attribute_code ' => ' prod_attr ' ], as: 'attr ' ),
61
- DataFixture(ProductFixture::class, ['attribute_set_id ' => 13 ], as: 'product ' ),
59
+ DataFixture(AttributeFixture::class, ['is_visible_on_front ' => true ], as: 'attr ' ),
60
+ DataFixture(ProductFixture::class, ['attribute_set_id ' => 4 ], as: 'product ' ),
62
61
DataFixture(GuestCartFixture::class, as: 'cart ' ),
63
62
]
64
63
public function testAddProductsToEmptyCartWithVariables (): void
65
64
{
66
- /** @var Product $product */
65
+ $ attribute = $ this -> fixtures -> get ( ' attr ' );
67
66
$ product = $ this ->fixtures ->get ('product ' );
68
- $ product ->setData ( ' prod_attr ' , 'default_value ' );
67
+ $ product ->setCustomAttribute ( $ attribute -> getAttributeCode () , 'default_value ' );
69
68
$ this ->productRepository ->save ($ product );
69
+
70
+ $ this ->cleanCache ();
71
+
70
72
$ cart = $ this ->fixtures ->get ('cart ' );
71
73
$ maskedQuoteId = $ this ->quoteIdToMaskedQuoteIdInterface ->execute ((int ) $ cart ->getId ());
72
- $ query = $ this ->getAddToCartMutation ();
74
+ $ query = $ this ->getAddToCartMutation ($ attribute -> getAttributeCode () );
73
75
$ variables = $ this ->getAddToCartVariables ($ maskedQuoteId , 1 , $ product ->getSku ());
74
76
$ response = $ this ->graphQlMutation ($ query , $ variables );
75
77
$ result = $ response ['addProductsToCart ' ];
78
+
76
79
self ::assertEmpty ($ result ['user_errors ' ]);
77
80
self ::assertCount (1 , $ result ['cart ' ]['items ' ]);
78
81
79
82
$ cartItem = $ result ['cart ' ]['items ' ][0 ];
80
83
self ::assertEquals ($ product ->getSku (), $ cartItem ['product ' ]['sku ' ]);
84
+ self ::assertEquals ('default_value ' , $ cartItem ['product ' ][$ attribute ->getAttributeCode ()]);
81
85
self ::assertEquals (1 , $ cartItem ['quantity ' ]);
82
86
self ::assertEquals ($ product ->getFinalPrice (), $ cartItem ['prices ' ]['price ' ]['value ' ]);
83
87
}
84
88
85
89
/**
86
90
* Returns GraphQl mutation for adding item to cart
87
91
*
92
+ * @param string $customAttributeCode
88
93
* @return string
89
94
*/
90
- private function getAddToCartMutation (): string
95
+ private function getAddToCartMutation (string $ customAttributeCode ): string
91
96
{
92
97
return <<<MUTATION
93
98
mutation ( \$cartId: String!, \$products: [CartItemInput!]!) {
@@ -100,6 +105,7 @@ private function getAddToCartMutation(): string
100
105
product {
101
106
sku
102
107
name
108
+ {$ customAttributeCode }
103
109
thumbnail {
104
110
url
105
111
__typename
0 commit comments