You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
bandolier-website/tests/models/user_payment.js

58 lines
1.6 KiB

import test from "ava";
import {random_user} from "../../lib/testing.js";
import { User, Payment } from "../../lib/models.js";
test('test user can have many payments', async (t) => {
let buyer_id = undefined;
let buyer_pays = undefined;
try {
let fake = random_user();
t.not(fake, undefined);
let buyer = await User.insert(fake);
t.not(buyer, undefined);
t.is(buyer.full_name, fake.full_name);
// use this to delete in the finally
buyer_id = buyer.id;
// confirm that we get unpaid when there's no payment
const [unpaid, paytest] = await Payment.paid(buyer);
t.false(unpaid);
t.is(paytest, undefined);
let pay1 = await Payment.fake_payment();
t.not(pay1, undefined);
await Payment.update({id: pay1.id}, {user_id: buyer.id});
pay1.user_id = buyer.id; // quick dirty update
// test payment has user
// TODO: test payment with multiple users
let pay1_user = await pay1.user;
t.not(pay1_user, undefined);
t.is(pay1_user.id, buyer.id);
// now test the reverse users has payments
buyer_pays = await buyer.payments();
t.not(buyer_pays, undefined);
t.not(buyer_pays.length > 0, undefined);
t.is(buyer_pays[0].id, pay1.id);
const [paid, payment] = await Payment.paid(buyer);
t.true(paid);
t.is(payment.status, "complete");
} catch(error) {
console.log(error);
t.fail(error.message);
} finally {
if(buyer_id) await User.delete({id: buyer_id});
if(buyer_pays) {
for(let pay of buyer_pays) {
await Payment.delete({id: pay.id});
}
}
}
});