8
8
namespace Magento \GraphQl \Cms ;
9
9
10
10
use Magento \Cms \Api \BlockRepositoryInterface ;
11
+ use Magento \Store \Model \Store ;
11
12
use Magento \TestFramework \Helper \Bootstrap ;
12
13
use Magento \TestFramework \TestCase \GraphQl \ResponseContainsErrorsException ;
13
14
use Magento \TestFramework \TestCase \GraphQlAbstract ;
@@ -206,8 +207,9 @@ public function testGetEnabledAndDisabledCmsBlockInOneRequest()
206
207
$ responseData ['errors ' ][0 ]['message ' ]
207
208
);
208
209
}
210
+
209
211
/**
210
- * Verify the CMS Block per storeview
212
+ * Verify correct CMS block information per store
211
213
*
212
214
* @magentoApiDataFixture Magento/Store/_files/multiple_websites_with_store_groups_stores.php
213
215
* @magentoApiDataFixture Magento/Cms/_files/blocks_for_different_stores.php
@@ -216,11 +218,79 @@ public function testGetCmsBlockPerSpecificStore(): void
216
218
{
217
219
$ blockIdentitifier1 = 'test-block ' ;
218
220
$ blockIdentitifier2 = 'test-block-2 ' ;
219
- $ storeCode = 'third_store_view ' ;
220
- $ this ->getCmsBlockQuery ($ blockIdentitifier2 , $ storeCode );
221
+ $ secondStoreCode = 'second_store_view ' ;
222
+ $ thirdStoreCode = 'third_store_view ' ;
223
+
224
+ //Verify the correct block information for second store is returned
225
+ $ cmsBlockResponseSecondStore = $ this ->getCmsBlockQuery ($ blockIdentitifier1 , $ secondStoreCode );
226
+ self ::assertArrayHasKey ('cmsBlocks ' , $ cmsBlockResponseSecondStore );
227
+ self ::assertArrayHasKey ('items ' , $ cmsBlockResponseSecondStore ['cmsBlocks ' ]);
228
+ self ::assertEquals ('test-block ' , $ cmsBlockResponseSecondStore ['cmsBlocks ' ]['items ' ][0 ]['identifier ' ]);
229
+ self ::assertEquals ('Second store block ' , $ cmsBlockResponseSecondStore ['cmsBlocks ' ]['items ' ][0 ]['title ' ]);
230
+ self ::assertEquals ('second_store_view ' , $ cmsBlockResponseSecondStore ['storeConfig ' ]['code ' ]);
231
+
232
+ //Verify the correct block information for third store is returned
233
+ $ cmsBlockResponseThirdStore = $ this ->getCmsBlockQuery ($ blockIdentitifier1 , $ thirdStoreCode );
234
+ self ::assertArrayHasKey ('cmsBlocks ' , $ cmsBlockResponseThirdStore );
235
+ self ::assertArrayHasKey ('items ' , $ cmsBlockResponseThirdStore ['cmsBlocks ' ]);
236
+ self ::assertEquals ('test-block ' , $ cmsBlockResponseThirdStore ['cmsBlocks ' ]['items ' ][0 ]['identifier ' ]);
237
+ self ::assertEquals ('Third store block ' , $ cmsBlockResponseThirdStore ['cmsBlocks ' ]['items ' ][0 ]['title ' ]);
238
+ self ::assertEquals ('third_store_view ' , $ cmsBlockResponseThirdStore ['storeConfig ' ]['code ' ]);
221
239
240
+ //Verify the correct block information for second block for second store is returned
241
+ $ cmsBlockResponseSecondStore = $ this ->getCmsBlockQuery ($ blockIdentitifier2 , $ secondStoreCode );
242
+ self ::assertArrayHasKey ('cmsBlocks ' , $ cmsBlockResponseSecondStore );
243
+ self ::assertArrayHasKey ('items ' , $ cmsBlockResponseSecondStore ['cmsBlocks ' ]);
244
+ self ::assertEquals ('test-block-2 ' , $ cmsBlockResponseSecondStore ['cmsBlocks ' ]['items ' ][0 ]['identifier ' ]);
245
+ self ::assertEquals ('Second store block 2 ' , $ cmsBlockResponseSecondStore ['cmsBlocks ' ]['items ' ][0 ]['title ' ]);
246
+ self ::assertEquals ('second_store_view ' , $ cmsBlockResponseSecondStore ['storeConfig ' ]['code ' ]);
247
+
248
+ //Verify that exception is returned if block is not assigned to the store specified
249
+ $ this ->expectException (\Exception::class);
250
+ $ this ->expectExceptionMessage ('The CMS block with the "test-block-2" ID doesn \'t exist ' );
251
+
252
+ $ query =
253
+ <<<QUERY
254
+ {
255
+ cmsBlocks(identifiers: " $ blockIdentitifier2") {
256
+ items {
257
+ identifier
258
+ title
259
+ content
260
+ }
261
+ }
262
+ }
263
+ QUERY ;
264
+ $ headerMap ['Store ' ] = $ thirdStoreCode ;
265
+ $ this ->graphQlQuery ($ query , [], '' , $ headerMap );
222
266
}
223
- private function getCmsBlockQuery ($ blockIdentitifier , $ storeCode )
267
+
268
+ /**
269
+ * Verify CMS block for a disabled store
270
+ *
271
+ * @magentoApiDataFixture Magento/Store/_files/multiple_websites_with_store_groups_stores.php
272
+ * @magentoApiDataFixture Magento/Cms/_files/blocks_for_different_stores.php
273
+ */
274
+ public function testGetCmsBlockforDisabledStore (): void
275
+ {
276
+ $ blockIdentitifier1 = 'test-block ' ;
277
+ $ thirdStoreCode = 'third_store_view ' ;
278
+ $ store = Bootstrap::getObjectManager ()->get (Store::class);
279
+ $ store ->load ('third_store_view ' , 'code ' )->setIsActive (0 )->save ();
280
+ $ this ->expectException (\Exception::class);
281
+ $ this ->expectExceptionMessage ('Requested store is not found ' );
282
+ $ this ->getCmsBlockQuery ($ blockIdentitifier1 , $ thirdStoreCode );
283
+ }
284
+
285
+ /**
286
+ * Get cmsBlockQuery per store
287
+ *
288
+ * @param string $blockIdentitifier
289
+ * @param string $storeCode
290
+ * @return array
291
+ * @throws \Exception
292
+ */
293
+ private function getCmsBlockQuery ($ blockIdentitifier , $ storeCode ): array
224
294
{
225
295
$ query =
226
296
<<<QUERY
@@ -237,7 +307,6 @@ private function getCmsBlockQuery($blockIdentitifier, $storeCode)
237
307
QUERY ;
238
308
$ headerMap ['Store ' ] = $ storeCode ;
239
309
$ response = $ this ->graphQlQuery ($ query , [], '' , $ headerMap );
240
- self ::assertArrayHasKey ('cmsBlocks ' , $ response );
241
- self ::assertArrayHasKey ('items ' , $ response ['cmsBlocks ' ]);
310
+ return $ response ;
242
311
}
243
312
}
0 commit comments