UNPKG

declastruct-stripe-sdk

Version:

declarative control of stripe constructs, via declastruct

107 lines 5.19 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const domain_glossary_price_1 = require("domain-glossary-price"); const test_fns_1 = require("test-fns"); const uuid_fns_1 = require("uuid-fns"); const getStripeCredentials_1 = require("../../__test_assets__/getStripeCredentials"); const DeclaredStripeInvoiceItem_1 = require("../../domain/objects/DeclaredStripeInvoiceItem"); const DeclaredStripeProduct_1 = require("../../domain/objects/DeclaredStripeProduct"); const getStripe_1 = require("../auth/getStripe"); const setCustomer_1 = require("../customer/setCustomer"); const setInvoiceItem_1 = require("../items/setInvoiceItem"); const setProduct_1 = require("../product/setProduct"); const genInvoiceDraft_1 = require("./genInvoiceDraft"); const setInvoiceOpened_1 = require("./setInvoiceOpened"); const log = console; describe('setInvoiceIssued', () => { (0, test_fns_1.given)('a drafted invoice', () => { let customer; let invoice; let product; beforeAll(async () => { customer = await (0, setCustomer_1.setCustomer)({ finsert: { email: 'svc-protools.test.items@ahbode.dev', name: 'svc-protools.test.items', description: 'test', metadata: null, phone: null, }, }, { stripe: await (0, getStripe_1.getStripe)((0, getStripeCredentials_1.getStripeCredentials)()), log }); invoice = await (0, genInvoiceDraft_1.genInvoiceDraft)({ invoice: { customerRef: customer, exid: (0, uuid_fns_1.getUuid)(), config: { autoAdvance: false, collectionMethod: 'charge_automatically', }, description: null, dueDate: null, metadata: null, }, }, { stripe: await (0, getStripe_1.getStripe)((0, getStripeCredentials_1.getStripeCredentials)()), log }); product = await (0, setProduct_1.setProduct)({ finsert: new DeclaredStripeProduct_1.DeclaredStripeProduct({ id: `test_${(0, uuid_fns_1.getUuid)()}`, active: true, name: 'Ads Lead: Junk Removal, Jul 31 at 11:03am', description: null, price: new domain_glossary_price_1.Price({ amount: 19700, currency: 'USD', }), metadata: null, url: null, }), }, { stripe: await (0, getStripe_1.getStripe)((0, getStripeCredentials_1.getStripeCredentials)()), log }); await (0, setInvoiceItem_1.setInvoiceItem)({ upsert: new DeclaredStripeInvoiceItem_1.DeclaredStripeInvoiceItem({ invoiceRef: { id: invoice.id }, productRef: { id: product.id }, description: null, discounts: null, exid: `cnc.${(0, uuid_fns_1.getUuid)()}`, metadata: null, }), }, { stripe: await (0, getStripe_1.getStripe)((0, getStripeCredentials_1.getStripeCredentials)()), log }); }); (0, test_fns_1.when)('we attempt to issue it', () => { (0, test_fns_1.then)('it should succeed', async () => { const invoiceOpened = await (0, setInvoiceOpened_1.setInvoiceOpened)({ by: { primary: { id: invoice.id, }, }, }, { stripe: await (0, getStripe_1.getStripe)((0, getStripeCredentials_1.getStripeCredentials)()), log }); expect(invoiceOpened.status).toEqual('open'); }); (0, test_fns_1.then)('it should be idempotent', async () => { const invoiceOpened = await (0, setInvoiceOpened_1.setInvoiceOpened)({ by: { primary: { id: invoice.id, }, }, }, { stripe: await (0, getStripe_1.getStripe)((0, getStripeCredentials_1.getStripeCredentials)()), log }); expect(invoiceOpened.status).toEqual('open'); }); }); }); (0, test_fns_1.given)('a paid invoice', () => { (0, test_fns_1.when)('we attempt to issue it', () => { test_fns_1.then.todo('it should throw a bad request error', { because: 'you cant re-issue an invoice that was already paid', }, () => { }); }); }); (0, test_fns_1.given)('a voided invoice', () => { (0, test_fns_1.when)('we attempt to issue it', () => { test_fns_1.then.todo('it should throw a bad request error', { because: 'you cant re-issue an invoice that was already voided', }, () => { }); }); }); }); //# sourceMappingURL=setInvoiceOpened.integration.test.js.map