@apite/magento2-utility
Version:
Shopgate WebCheckout utility for Magento 2 extensions
82 lines (72 loc) • 3.47 kB
JavaScript
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 "***"')
})
})
})