diff --git a/lib/contracts/reimbursement.js b/lib/contracts/reimbursement.js index 585037a..ff027cb 100644 --- a/lib/contracts/reimbursement.js +++ b/lib/contracts/reimbursement.js @@ -25,10 +25,21 @@ class Reimbursement extends Record { const token = attrs.token; const contributorId = attrs.contributorId; const expenses = attrs.expenses.map( e => new ExpenseSerializer(e) ); + let errorMessage; - if (!amount > 0 || !token || token === '' || !contributorId || contributorId === '' || !expenses.length > 0) { - return Promise.reject(new Error('Invalid data. amount, token, expenses is required.')); + if (typeof amount !== 'number' || amount <= 0) { + errorMessage = 'Invalid data: amount must be a positive number.'; } + if (!token || token === '') { + errorMessage = 'Invalid data: token must be a token address.'; + } + if (!contributorId || contributorId === '') { + errorMessage = 'Invalid data: contributorId is required.'; + } + if (expenses.length === 0) { + errorMessage = 'Invalid data: at least one expense item is required.'; + } + if (errorMessage) { return Promise.reject(new Error(errorMessage)); } return Promise.all(expenses.map(e => e.validate())) .then(() => { @@ -39,7 +50,7 @@ class Reimbursement extends Record { const reimbursement = [ amount, token, - contributorId, + parseInt(contributorId), ipfsHashAttr.hashDigest, ipfsHashAttr.hashFunction, ipfsHashAttr.hashSize,