UNPKG

@apite/magento2-utility

Version:

Shopgate WebCheckout utility for Magento 2 extensions

82 lines (72 loc) 3.47 kB
'use strict' const path = require('path') const loadFixtures = require('../fixtureLoader') const { formatAxiosResponse, formatAxiosRequest } = require('../../src/services/logDecorator')() describe('should handle REST error responses', () => { const fixtures = loadFixtures(path.join(__dirname, '__fixtures__', 'response', 'rest')) Object.keys(fixtures).forEach((fixtureName) => { it(`Type check for fixture "${fixtureName}"`, async () => { const response = fixtures[fixtureName] const formattedResponse = formatAxiosResponse(response) expect(typeof formattedResponse.call).toBe('string') expect(typeof formattedResponse.status).toBe('string') expect(typeof formattedResponse.statusText).toBe('string') expect(typeof formattedResponse.message).toBe('string') if (fixtureName === 'badLogin') { expect(typeof formattedResponse.data.query).toBe('string') } }) }) }) describe('should handle REST error requests', () => { const fixtures = loadFixtures(path.join(__dirname, '__fixtures__', 'request', 'rest')) Object.keys(fixtures).forEach((fixtureName) => { it(`Type check for fixture "${fixtureName}"`, async () => { const request = fixtures[fixtureName] const formattedRequest = formatAxiosRequest(request) expect(typeof formattedRequest.call).toBe('string') expect(typeof formattedRequest.headers.Store).toBe('undefined') expect(typeof formattedRequest.data.query).toBe('undefined') expect(typeof formattedRequest.data.variables).toBe('undefined') if (fixtureName.includes('.customer')) { expect(typeof formattedRequest.headers.Authorization).toBe('string') expect(formattedRequest.headers.Authorization).toHaveLength(13) } if (fixtureName === 'productSkuMap.customer') { expect(Array.isArray(formattedRequest.params.ids)).toBe(true) expect(typeof formattedRequest.params.ids[0]).toBe('string') } }) }) }) describe('should handle GQL error requests', () => { const fixtures = loadFixtures(path.join(__dirname, '__fixtures__', 'request', 'gql')) Object.keys(fixtures).forEach((fixtureName) => { it(`Type check for fixture "${fixtureName}"`, async () => { const request = fixtures[fixtureName] const formattedRequest = formatAxiosRequest(request) expect(typeof formattedRequest.call).toBe('string') expect(typeof formattedRequest.headers.Store).toBe('string') expect(typeof formattedRequest.data.query).toBe('string') if (fixtureName.includes('addProducts')) { expect(typeof formattedRequest.data.variables).toBe('string') expect(formattedRequest.data.variables).toContain('***') } if (fixtureName.includes('.customer')) { expect(typeof formattedRequest.headers.Authorization).toBe('string') expect(formattedRequest.headers.Authorization).toHaveLength(13) } }) }) }) describe('should handle GQL error responses', () => { const fixtures = loadFixtures(path.join(__dirname, '__fixtures__', 'response', 'gql')) Object.keys(fixtures).forEach((fixtureName) => { it(`Type check for fixture "${fixtureName}"`, async () => { const response = fixtures[fixtureName] const formattedResponse = formatAxiosResponse(response) expect(formattedResponse.errors).toHaveLength(1) expect(formattedResponse.errors[0]).toEqual('Could not find a cart with ID "***"') }) }) })