|
|
@@ -120,6 +120,81 @@ class CustomerOrderTest extends GraphQLTestCase
|
|
|
expect($data['edges'])->not()->toBeEmpty();
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Test: Order item baseImage is a JSON string, not a GraphQL object
|
|
|
+ */
|
|
|
+ public function test_customer_orders_item_base_image_is_json_string(): void
|
|
|
+ {
|
|
|
+ $testData = $this->createTestData();
|
|
|
+
|
|
|
+ \Webkul\Product\Models\ProductImage::query()->create([
|
|
|
+ 'product_id' => $testData['product']->id,
|
|
|
+ 'path' => 'product/15/test-image.webp',
|
|
|
+ 'position' => 1,
|
|
|
+ ]);
|
|
|
+
|
|
|
+ $query = <<<'GQL'
|
|
|
+ query getCustomerOrders {
|
|
|
+ customerOrders(first: 10) {
|
|
|
+ edges {
|
|
|
+ node {
|
|
|
+ _id
|
|
|
+ items {
|
|
|
+ edges {
|
|
|
+ node {
|
|
|
+ sku
|
|
|
+ name
|
|
|
+ baseImage
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ GQL;
|
|
|
+
|
|
|
+ $response = $this->authenticatedGraphQL($testData['customer'], $query);
|
|
|
+
|
|
|
+ if ($response->json('errors.0.message') && str_contains((string) $response->json('errors.0.message'), 'edges')) {
|
|
|
+ $query = <<<'GQL'
|
|
|
+ query getCustomerOrders {
|
|
|
+ customerOrders(first: 10) {
|
|
|
+ edges {
|
|
|
+ node {
|
|
|
+ _id
|
|
|
+ items {
|
|
|
+ sku
|
|
|
+ name
|
|
|
+ baseImage
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ GQL;
|
|
|
+
|
|
|
+ $response = $this->authenticatedGraphQL($testData['customer'], $query);
|
|
|
+ }
|
|
|
+
|
|
|
+ $response->assertOk();
|
|
|
+ expect($response->json('errors'))->toBeNull();
|
|
|
+
|
|
|
+ $item = $response->json('data.customerOrders.edges.0.node.items.edges.0.node')
|
|
|
+ ?? $response->json('data.customerOrders.edges.0.node.items.0');
|
|
|
+ expect($item)->not()->toBeNull();
|
|
|
+ expect($item['baseImage'])->toBeString();
|
|
|
+
|
|
|
+ $decoded = json_decode($item['baseImage'], true);
|
|
|
+ expect($decoded)->toBeArray()
|
|
|
+ ->and($decoded)->toHaveKeys([
|
|
|
+ 'small_image_url',
|
|
|
+ 'medium_image_url',
|
|
|
+ 'large_image_url',
|
|
|
+ 'original_image_url',
|
|
|
+ ]);
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* Test: Unauthenticated request returns error
|
|
|
*/
|
|
|
@@ -554,4 +629,42 @@ class CustomerOrderTest extends GraphQLTestCase
|
|
|
->toContain('orderCurrencyCode')
|
|
|
->toContain('createdAt');
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Test: CustomerOrderItem.baseImage is a GraphQL String
|
|
|
+ */
|
|
|
+ public function test_customer_order_item_base_image_schema_is_string(): void
|
|
|
+ {
|
|
|
+ $query = <<<'GQL'
|
|
|
+ {
|
|
|
+ __type(name: "CustomerOrderItem") {
|
|
|
+ name
|
|
|
+ fields {
|
|
|
+ name
|
|
|
+ type {
|
|
|
+ kind
|
|
|
+ name
|
|
|
+ ofType {
|
|
|
+ kind
|
|
|
+ name
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ GQL;
|
|
|
+
|
|
|
+ $response = $this->graphQL($query);
|
|
|
+
|
|
|
+ $response->assertSuccessful();
|
|
|
+
|
|
|
+ $fields = $response->json('data.__type.fields');
|
|
|
+ expect($fields)->not()->toBeNull();
|
|
|
+
|
|
|
+ $baseImage = collect($fields)->firstWhere('name', 'baseImage');
|
|
|
+ expect($baseImage)->not()->toBeNull();
|
|
|
+
|
|
|
+ $typeName = $baseImage['type']['name'] ?? $baseImage['type']['ofType']['name'] ?? null;
|
|
|
+ expect($typeName)->toBe('String');
|
|
|
+ }
|
|
|
}
|