autobounty/test/test_bot.js

67 lines
3.1 KiB
JavaScript
Raw Normal View History

2018-01-23 14:39:12 +01:00
const chai = require('chai');
const expect = require('chai').expect;
const assert = require('chai').assert;
const should = require('chai').should;
const bot = require('../bot')
// status-open-bounty comment from https://github.com/status-im/autobounty/issues/1
let sob_comment = 'Current balance: 0.000000 ETH\nTokens: SNT: 2500.00 ANT: 25.00\nContract address: 0x3645fe42b1a744ad98cc032c22472388806f86f9\nNetwork: Mainnet\n To claim this bounty sign up at https://openbounty.status.im and make sure to update your Ethereum address in My Payment Details so that the bounty is correctly allocated.\nTo fund it, send ETH or ERC20/ERC223 tokens to the contract address.'
// Fake requests
let requests = [
2018-01-23 16:36:34 +01:00
{ body: { action: 'created', comment: { body: 'Creating my first comment', user: { login: 'jomsdev' } } } },
{ body: { action: 'edited', comment: { body: 'Editing my comment', user: { login: 'jomsdev' } } } },
{ body: { action: 'edited', comment: { body: sob_comment, user: { login: 'status-open-bounty' } } } },
{ body: { action: 'created', comment: { body: sob_comment, user: { login: 'status-open-bounty' } } } }
2018-01-23 14:39:12 +01:00
];
2018-01-23 16:36:34 +01:00
describe('Bot behavior', function () {
describe('#needsFunding()', function () {
it('should return false because the comment is not from status-open-bounty', function () {
assert.isFalse(bot.needsFunding(requests[0]));
});
it('should return false because a user is editing a comment', function () {
assert.isFalse(bot.needsFunding(requests[1]));
});
it('should return false because status-open-bounty edited a comment', function () {
assert.isFalse(bot.needsFunding(requests[2]));
});
it('should return true, it is all right and we should fund', function () {
assert.isTrue(bot.needsFunding(requests[3]));
});
2018-01-23 14:39:12 +01:00
});
2018-01-23 15:19:05 +01:00
2018-01-23 16:36:34 +01:00
describe('#getAddress', function () {
it('should return the address from a status-open-bounty bot comment', function () {
assert.equal(bot.getAddress(requests[3]), '0x3645fe42b1a744ad98cc032c22472388806f86f9');
});
2018-01-23 15:19:05 +01:00
});
2018-01-23 16:36:34 +01:00
// TODO: test getAmount which involves call to github and bounty tags
describe('#getAmount', function () {
it('should fail and log that there is no bounty label for this issue', function () {
// Code
});
it('should fail and log that there are more than one bounty labels for this issue', function () {
// Code
});
it('should return the amount for the issue given the price per hour and the bounty label for this issue', function () {
// Code
});
2018-01-23 15:19:05 +01:00
});
// TODO: test getLabel which involves call to github and bounty tags
2018-01-23 16:36:34 +01:00
describe('#getGasPrice', function () {
it('should go to the gasStation and comeback with a reasonable number', function () {
2018-01-23 15:19:05 +01:00
bot.getGasPrice()
2018-01-23 16:36:34 +01:00
.then(function (gasPrice) {
assert.isNumber(gasPrice);
})
.catch(function () {
assert.fail();
})
2018-01-23 15:19:05 +01:00
});
2018-01-23 16:36:34 +01:00
});
2018-01-23 15:19:05 +01:00
2018-01-23 14:39:12 +01:00
});