-
Notifications
You must be signed in to change notification settings - Fork 22
/
Copy pathsmartDataProvider.js
53 lines (45 loc) · 2.22 KB
/
smartDataProvider.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
const { utils } = require('@aeternity/aeproject');
const chai = require('chai');
const assert = chai.assert;
describe('SmartDataProvider', () => {
const SMART_DATA_PROVIDER_BACKEND_SOURCE = './contracts/SmartDataProvider/SmartDataProviderBackend.aes';
const SMART_DATA_PROVIDER_CLIENT_SOURCE = './contracts/SmartDataProvider/SmartDataProviderClient.aes';
let aeSdk;
let backendContractInstance, clientContractInstance;
before(async () => {
aeSdk = await utils.getSdk();
});
describe('Deploy contracts', () => {
it('should deploy smart-data-provider backend contract', async () => {
// get content of contract
const contractContent = utils.getContractContent(SMART_DATA_PROVIDER_BACKEND_SOURCE);
// initialize the contract instance
backendContractInstance = await aeSdk.initializeContract({ sourceCode: contractContent });
await backendContractInstance.$deploy([]);
});
it('should deploy smart-data-provider client contract', async () => {
// a fileSystem object must be passed to the compiler if the contract uses custom includes
const fileSystem = utils.getFilesystem(SMART_DATA_PROVIDER_CLIENT_SOURCE);
// get content of contract
const contractContent = utils.getContractContent(SMART_DATA_PROVIDER_CLIENT_SOURCE);
// initialize the contract instance
clientContractInstance = await aeSdk.initializeContract({ sourceCode: contractContent, fileSystem});
await clientContractInstance.$deploy([]);
});
});
// TODO "Invocation failed?!" => Devmode bug?!
describe('Interact with contracts', () => {
it('should get USD exchange rate', async () => {
const result = await clientContractInstance.get_exchange_rate(
backendContractInstance.$options.address, "USD", { amount: 100, gas: 36000 },
);
assert.equal(result.decodedResult, '1')
});
it('should get EUR exchange rate', async () => {
const result = await clientContractInstance.get_exchange_rate(
backendContractInstance.$options.address, "EUR", { amount: 100, gas: 36000 },
);
assert.equal(result.decodedResult, '2')
});
});
});