UNPKG

quickbooks-api

Version:

A modular TypeScript SDK for seamless integration with Intuit QuickBooks APIs. Provides robust authentication handling and future-ready foundation for accounting, payments, and commerce operations.

119 lines (99 loc) 4.91 kB
// Imports import { AuthProvider, Environment, ApiClient, AuthScopes, type SearchOptions, CompanyInfo } from '../src/app'; import { describe, expect, test } from 'bun:test'; // Describe the Company Info API describe('Live API: Company Info', async () => { // Initialize the Auth Provider const authProvider = new AuthProvider(process.env.QB_CLIENT_ID!, process.env.QB_CLIENT_SECRET!, process.env.REDIRECT_URI!, [ AuthScopes.Accounting, ]); // Deserialize the Token await authProvider.deserializeToken(process.env.SERIALIZED_TOKEN!, process.env.SECRET_KEY!); // Setup the API Client const apiClient = new ApiClient(authProvider, Environment.Sandbox); // Test retrieving company info test('should retrieve company info', async () => { // Get company info const companyInfo = await apiClient.companyInfo.getCompanyInfo(); // Test the Company Info expect(companyInfo).toBeDefined(); expect(companyInfo.Id).toBeDefined(); expect(companyInfo.CompanyName).toBeDefined(); expect(companyInfo.LegalName).toBeDefined(); }); // Test retrieving company info with search options test('should retrieve company info with search options', async () => { // Setup the Search Options const searchOptions: SearchOptions<CompanyInfo> = { maxResults: 1 }; // Get company info with search options const companyInfo = await apiClient.companyInfo.getCompanyInfo(searchOptions); // Test the Company Info expect(companyInfo).toBeDefined(); expect(companyInfo.Id).toBeDefined(); expect(companyInfo.CompanyName).toBeDefined(); expect(companyInfo.LegalName).toBeDefined(); }); // Test retrieving company info with raw query test('should retrieve company info with raw query', async () => { // Get company info with raw query const companyInfo = await apiClient.companyInfo.rawCompanyInfoQuery('select * from companyinfo'); // Test the Company Info expect(companyInfo).toBeDefined(); expect(companyInfo.Id).toBeDefined(); expect(companyInfo.CompanyName).toBeDefined(); expect(companyInfo.LegalName).toBeDefined(); }); // Test error handling for invalid raw query test('should throw error for invalid raw query', async () => { // Assert the Error expect(apiClient.companyInfo.rawCompanyInfoQuery('select * from invalid')).rejects.toThrow(); }); // Test company info contains expected fields test('should contain expected fields', async () => { // Get company info const companyInfo = await apiClient.companyInfo.getCompanyInfo(); // Test the Company Info has expected fields expect(companyInfo).toHaveProperty('Id'); expect(companyInfo).toHaveProperty('CompanyName'); expect(companyInfo).toHaveProperty('LegalName'); expect(companyInfo).toHaveProperty('CompanyAddr'); expect(companyInfo).toHaveProperty('Country'); expect(companyInfo).toHaveProperty('Email'); expect(companyInfo).toHaveProperty('WebAddr'); expect(companyInfo).toHaveProperty('SupportedLanguages'); expect(companyInfo).toHaveProperty('FiscalYearStartMonth'); }); // Test company info address structure test('should have valid address structure', async () => { // Get company info const companyInfo = await apiClient.companyInfo.getCompanyInfo(); // Test the Company Address expect(companyInfo.CompanyAddr).toBeDefined(); expect(companyInfo.CompanyAddr).toHaveProperty('Id'); expect(companyInfo.CompanyAddr).toHaveProperty('Line1'); expect(companyInfo.CompanyAddr).toHaveProperty('City'); expect(companyInfo.CompanyAddr).toHaveProperty('PostalCode'); }); // Test company info metadata test('should have valid metadata', async () => { // Get company info const companyInfo = await apiClient.companyInfo.getCompanyInfo(); // Test the Metadata expect(companyInfo.MetaData).toBeDefined(); expect(companyInfo.MetaData).toHaveProperty('CreateTime'); expect(companyInfo.MetaData).toHaveProperty('LastUpdatedTime'); }); // Test company info name values test('should have name values', async () => { // Get company info const companyInfo = await apiClient.companyInfo.getCompanyInfo(); // Test the Name Values expect(companyInfo.NameValue).toBeDefined(); expect(companyInfo.NameValue).toBeInstanceOf(Array); expect(companyInfo.NameValue.length).toBeGreaterThan(0); // Test the first Name Value const firstNameValue = companyInfo.NameValue[0]; expect(firstNameValue).toHaveProperty('Name'); expect(firstNameValue).toHaveProperty('Value'); }); });