6 declare(strict_types=1);
20 public function testAllFieldsGroupedProduct()
22 $productSku =
'grouped-product';
26 products(filter: {sku: {eq:
"{$productSku}"}}) {
34 ...
on GroupedProduct {
56 $this->assertGroupedProductItems($groupedProduct,
$response[
'products'][
'items'][0]);
59 private function assertGroupedProductItems(
$product, $actualResponse)
61 $this->assertNotEmpty(
62 $actualResponse[
'items'],
63 "Precondition failed: 'grouped product items' must not be empty" 65 $this->assertEquals(2, count($actualResponse[
'items']));
66 $groupedProductLinks =
$product->getProductLinks();
67 foreach ($actualResponse[
'items'] as $itemIndex => $bundleItems) {
68 $this->assertNotEmpty($bundleItems);
69 $associatedProductSku = $groupedProductLinks[$itemIndex]->getLinkedProductSku();
73 $associatedProduct = $productsRepository->get($associatedProductSku);
76 $groupedProductLinks[$itemIndex]->getExtensionAttributes()->getQty(),
77 $actualResponse[
'items'][$itemIndex][
'qty']
80 $groupedProductLinks[$itemIndex]->getPosition(),
81 $actualResponse[
'items'][$itemIndex][
'position']
84 $actualResponse[
'items'][$itemIndex][
'product'],
86 'sku' => $associatedProductSku,
87 'type_id' => $groupedProductLinks[$itemIndex]->getLinkedProductType(),
88 'url_key'=> $associatedProduct->getUrlKey(),
89 'name' => $associatedProduct->getName()
assertResponseFields($actualResponse, $assertionMap)
taxRateField this edit on("click.mselect-delete", ".mselect-delete", function() { if(!confirm('<?=/*@escapeNotVerified */__( 'Do you really want to delete this tax rate?') ?>')) { return;} var that=$(this), select=that.closest('.mselect-list').prev(), rateValue=that.parent().find( 'input[type="checkbox"]').val();$( 'body').trigger( 'processStart');var ajaxOptions={ type:'POST', data:{ tax_calculation_rate_id:rateValue, form_key:$( 'input[name="form_key"]').val() }, dataType:'json', url:'<?=/*@escapeNotVerified */$block->getTaxRateDeleteUrl() ?>', success:function(result, status) { $( 'body').trigger( 'processStop');if(result.success) { that.parent().remove();select.find( 'option').each(function() { if(this.value===rateValue) { $(this).remove();} });select.trigger( 'change.hiddenSelect');} else { if(result.error_message) alert({ content:result.error_message });else alert({ content:'<?=/*@escapeNotVerified */__( 'An error occurred') ?>' });} }, error:function() { $( 'body').trigger( 'processStop');alert({ content:'<?=/*@escapeNotVerified */__( 'An error occurred') ?>' });} };$.ajax(ajaxOptions);}) .on( 'click.mselectAdd'
graphQlQuery(string $query, array $variables=[], string $operationName='', array $headers=[])