Skip to content
This repository has been archived by the owner on Apr 16, 2021. It is now read-only.

Commit

Permalink
Merge pull request #109 from wibsonorg/df-notary-fixes
Browse files Browse the repository at this point in the history
getResultsByBatPayId fixed [develop]
  • Loading branch information
nicoayala authored Sep 18, 2019
2 parents 56b4a1f + 3d413eb commit 74b51f9
Show file tree
Hide file tree
Showing 5 changed files with 168 additions and 4 deletions.
14 changes: 10 additions & 4 deletions notary-api/src/jobs/paymentsHelpers.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,12 @@ const reformat = R.pipe(
);

/**
* @function mergeByBatPayId Merges two groups of sellers, creating a ValidationResult.
* @param {BatPayID} id
* @function mergeGroups Merges two groups of sellers, creating a ValidationResult.
* @param {Array<Seller>} completed All sellers that completed the notarization successfully
* @param {Array<Seller>} rejected All sellers that failed the notarization done by the notary
* @returns {ValidationResult} A group of validated sellers.
* */
const mergeByBatPayId = (id, completed, rejected) => ({ completed, rejected });
const mergeGroups = (completed = [], rejected = []) => ({ completed, rejected });

/**
* @function getResultsByBatPayId Reorganizes the results between all completed and
Expand All @@ -44,6 +43,13 @@ const mergeByBatPayId = (id, completed, rejected) => ({ completed, rejected });
export const getResultsByBatPayId = (completedSellers, rejectedSellers) => {
const completed = reformat(completedSellers || []);
const rejected = reformat(rejectedSellers || []);
const uniqueIds = R.union(Object.keys(completed), Object.keys(rejected));

return R.mergeWithKey(mergeByBatPayId, completed, rejected);
return uniqueIds.reduce(
(all, id) => ({
...all,
[id]: mergeGroups(completed[id], rejected[id]),
}),
{},
);
};
47 changes: 47 additions & 0 deletions notary-api/test/jobs/paymentsHelpers.cases.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
export const paidSellers = [
{
id: 0,
address: '0x07e7b798e2c3bb030b2affa436cbe30c034561b0',
decryptionKeyHash: 'c3d711a72490f8cddc8a3e54b43c7e698b49c1c8baa2c4af3d8d489e9a6ec8797fe4be6ce86e160b87fd97a3190941d9a9e49f5734c2e7155b0f6af9b3231f41',
result: 'verified',
decryptionKeyEncryptedWithMasterKey: 'U2FsdGVkX186z65xavwXdf/+ENFXp1OqVkvW27NNUO8x2K9L0MrAye8z5nM1nCiMAavOeYN2qy5ZN8x8rPTDuLgSGwqYOJmV9HU/QRwUeWlQFnFdRhhXR3AbmDhw3Sac',
},
{
id: 1,
address: '0x07e7b798e2c3bb030b2affa436cbe30c034561b3',
decryptionKeyHash: 'c3d711a72490f8cddc8a3e54b43c7e698b49c1c8baa2c4af3d8d489e9a6ec8797fe4be6ce86e160b87fd97a3190941d9a9e49f5734c2e7155b0f6af9b3231f41',
result: 'verified',
decryptionKeyEncryptedWithMasterKey: 'U2FsdGVkX186z65xavwXdf/+ENFXp1OqVkvW27NNUO8x2K9L0MrAye8z5nM1nCiMAavOeYN2qy5ZN8x8rPTDuLgSGwqYOJmV9HU/QRwUeWlQFnFdRhhXR3AbmDhw3Sac',
},
{
id: 0,
address: '0x07e7b798e2c3bb030b2affa436cbe30c034561b4',
decryptionKeyHash: 'c3d711a72490f8cddc8a3e54b43c7e698b49c1c8baa2c4af3d8d489e9a6ec8797fe4be6ce86e160b87fd97a3190941d9a9e49f5734c2e7155b0f6af9b3231f41',
result: 'verified',
decryptionKeyEncryptedWithMasterKey: 'U2FsdGVkX186z65xavwXdf/+ENFXp1OqVkvW27NNUO8x2K9L0MrAye8z5nM1nCiMAavOeYN2qy5ZN8x8rPTDuLgSGwqYOJmV9HU/QRwUeWlQFnFdRhhXR3AbmDhw3Sac',
},
];

export const rejectedSellers = [
{
id: 0,
address: '0x07e7b798e2c3bb030b2affa436cbe30c034561b1',
decryptionKeyHash: 'c3d711a72490f8cddc8a3e54b43c7e698b49c1c8baa2c4af3d8d489e9a6ec8797fe4be6ce86e160b87fd97a3190941d9a9e49f5734c2e7155b0f6af9b3231f41',
result: 'rejected',
decryptionKeyEncryptedWithMasterKey: 'U2FsdGVkX186z65xavwXdf/+ENFXp1OqVkvW27NNUO8x2K9L0MrAye8z5nM1nCiMAavOeYN2qy5ZN8x8rPTDuLgSGwqYOJmV9HU/QRwUeWlQFnFdRhhXR3AbmDhw3Sac',
},
{
id: 0,
address: '0x07e7b798e2c3bb030b2affa436cbe30c034561b2',
decryptionKeyHash: 'c3d711a72490f8cddc8a3e54b43c7e698b49c1c8baa2c4af3d8d489e9a6ec8797fe4be6ce86e160b87fd97a3190941d9a9e49f5734c2e7155b0f6af9b3231f41',
result: 'rejected',
decryptionKeyEncryptedWithMasterKey: 'U2FsdGVkX186z65xavwXdf/+ENFXp1OqVkvW27NNUO8x2K9L0MrAye8z5nM1nCiMAavOeYN2qy5ZN8x8rPTDuLgSGwqYOJmV9HU/QRwUeWlQFnFdRhhXR3AbmDhw3Sac',
},
{
id: 4,
address: '0x07e7b798e2c3bb030b2affa436cbe30c034561b5',
decryptionKeyHash: 'c3d711a72490f8cddc8a3e54b43c7e698b49c1c8baa2c4af3d8d489e9a6ec8797fe4be6ce86e160b87fd97a3190941d9a9e49f5734c2e7155b0f6af9b3231f41',
result: 'rejected',
decryptionKeyEncryptedWithMasterKey: 'U2FsdGVkX186z65xavwXdf/+ENFXp1OqVkvW27NNUO8x2K9L0MrAye8z5nM1nCiMAavOeYN2qy5ZN8x8rPTDuLgSGwqYOJmV9HU/QRwUeWlQFnFdRhhXR3AbmDhw3Sac',
},
];
39 changes: 39 additions & 0 deletions notary-api/test/jobs/paymentsHelpers.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
import { serial as it } from 'ava';
import { getResultsByBatPayId } from '../../src/jobs/paymentsHelpers';
import { paidSellers, rejectedSellers } from './paymentsHelpers.cases';

it('getResultsByBatPayId > empty batch returns empty object', (assert) => {
const result = getResultsByBatPayId([], []);
assert.snapshot(
result,
{ id: 'getResultsByBatPayId.emptyBatch' },
'empty batch should return empty object',
);
});

it('getResultsByBatPayId > empty rejected returns full object', (assert) => {
const result = getResultsByBatPayId(paidSellers, []);
assert.snapshot(
result,
{ id: 'getResultsByBatPayId.emptyRejected' },
'empty rejected sellers should return full object',
);
});

it('getResultsByBatPayId > empty completed returns full object', (assert) => {
const result = getResultsByBatPayId([], rejectedSellers);
assert.snapshot(
result,
{ id: 'getResultsByBatPayId.emptyCompleted' },
'empty completed sellers should return full object',
);
});

it('getResultsByBatPayId > full batch returns full object', (assert) => {
const result = getResultsByBatPayId(paidSellers, rejectedSellers);
assert.snapshot(
result,
{ id: 'getResultsByBatPayId.fullBatch' },
'empty completed sellers should return full object',
);
});
72 changes: 72 additions & 0 deletions notary-api/test/jobs/snapshots/paymentsHelpers.test.js.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
# Snapshot report for `test/jobs/paymentsHelpers.test.js`

The actual snapshot is saved in `paymentsHelpers.test.js.snap`.

Generated by [AVA](https://ava.li).

## getResultsByBatPayId.emptyBatch

{}

## getResultsByBatPayId.emptyCompleted

{
0: {
completed: [],
rejected: [
'0x07e7b798e2c3bb030b2affa436cbe30c034561b1',
'0x07e7b798e2c3bb030b2affa436cbe30c034561b2',
],
},
4: {
completed: [],
rejected: [
'0x07e7b798e2c3bb030b2affa436cbe30c034561b5',
],
},
}

## getResultsByBatPayId.emptyRejected

{
0: {
completed: [
'0x07e7b798e2c3bb030b2affa436cbe30c034561b0',
'0x07e7b798e2c3bb030b2affa436cbe30c034561b4',
],
rejected: [],
},
1: {
completed: [
'0x07e7b798e2c3bb030b2affa436cbe30c034561b3',
],
rejected: [],
},
}

## getResultsByBatPayId.fullBatch

{
0: {
completed: [
'0x07e7b798e2c3bb030b2affa436cbe30c034561b0',
'0x07e7b798e2c3bb030b2affa436cbe30c034561b4',
],
rejected: [
'0x07e7b798e2c3bb030b2affa436cbe30c034561b1',
'0x07e7b798e2c3bb030b2affa436cbe30c034561b2',
],
},
1: {
completed: [
'0x07e7b798e2c3bb030b2affa436cbe30c034561b3',
],
rejected: [],
},
4: {
completed: [],
rejected: [
'0x07e7b798e2c3bb030b2affa436cbe30c034561b5',
],
},
}
Binary file not shown.

0 comments on commit 74b51f9

Please sign in to comment.