| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509 |
- <?php
- namespace Webkul\BagistoApi\Tests\Feature\GraphQL;
- use Webkul\BagistoApi\Tests\GraphQLTestCase;
- /**
- * Theme Customizations GraphQL API Test Cases
- *
- * Organized by test categories:
- * - Get Theme Customizations Basic
- * - Get Theme Customizations - Filtered by Type
- * - Get Theme Customizations - Complete Details
- * - Single Theme Customization by ID
- */
- class ThemeCustomizationsTest extends GraphQLTestCase
- {
- /**
- * Test: Query theme customizations - Basic
- */
- public function test_theme_customizations_basic(): void
- {
- $query = <<<'GQL'
- query themeCustomizations($first: Int, $after: String) {
- themeCustomizations(first: $first, after: $after) {
- edges {
- node {
- id
- _id
- type
- name
- status
- themeCode
- sortOrder
- translation {
- locale
- options
- }
- }
- cursor
- }
- pageInfo {
- hasNextPage
- endCursor
- }
- totalCount
- }
- }
- GQL;
- $response = $this->graphQL($query, ['first' => 5]);
- $response->assertOk();
- $themeNode = $response->json('data.themeCustomizations.edges.0.node');
- expect($themeNode)->toHaveKeys([
- 'id',
- '_id',
- 'type',
- 'name',
- 'status',
- 'themeCode',
- 'sortOrder',
- 'translation',
- ]);
- expect($themeNode['translation'])->toHaveKeys([
- 'locale',
- 'options',
- ]);
- expect($response->json('data.themeCustomizations.edges.0.cursor'))->toBeString();
- $pageInfo = $response->json('data.themeCustomizations.pageInfo');
- expect($pageInfo)->toHaveKeys([
- 'hasNextPage',
- 'endCursor',
- ]);
- expect($response->json('data.themeCustomizations.totalCount'))->toBeInt();
- }
- /**
- * Test: Query theme customizations filtered by type
- */
- public function test_theme_customizations_filtered_by_type(): void
- {
- $query = <<<'GQL'
- query themeCustomizations($type: String) {
- themeCustomizations(type: $type) {
- edges {
- node {
- id
- _id
- type
- name
- status
- themeCode
- sortOrder
- translation {
- id
- _id
- themeCustomizationId
- locale
- options
- }
- translations {
- edges {
- node {
- id
- _id
- themeCustomizationId
- locale
- options
- }
- cursor
- }
- pageInfo {
- endCursor
- startCursor
- hasNextPage
- hasPreviousPage
- }
- totalCount
- }
- }
- cursor
- }
- pageInfo {
- endCursor
- startCursor
- hasNextPage
- hasPreviousPage
- }
- totalCount
- }
- }
- GQL;
- $response = $this->graphQL($query, ['type' => 'footer_links']);
- $response->assertOk();
- $themeNode = $response->json('data.themeCustomizations.edges.0.node');
- expect($themeNode)->toHaveKeys([
- 'id',
- '_id',
- 'type',
- 'name',
- 'status',
- 'themeCode',
- 'sortOrder',
- 'translation',
- 'translations',
- ]);
- expect($themeNode['translation'])->toHaveKeys([
- 'id',
- '_id',
- 'themeCustomizationId',
- 'locale',
- 'options',
- ]);
- $translationNode = $response->json('data.themeCustomizations.edges.0.node.translations.edges.0.node');
- expect($translationNode)->toHaveKeys([
- 'id',
- '_id',
- 'themeCustomizationId',
- 'locale',
- 'options',
- ]);
- $translationsPageInfo = $response->json('data.themeCustomizations.edges.0.node.translations.pageInfo');
- expect($translationsPageInfo)->toHaveKeys([
- 'endCursor',
- 'startCursor',
- 'hasNextPage',
- 'hasPreviousPage',
- ]);
- expect($response->json('data.themeCustomizations.edges.0.node.translations.totalCount'))->toBeInt();
- $pageInfo = $response->json('data.themeCustomizations.pageInfo');
- expect($pageInfo)->toHaveKeys([
- 'endCursor',
- 'startCursor',
- 'hasNextPage',
- 'hasPreviousPage',
- ]);
- expect($response->json('data.themeCustomizations.totalCount'))->toBeInt();
- }
- /**
- * Test: Query theme customizations with complete details
- */
- public function test_theme_customizations_complete_details(): void
- {
- $query = <<<'GQL'
- query themeCustomizations($first: Int, $after: String, $last: Int, $before: String, $type: String) {
- themeCustomizations(first: $first, after: $after, last: $last, before: $before, type: $type) {
- edges {
- node {
- id
- _id
- themeCode
- type
- name
- sortOrder
- status
- channelId
- createdAt
- updatedAt
- translation {
- id
- _id
- themeCustomizationId
- locale
- options
- }
- translations {
- edges {
- cursor
- node {
- id
- _id
- themeCustomizationId
- locale
- options
- }
- }
- pageInfo {
- endCursor
- startCursor
- hasNextPage
- hasPreviousPage
- }
- totalCount
- }
- }
- cursor
- }
- pageInfo {
- endCursor
- startCursor
- hasNextPage
- hasPreviousPage
- }
- totalCount
- }
- }
- GQL;
- $response = $this->graphQL($query, ['first' => 3]);
- $response->assertOk();
- $themeNode = $response->json('data.themeCustomizations.edges.0.node');
- expect($themeNode)->toHaveKeys([
- 'id',
- '_id',
- 'themeCode',
- 'type',
- 'name',
- 'sortOrder',
- 'status',
- 'channelId',
- 'createdAt',
- 'updatedAt',
- 'translation',
- 'translations',
- ]);
- expect($themeNode['translation'])->toHaveKeys([
- 'id',
- '_id',
- 'themeCustomizationId',
- 'locale',
- 'options',
- ]);
- $translationsNode = $response->json('data.themeCustomizations.edges.0.node.translations.edges.0.node');
- expect($translationsNode)->toHaveKeys([
- 'id',
- '_id',
- 'themeCustomizationId',
- 'locale',
- 'options',
- ]);
- expect($response->json('data.themeCustomizations.edges.0.node.translations.edges.0.cursor'))->toBeString();
- $translationsPageInfo = $response->json('data.themeCustomizations.edges.0.node.translations.pageInfo');
- expect($translationsPageInfo)->toHaveKeys([
- 'endCursor',
- 'startCursor',
- 'hasNextPage',
- 'hasPreviousPage',
- ]);
- expect($response->json('data.themeCustomizations.edges.0.node.translations.totalCount'))->toBeInt();
- expect($response->json('data.themeCustomizations.edges.0.cursor'))->toBeString();
- $pageInfo = $response->json('data.themeCustomizations.pageInfo');
- expect($pageInfo)->toHaveKeys([
- 'endCursor',
- 'startCursor',
- 'hasNextPage',
- 'hasPreviousPage',
- ]);
- expect($response->json('data.themeCustomizations.totalCount'))->toBeInt();
- }
- /**
- * Test: Query single theme customization by ID - Basic
- */
- public function test_get_theme_customization_by_id_basic(): void
- {
- $query = <<<'GQL'
- query getThemeCustomisation($id: ID!) {
- themeCustomization(id: $id) {
- id
- _id
- type
- name
- status
- themeCode
- translation {
- locale
- options
- }
- }
- }
- GQL;
- $response = $this->graphQL($query, ['id' => '/api/theme_customizations/1']);
- $response->assertOk();
- $theme = $response->json('data.themeCustomization');
- expect($theme)->toHaveKeys([
- 'id',
- '_id',
- 'type',
- 'name',
- 'status',
- 'themeCode',
- 'translation',
- ]);
- expect($theme['translation'])->toHaveKeys([
- 'locale',
- 'options',
- ]);
- }
- /**
- * Test: Query single theme customization by numeric ID
- */
- public function test_get_theme_customization_by_numeric_id(): void
- {
- $query = <<<'GQL'
- query getThemeCustomisation($id: ID!) {
- themeCustomization(id: $id) {
- id
- _id
- type
- name
- status
- themeCode
- sortOrder
- translation {
- locale
- options
- }
- }
- }
- GQL;
- $response = $this->graphQL($query, ['id' => '2']);
- $response->assertOk();
- $theme = $response->json('data.themeCustomization');
- expect($theme)->toHaveKeys([
- 'id',
- '_id',
- 'type',
- 'name',
- 'status',
- 'themeCode',
- 'sortOrder',
- 'translation',
- ]);
- expect($theme['translation'])->toHaveKeys([
- 'locale',
- 'options',
- ]);
- }
- /**
- * Test: Query single theme customization with complete details
- */
- public function test_get_theme_customization_complete_details(): void
- {
- $query = <<<'GQL'
- query getThemeCustomisation($id: ID!) {
- themeCustomization(id: $id) {
- id
- _id
- themeCode
- type
- name
- sortOrder
- status
- channelId
- createdAt
- updatedAt
- translation {
- id
- _id
- themeCustomizationId
- locale
- options
- }
- translations {
- edges {
- cursor
- node {
- id
- _id
- themeCustomizationId
- locale
- options
- }
- }
- pageInfo {
- endCursor
- startCursor
- hasNextPage
- hasPreviousPage
- }
- totalCount
- }
- }
- }
- GQL;
- $response = $this->graphQL($query, ['id' => '1']);
- $response->assertOk();
- $theme = $response->json('data.themeCustomization');
- expect($theme)->toHaveKeys([
- 'id',
- '_id',
- 'themeCode',
- 'type',
- 'name',
- 'sortOrder',
- 'status',
- 'channelId',
- 'createdAt',
- 'updatedAt',
- 'translation',
- 'translations',
- ]);
- expect($theme['translation'])->toHaveKeys([
- 'id',
- '_id',
- 'themeCustomizationId',
- 'locale',
- 'options',
- ]);
- $translationNode = $response->json('data.themeCustomization.translations.edges.0.node');
- expect($translationNode)->toHaveKeys([
- 'id',
- '_id',
- 'themeCustomizationId',
- 'locale',
- 'options',
- ]);
- expect($response->json('data.themeCustomization.translations.edges.0.cursor'))->toBeString();
- $pageInfo = $response->json('data.themeCustomization.translations.pageInfo');
- expect($pageInfo)->toHaveKeys([
- 'endCursor',
- 'startCursor',
- 'hasNextPage',
- 'hasPreviousPage',
- ]);
- expect($response->json('data.themeCustomization.translations.totalCount'))->toBeInt();
- }
- }
|