declastruct-stripe-sdk
Version:
declarative control of stripe constructs, via declastruct
107 lines • 5.19 kB
JavaScript
"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