Skip to content

Commit 50ed15d

Browse files
committed
add integration tests for extrinsics except for contracts module
1 parent ad93da2 commit 50ed15d

15 files changed

+216
-112
lines changed

packages/tfchain_client/lib/models/nodes.dart

Lines changed: 0 additions & 33 deletions
This file was deleted.

packages/tfchain_client/lib/src/balances.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import 'package:polkadart_keyring/polkadart_keyring.dart';
22
import 'package:tfchain_client/generated/dev/types/frame_system/account_info.dart';
33
import 'package:tfchain_client/generated/dev/types/sp_runtime/multiaddress/multi_address.dart';
4-
import 'package:tfchain_client/generated/dev/types/tfchain_runtime/runtime_call.dart';
54
import 'package:tfchain_client/tfchain_client.dart';
65

76
class QueryBalances {

packages/tfchain_client/lib/src/contracts.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import 'package:tfchain_client/generated/dev/types/pallet_smart_contract/grid_co
22
import 'package:tfchain_client/generated/dev/types/pallet_smart_contract/types/contract.dart';
33
import 'package:tfchain_client/generated/dev/types/pallet_smart_contract/types/contract_lock.dart';
44
import 'package:tfchain_client/generated/dev/types/pallet_smart_contract/types/service_contract.dart';
5-
import 'package:tfchain_client/generated/dev/types/tfchain_runtime/runtime_call.dart';
65
import 'package:tfchain_client/tfchain_client.dart';
76

87
const twoWeeks = 1209600000;

packages/tfchain_client/lib/src/dao.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import 'package:moment_dart/moment_dart.dart';
22
import 'package:tfchain_client/generated/dev/types/pallet_dao/proposal/dao_proposal.dart';
33
import 'package:tfchain_client/generated/dev/types/pallet_dao/proposal/dao_votes.dart';
44
import 'package:tfchain_client/generated/dev/types/pallet_dao/proposal/vote_weight.dart';
5-
import 'package:tfchain_client/generated/dev/types/tfchain_runtime/runtime_call.dart';
65
import 'package:tfchain_client/models/dao.dart';
76
import 'package:tfchain_client/tfchain_client.dart';
87

packages/tfchain_client/lib/src/farms.dart

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import 'package:tfchain_client/generated/dev/types/tfchain_runtime/runtime_call.dart';
21
import 'package:tfchain_client/generated/dev/types/tfchain_support/types/farm.dart';
32
import 'package:tfchain_client/tfchain_client.dart';
43
import 'package:tfchain_client/generated/dev/types/tfchain_support/types/ip4.dart';
@@ -30,7 +29,6 @@ class Farms extends QueryFarms {
3029
return await getFarmIdByName(name: name);
3130
}
3231

33-
// TODO: Bug
3432
Future<Farm?> addFarmIp(
3533
{required int farmId, required String ip, required String gw}) async {
3634
final extrinsic = client.api.tx.tfgridModule
@@ -40,18 +38,16 @@ class Farms extends QueryFarms {
4038
return await get(id: farmId);
4139
}
4240

43-
Future<Farm?> removeFarmIp({required int farmId, required String ip}) async {
41+
Future<void> removeFarmIp({required int farmId, required String ip}) async {
4442
final extrinsic =
45-
client.api.tx.tfgridModule.removeFarmIp(farmId: farmId, ip: ip);
43+
client.api.tx.tfgridModule.removeFarmIp(farmId: farmId, ip: ip.codeUnits);
4644
await client.apply(extrinsic);
47-
48-
return await get(id: farmId);
4945
}
5046

5147
Future<void> addStellarAddress(
5248
{required int farmId, required String stellarAddress}) async {
5349
final extrinsic = client.api.tx.tfgridModule.addStellarPayoutV2address(
54-
farmId: farmId, stellarAddress: stellarAddress);
50+
farmId: farmId, stellarAddress: stellarAddress.codeUnits);
5551
await client.apply(extrinsic);
5652
}
5753
}

packages/tfchain_client/lib/src/kvstore.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import 'dart:typed_data';
22
import 'package:polkadart/polkadart.dart';
3-
import 'package:tfchain_client/generated/dev/types/tfchain_runtime/runtime_call.dart';
43
import 'package:tfchain_client/tfchain_client.dart';
54

65
class KVStore {
Lines changed: 13 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
1+
import 'package:tfchain_client/generated/dev/types/tfchain_support/types/ip4.dart';
2+
import 'package:tfchain_client/generated/dev/types/tfchain_support/types/ip6.dart';
13
import 'package:tfchain_client/generated/dev/types/tfchain_support/types/node.dart';
2-
import 'package:tfchain_client/models/nodes.dart';
4+
import 'package:tfchain_client/generated/dev/types/tfchain_support/types/power.dart';
5+
import 'package:tfchain_client/generated/dev/types/tfchain_support/types/public_config.dart';
36
import 'package:tfchain_client/tfchain_client.dart';
47

58
class QueryNodes {
@@ -20,17 +23,14 @@ class Nodes extends QueryNodes {
2023
final Client client;
2124

2225
Future<void> setPower({required int nodeId, required bool power}) async {
23-
Map<String, bool?> powerTarget = {
24-
'up': null,
25-
'down': null,
26-
};
26+
Power _power;
2727
if (power) {
28-
powerTarget['up'] = true;
28+
_power = Power.up;
2929
} else {
30-
powerTarget['down'] = true;
30+
_power = Power.down;
3131
}
3232
final extrinsic = client.api.tx.tfgridModule
33-
.changePowerTarget(nodeId: nodeId, powerTarget: powerTarget);
33+
.changePowerTarget(nodeId: nodeId, powerTarget: _power);
3434
await client.apply(extrinsic);
3535
}
3636

@@ -43,27 +43,21 @@ class Nodes extends QueryNodes {
4343
String? ip6Gw,
4444
String? domain,
4545
}) async {
46-
IPConfig ip4Config = IPConfig(ip: ip4Ip, gw: ip4Gw);
47-
IPConfig? ip6Config;
46+
Ip4 ip4Config = Ip4(ip: ip4Ip.codeUnits, gw: ip4Gw.codeUnits);
47+
Ip6? ip6Config;
4848

4949
if (ip6Ip != null && ip6Gw != null) {
50-
ip6Config = IPConfig(ip: ip6Ip, gw: ip6Gw);
50+
ip6Config = Ip6(ip: ip6Ip.codeUnits, gw: ip6Gw.codeUnits);
5151
}
5252

5353
PublicConfig publicConfig = PublicConfig(
5454
ip4: ip4Config,
5555
ip6: ip6Config,
56-
domain: domain,
57-
);
58-
59-
NodePublicConfigOptions options = NodePublicConfigOptions(
60-
farmId: farmId,
61-
nodeId: nodeId,
62-
publicConfig: publicConfig,
56+
domain: domain!.codeUnits,
6357
);
6458

6559
final extrinsic = client.api.tx.tfgridModule.addNodePublicConfig(
66-
farmId: farmId, nodeId: nodeId, publicConfig: options);
60+
farmId: farmId, nodeId: nodeId, publicConfig: publicConfig);
6761
await client.apply(extrinsic);
6862
}
6963
}

packages/tfchain_client/lib/src/tft_bridge.dart

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
import 'package:tfchain_client/generated/dev/types/tfchain_runtime/runtime_call.dart';
1+
import 'dart:math';
2+
23
import 'package:tfchain_client/tfchain_client.dart';
34

45
class QueryBridge {
@@ -22,8 +23,9 @@ class Bridge extends QueryBridge {
2223

2324
Future<void> swapToStellar(
2425
{required String target, required int amount}) async {
25-
final extrinsic = client.api.tx.tFTBridgeModule
26-
.swapToStellar(targetStellarAddress: target, amount: amount);
26+
final extrinsic = client.api.tx.tFTBridgeModule.swapToStellar(
27+
targetStellarAddress: target.codeUnits,
28+
amount: BigInt.from(amount * pow(10, 7).toInt()));
2729
await client.apply(extrinsic);
2830
}
2931
}

packages/tfchain_client/lib/src/twins.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import 'package:polkadart_keyring/polkadart_keyring.dart';
22
import 'package:tfchain_client/generated/dev/types/pallet_tfgrid/types/twin.dart';
3-
import 'package:tfchain_client/generated/dev/types/tfchain_runtime/runtime_call.dart';
43
import 'package:tfchain_client/tfchain_client.dart';
54

65
class QueryTwins {
Lines changed: 29 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
1-
import 'package:polkadart/polkadart.dart';
21
import 'package:test/test.dart';
3-
import 'package:tfchain_client/generated/dev/dev.dart';
42
import 'package:tfchain_client/src/balances.dart';
53
import 'package:tfchain_client/src/contracts.dart';
4+
import 'package:tfchain_client/src/dao.dart';
65
import 'package:tfchain_client/src/farms.dart';
76
import 'package:tfchain_client/src/nodes.dart';
87
import 'package:tfchain_client/src/pricing_policies.dart';
@@ -20,8 +19,6 @@ void main() {
2019

2120
test('Initialization', () {
2221
expect(queryClient.url, equals("wss://tfchain.dev.grid.tf/ws"));
23-
expect(queryClient.provider, isA<WsProvider>());
24-
expect(queryClient.api, isA<Dev>());
2522
expect(queryClient.contracts, isA<QueryContracts>());
2623
expect(queryClient.balances, isA<QueryBalances>());
2724
expect(queryClient.farms, isA<QueryFarms>());
@@ -32,57 +29,50 @@ void main() {
3229
expect(queryClient.price, isA<QueryTFTPrice>());
3330
});
3431

35-
test('Check Input', () {
36-
queryClient.checkInputs();
37-
expect(true, true);
32+
test('Connect', () async {
33+
await queryClient.connect();
34+
expect(queryClient.provider, isNotNull);
35+
expect(queryClient.api, isNotNull);
3836
});
3937

40-
test('Connect', () {
41-
queryClient.connect();
42-
expect(true, true);
43-
});
44-
45-
test('Disconnect', () {
46-
queryClient.disconnect();
47-
expect(true, true);
38+
// TODO: fails
39+
test('Disconnect', () async {
40+
await queryClient.connect();
41+
await queryClient.disconnect();
42+
expect(queryClient.provider, isNull);
4843
});
4944
});
5045

5146
group("Full Client Tests", () {
52-
test('checkInputs with Invalid mnemonic', () {
53-
final client =
54-
Client("wss://tfchain.dev.grid.tf/ws", "validMnemonic", "sr25519");
55-
expect(
56-
() => client.checkInputs(), throwsA(TypeMatcher<FormatException>()));
57-
});
58-
5947
late Client client;
6048
setUp(() {
6149
client = Client(
62-
"wss://tfchain.dev.grid.tf/ws",
63-
"picnic flip cigar rival risk scatter slide aware trust garlic solution token",
64-
"sr25519");
50+
"wss://tfchain.dev.grid.tf/ws",
51+
"secret add bag cluster deposit beach illness letter crouch position rain arctic",
52+
"sr25519",
53+
);
6554
});
6655

6756
test('Initialization', () {
6857
expect(client.url, equals("wss://tfchain.dev.grid.tf/ws"));
69-
expect(client.clientContracts, isA<Contracts>());
70-
expect(client.clientFarms, isA<Farms>());
58+
expect(client.contracts, isA<Contracts>());
59+
expect(client.farms, isA<Farms>());
60+
expect(client.balances, isA<Balances>());
61+
expect(client.bridge, isA<Bridge>());
62+
expect(client.dao, isA<Dao>());
7163
});
72-
73-
test('Check Input', () {
74-
client.checkInputs();
75-
expect(true, true);
76-
});
77-
78-
test('Connect', () {
79-
client.connect();
80-
expect(true, true);
64+
test('Connect', () async {
65+
await client.connect();
66+
expect(client.keypair, isNotNull);
67+
expect(client.address, isNotEmpty);
8168
});
8269

83-
test('Disconnect', () {
84-
client.disconnect();
85-
expect(true, true);
70+
// TODO: same here
71+
test('Disconnect', () async {
72+
await client.connect();
73+
await client.disconnect();
74+
expect(client.keypair, isNull);
75+
expect(client.address, isEmpty);
8676
});
8777
});
8878
}

packages/tfchain_client/test/farms_test.dart

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import 'dart:math';
2+
13
import 'package:test/test.dart';
24
import 'package:tfchain_client/generated/dev/types/tfchain_support/types/farm.dart';
35
import 'package:tfchain_client/tfchain_client.dart';
@@ -23,4 +25,73 @@ void main() {
2325
}
2426
});
2527
});
28+
29+
group("Test Farms", () {
30+
late Client client;
31+
setUp(() async {
32+
client = Client(
33+
"wss://tfchain.dev.grid.tf/ws",
34+
"secret add bag cluster deposit beach illness letter crouch position rain arctic",
35+
"sr25519");
36+
await client.connect();
37+
});
38+
39+
test('Test create farm', () async {
40+
final random = Random();
41+
final farmName = 'farm_${random.nextInt(999)}';
42+
final farmId = await client.farms.create(name: farmName, publicIps: []);
43+
print(farmId);
44+
expect(farmId, isNotNull);
45+
});
46+
47+
test('Test create farm with existing name', () async {
48+
try {
49+
final farmId =
50+
await client.farms.create(name: "hellofarm", publicIps: []);
51+
} catch (error) {
52+
expect(error, isNotNull);
53+
}
54+
});
55+
56+
test('Test adding farm ip', () async {
57+
try {
58+
Farm? farm = await client.farms.addFarmIp(
59+
farmId: 4588, ip: "198.165.15.25/16", gw: "198.165.15.26");
60+
expect(farm, isNotNull);
61+
} catch (error) {
62+
// will fail as the ip already exists
63+
expect(error, isNotNull);
64+
}
65+
});
66+
67+
test('Test adding farm ip with same ip and gateway', () async {
68+
try {
69+
Farm? farm = await client.farms.addFarmIp(
70+
farmId: 4588, ip: "198.165.15.25/16", gw: "198.165.15.25");
71+
} catch (error) {
72+
expect(error, isNotNull);
73+
}
74+
});
75+
76+
// first time will pass but after that will fail, TODO:
77+
test('Test remove farm ip', () async {
78+
try {
79+
await client.farms.removeFarmIp(farmId: 4588, ip: "198.165.15.25/16");
80+
} catch (error) {
81+
expect(error, null);
82+
}
83+
});
84+
85+
//
86+
test('Test add stellar address', () async {
87+
try {
88+
await client.farms.addStellarAddress(
89+
farmId: 4588,
90+
stellarAddress:
91+
"GDHJP6TF3UXYXTNEZ2P36J5FH7W4BJJQ4AYYAXC66I2Q2AH5B6O6BCFG");
92+
} catch (error) {
93+
expect(error, null);
94+
}
95+
});
96+
});
2697
}

0 commit comments

Comments
 (0)