@telstra/messaging
Version:
Telstra SDK Messaging
78 lines (67 loc) • 3.03 kB
text/typescript
import { AssertionError } from '@telstra/core';
import { FreeTrialNumbers } from '../../../src/classes/index.js';
import { TFreeTrialNumbers } from '../../../src/types/index.js';
import { Constants } from '../../shared/Constants.js';
import AUTH_CONFIG from '../../shared/credentials.json' with { type: 'json' };
import { afterAll, afterEach, beforeAll, describe, expect, it } from 'vitest';
import { server } from '../../shared/mswServer.js';
beforeAll(() => server.listen());
afterEach(() => server.resetHandlers());
afterAll(() => server.close());
const freeTrialNumbers = new FreeTrialNumbers(AUTH_CONFIG);
describe('FreeTrialNumbers', () => {
describe('fetch free-trial numbers', () => {
describe('when the client retrieves list of free-trial numbers', () => {
it('should return a result', async () => {
await expect(freeTrialNumbers.getAll()).resolves.toEqual(Constants.CREATE_FREETRIAL_NUMBERS_RESPONSE);
});
});
});
describe('create free-trial numbers list', () => {
describe('when the client sends a valid object', () => {
it('should pass having 10 chars', async () => {
const data = { freeTrialNumbers: ['0412345678'] };
await expect(freeTrialNumbers.create(data)).resolves.toEqual(data);
});
});
const testAssertionError = async (data: TFreeTrialNumbers, _: string) => {
const callback = async () => freeTrialNumbers.create(data);
await expect(callback).rejects.toThrow(AssertionError);
};
describe('when the client sends invalid [freeTrialNumbers] property', () => {
it('should throw an assertion error for invalid type [freeTrialNumbers] as array of numbers.', async () => {
// @ts-expect-error
const data: TFreeTrialNumbers = { freeTrialNumbers: [123456] };
await testAssertionError(data, 'Invalid type [freeTrialNumbers].');
});
it('should throw an assertion error for not fewer than 1 item.', async () => {
// @ts-expect-error
const data: TFreeTrialNumbers = { freeTrialNumbers: '+61234567890' };
await testAssertionError(data, 'Not fewer than 1 item.');
});
it('should throw an assertion error for invalid type [freeTrialNumbers] as array of strings with >10 characters.', async () => {
const data: TFreeTrialNumbers = { freeTrialNumbers: ['+61234567890'] };
await testAssertionError(data, 'Invalid type [freeTrialNumbers].');
});
it('should throw an assertion error for more than 10 items.', async () => {
const data: TFreeTrialNumbers = {
freeTrialNumbers: [
'0234567890',
'0234567891',
'0234567892',
'0234567893',
'0234567894',
'0234567895',
'0234567896',
'0234567897',
'0234567898',
'0234567899',
'0234567910',
'0234567911',
],
};
await testAssertionError(data, 'More than 10 items.');
});
});
});
});