import { Bundle, createAppTester, ZObject } from 'zapier-platform-core'; import App from '../../index'; import getBundle from '../../utils/getBundle'; import requestDb from '../../utils/requestDb'; const appTester = createAppTester(App); describe('triggers.company', () => { test('should succeed to subscribe', async () => { const bundle = getBundle({}); bundle.targetUrl = 'https://test.com'; const result = await appTester( App.triggers.company.operation.performSubscribe, bundle, ); expect(result).toBeDefined(); expect(result.id).toBeDefined(); const checkDbResult = await appTester( (z: ZObject, bundle: Bundle) => requestDb( z, bundle, `query webhook {webhook(filter: {id: {eq: "${result.id}"}}){id operation}}`, ), bundle, ); expect(checkDbResult.data.webhook.operation).toEqual( 'company', ); }); test('should succeed to unsubscribe', async () => { const bundle = getBundle({}); bundle.targetUrl = 'https://test.com'; const result = await appTester( App.triggers.company.operation.performSubscribe, bundle, ); const unsubscribeBundle = getBundle({}); unsubscribeBundle.subscribeData = { id: result.id }; const unsubscribeResult = await appTester( App.triggers.company.operation.performUnsubscribe, unsubscribeBundle, ); expect(unsubscribeResult).toBeDefined(); expect(unsubscribeResult.id).toEqual(result.id); const checkDbResult = await appTester( (z: ZObject, bundle: Bundle) => requestDb( z, bundle, `query webhook {webhook(filter: {id: {eq: "${result.id}"}}){id}}`, ), bundle, ); expect(checkDbResult.data.webhook).toEqual(null); }); test('should load company from webhook', async () => { const bundle = { cleanedRequest: { id: 'd6ccb1d1-a90b-4822-a992-a0dd946592c9', name: '', domainName: '', createdAt: '2023-10-19 10:10:12.490', address: '', employees: null, linkedinUrl: null, xUrl: null, annualRecurringRevenue: null, idealCustomerProfile: false, }, }; const results = await appTester( App.triggers.company.operation.perform, bundle, ); expect(results.length).toEqual(1); const company = results[0]; expect(company.id).toEqual('d6ccb1d1-a90b-4822-a992-a0dd946592c9'); }); it('should load companies from list', async () => { const bundle = getBundle({}); const results = await appTester( App.triggers.company.operation.performList, bundle, ); expect(results.length).toBeGreaterThan(1); const firstCompany = results[0]; expect(firstCompany.node.id).toBeDefined(); }); });