88 lines
2.7 KiB
TypeScript
88 lines
2.7 KiB
TypeScript
import * as chai from 'chai';
|
|
import 'mocha';
|
|
|
|
import {
|
|
CopperActivity,
|
|
CopperActivityType,
|
|
CopperCustomField,
|
|
CopperLead,
|
|
CopperOpportunity,
|
|
} from '../../../src/entities';
|
|
import {
|
|
CopperActivityResponse,
|
|
CopperActivityTypeCategory,
|
|
CopperActivityTypeResponse,
|
|
CopperCustomFieldResponse,
|
|
CopperSearchResponse,
|
|
parseActivities,
|
|
parseActivityTypes,
|
|
parseCustomFields,
|
|
parseLeads,
|
|
parseOpportunities,
|
|
} from '../../../src/parsers/copper';
|
|
import { chaiSetup } from '../../utils/chai_setup';
|
|
|
|
chaiSetup.configure();
|
|
const expect = chai.expect;
|
|
|
|
type CopperResponse = CopperSearchResponse | CopperCustomFieldResponse;
|
|
type CopperEntity = CopperLead | CopperActivity | CopperOpportunity | CopperActivityType | CopperCustomField;
|
|
|
|
import * as activityTypesApiResponse from '../../fixtures/copper/api_v1_activity_types.json';
|
|
import * as customFieldsApiResponse from '../../fixtures/copper/api_v1_custom_field_definitions.json';
|
|
import * as listActivitiesApiResponse from '../../fixtures/copper/api_v1_list_activities.json';
|
|
import * as listLeadsApiResponse from '../../fixtures/copper/api_v1_list_leads.json';
|
|
import * as listOpportunitiesApiResponse from '../../fixtures/copper/api_v1_list_opportunities.json';
|
|
import {
|
|
ParsedActivities,
|
|
ParsedActivityTypes,
|
|
ParsedCustomFields,
|
|
ParsedLeads,
|
|
ParsedOpportunities,
|
|
} from '../../fixtures/copper/parsed_entities';
|
|
|
|
interface TestCase {
|
|
input: CopperResponse[];
|
|
expected: CopperEntity[];
|
|
parseFn(input: CopperResponse[]): CopperEntity[];
|
|
}
|
|
const testCases: TestCase[] = [
|
|
{
|
|
input: listLeadsApiResponse,
|
|
expected: ParsedLeads,
|
|
parseFn: parseLeads,
|
|
},
|
|
{
|
|
input: (listActivitiesApiResponse as unknown) as CopperActivityResponse[],
|
|
expected: ParsedActivities,
|
|
parseFn: parseActivities,
|
|
},
|
|
{
|
|
input: listOpportunitiesApiResponse,
|
|
expected: ParsedOpportunities,
|
|
parseFn: parseOpportunities,
|
|
},
|
|
{
|
|
input: customFieldsApiResponse,
|
|
expected: ParsedCustomFields,
|
|
parseFn: parseCustomFields,
|
|
},
|
|
];
|
|
describe('Copper parser', () => {
|
|
it('parses API responses', () => {
|
|
testCases.forEach(testCase => {
|
|
const actual: CopperEntity[] = testCase.parseFn(testCase.input);
|
|
expect(actual).deep.equal(testCase.expected);
|
|
});
|
|
});
|
|
|
|
// special case because the API response is not an array
|
|
it('parses activity types API response', () => {
|
|
const actual: CopperActivityType[] = parseActivityTypes((activityTypesApiResponse as unknown) as Map<
|
|
CopperActivityTypeCategory,
|
|
CopperActivityTypeResponse[]
|
|
>);
|
|
expect(actual).deep.equal(ParsedActivityTypes);
|
|
});
|
|
});
|