ln-accounting
Version:
lnd accounting reports
160 lines (153 loc) • 3.64 kB
JavaScript
const {deepEqual} = require('node:assert').strict;
const test = require('node:test');
const {paymentsAsRecords} = require('./../../harmony');
const date = new Date().toISOString();
const tests = [
{
args: {
payments: [{
created_at: date,
destination: 'destination',
fee: 1,
id: 'id',
secret: 'secret',
tokens: 2,
}],
},
description: 'Payments as records',
expected: {
records: [
{
amount: -2,
category: 'payments',
created_at: date,
id: 'id',
notes: 'secret',
to_id: 'destination',
type: 'spend',
},
{
amount: -1,
category: 'payments',
created_at: date,
id: 'id:fee',
notes: 'Routing fee',
type: 'fee:network',
},
],
},
},
{
args: {
payments: [{
created_at: date,
destination: 'destination',
fee: 1,
id: 'id',
request: 'lnbc1pvjluezpp5qqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqypqdpl2pkx2ctnv5sxxmmwwd5kgetjypeh2ursdae8g6twvus8g6rfwvs8qun0dfjkxaq8rkx3yf5tcsyz3d73gafnh3cax9rn449d9p5uxz9ezhhypd0elx87sjle52x86fux2ypatgddc6k63n7erqz25le42c4u4ecky03ylcqca784w',
secret: 'secret',
tokens: 2,
}],
},
description: 'Payments as records',
expected: {
records: [
{
amount: -2,
category: 'payments',
created_at: date,
id: 'id',
notes: 'Please consider supporting this project',
to_id: 'destination',
type: 'spend',
},
{
amount: -1,
category: 'payments',
created_at: date,
id: 'id:fee',
notes: 'Routing fee',
type: 'fee:network',
},
],
},
},
{
args: {
payments: [{
created_at: date,
destination: 'destination',
fee: 1,
id: 'id',
request: 'request',
secret: 'secret',
tokens: 2,
}],
},
description: 'Payments as records when the request is weird',
expected: {
records: [
{
amount: -2,
category: 'payments',
created_at: date,
id: 'id',
notes: 'secret',
to_id: 'destination',
type: 'spend',
},
{
amount: -1,
category: 'payments',
created_at: date,
id: 'id:fee',
notes: 'Routing fee',
type: 'fee:network',
},
],
},
},
{
args: {
payments: [{
created_at: date,
destination: 'destination',
fee: 1,
id: 'id',
request: 'request',
secret: 'secret',
tokens: 2,
}],
public_key: 'destination'
},
description: 'Circular payments are represented',
expected: {
records: [
{
amount: -2,
category: 'payments',
created_at: date,
id: 'id',
notes: '[To Self] secret',
to_id: 'destination',
type: 'spend',
},
{
amount: -1,
category: 'payments',
created_at: date,
id: 'id:fee',
notes: 'Circular payment routing fee',
type: 'fee:network',
},
],
},
},
];
tests.forEach(({args, description, expected}) => {
return test(description, (t, end) => {
const {records} = paymentsAsRecords(args);
deepEqual(records, expected.records, 'Forwards formatted as records');
return end();
});
});