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.
58 lines
1.6 KiB
58 lines
1.6 KiB
2 years ago
|
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});
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
});
|