ghost-portal/packages/page-democracy/src/util.spec.ts
Jaco Greeff 96948370b6
Referendum change adjustments (#2538)
* Referendum change adjustments

* Headers

* Rework ordering

* Some small comments
2020-04-09 10:54:46 +02:00

47 lines
1.5 KiB
TypeScript

// Copyright 2017-2020 @polkadot/app-democracy authors & contributors
// This software may be modified and distributed under the terms
// of the Apache-2.0 license. See the LICENSE file for details.
import BN from 'bn.js';
import { TypeRegistry } from '@polkadot/types';
import { calcPassing } from '@polkadot/api-derive/democracy/util';
import { approxChanges } from './util';
const ACTUAL = {
sqrtElectorate: new BN('2949443240'),
votedAye: new BN('358406690000000000'),
votedNay: new BN('18942000000000000'),
votedTotal: new BN('136099900000000000')
};
const registry = new TypeRegistry();
function fmtBn (bn: BN): string {
return bn.toString().padStart(20).substr(0, 8);
}
describe('approxChanges', (): void => {
it('approximates where the points are', (): void => {
const threshold = registry.createType('VoteThreshold', 0);
console.time('approxChanges');
const { changeAye, changeNay } = approxChanges(threshold, ACTUAL.sqrtElectorate, ACTUAL);
console.timeEnd('approxChanges');
console.error(
'\n', 'changeAye', fmtBn(changeAye), fmtBn(ACTUAL.votedAye.sub(changeAye)),
'\n', 'changeNay', fmtBn(changeNay), fmtBn(ACTUAL.votedNay.add(changeNay))
);
expect(
calcPassing(threshold, ACTUAL.sqrtElectorate, { ...ACTUAL, votedAye: ACTUAL.votedAye.sub(changeAye) })
).toBe(false);
expect(
calcPassing(threshold, ACTUAL.sqrtElectorate, { ...ACTUAL, votedNay: ACTUAL.votedNay.add(changeNay) })
).toBe(false);
});
});