2022-08-26 08:11:35 +00:00
|
|
|
import 'package:flutter_test/flutter_test.dart';
|
|
|
|
import 'package:stackwallet/models/models.dart';
|
|
|
|
|
2022-09-27 23:54:43 +00:00
|
|
|
import '../services/coins/firo/sample_data/transaction_data_samples.dart';
|
|
|
|
|
2022-08-26 08:11:35 +00:00
|
|
|
void main() {
|
2022-09-29 23:19:51 +00:00
|
|
|
group("TransactionData", () {
|
|
|
|
test("TransactionData from Json", () {
|
|
|
|
final txChunk = TransactionChunk.fromJson({
|
|
|
|
"timestamp": 993260735,
|
|
|
|
"transactions": [
|
|
|
|
{
|
|
|
|
"txid": "txid",
|
|
|
|
"confirmed_status": true,
|
|
|
|
"timestamp": 1876352482,
|
|
|
|
"txType": "txType",
|
|
|
|
"amount": 10,
|
|
|
|
"worthNow": "1",
|
|
|
|
"worthAtBlockTimestamp": "1",
|
|
|
|
"fees": 1,
|
|
|
|
"inputSize": 1,
|
|
|
|
"outputSize": 1,
|
|
|
|
"inputs": [],
|
|
|
|
"outputs": [],
|
|
|
|
"address": "address",
|
|
|
|
"height": 1,
|
|
|
|
"confirmations": 1,
|
|
|
|
"aliens": [],
|
|
|
|
"subType": "mint",
|
|
|
|
"isCancelled": false,
|
|
|
|
"slateId": "slateId",
|
|
|
|
"otherData": "otherData",
|
|
|
|
}
|
|
|
|
]
|
|
|
|
});
|
|
|
|
final txdata =
|
|
|
|
TransactionData.fromJson({"dateTimeChunks": [], "txChunks": []});
|
|
|
|
txdata.findTransaction("txid");
|
|
|
|
txdata.getAllTransactions();
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
group("Timestamp", () {
|
2022-09-27 23:54:43 +00:00
|
|
|
test("Timestamp is now", () {
|
|
|
|
final date = extractDateFromTimestamp(0);
|
|
|
|
});
|
|
|
|
|
|
|
|
test("Timestamp is null", () {
|
|
|
|
final date = extractDateFromTimestamp(null);
|
|
|
|
});
|
|
|
|
|
|
|
|
test("Timestamp is a random date", () {
|
|
|
|
final date = extractDateFromTimestamp(1876352482);
|
|
|
|
});
|
|
|
|
});
|
2022-09-29 23:19:51 +00:00
|
|
|
|
2022-09-27 23:54:43 +00:00
|
|
|
group("Transaction", () {
|
2022-09-29 23:19:51 +00:00
|
|
|
test("Transaction from Json", () {
|
2022-09-27 23:54:43 +00:00
|
|
|
final tx = Transaction.fromJson({
|
|
|
|
"txid": "txid",
|
|
|
|
"confirmed_status": true,
|
|
|
|
"timestamp": 1876352482,
|
|
|
|
"txType": "txType",
|
|
|
|
"amount": 10,
|
|
|
|
"worthNow": "1",
|
|
|
|
"worthAtBlockTimestamp": "1",
|
|
|
|
"fees": 1,
|
|
|
|
"inputSize": 1,
|
|
|
|
"outputSize": 1,
|
|
|
|
"inputs": [],
|
|
|
|
"outputs": [],
|
|
|
|
"address": "address",
|
|
|
|
"height": 1,
|
|
|
|
"confirmations": 1,
|
|
|
|
"aliens": [],
|
|
|
|
"subType": "mint",
|
|
|
|
"isCancelled": false,
|
|
|
|
"slateId": "slateId",
|
|
|
|
"otherData": "otherData",
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
2022-09-29 23:19:51 +00:00
|
|
|
test("Transaction from Lelantus Json", () {
|
|
|
|
final tx = Transaction.fromLelantusJson({
|
|
|
|
"txid": "txid",
|
|
|
|
"confirmed_status": true,
|
|
|
|
"timestamp": 1876352482,
|
|
|
|
"txType": "txType",
|
|
|
|
"amount": 10,
|
|
|
|
"worthNow": "1",
|
|
|
|
"worthAtBlockTimestamp": "1",
|
|
|
|
"fees": 1,
|
|
|
|
"inputSize": 1,
|
|
|
|
"outputSize": 1,
|
|
|
|
"inputs": [],
|
|
|
|
"outputs": [],
|
|
|
|
"address": "address",
|
|
|
|
"height": 1,
|
|
|
|
"confirmations": 1,
|
|
|
|
"aliens": [],
|
|
|
|
"subType": "mint",
|
|
|
|
"isCancelled": false,
|
|
|
|
"slateId": "slateId",
|
|
|
|
"otherData": "otherData",
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
2022-09-27 23:54:43 +00:00
|
|
|
test("TransactionChunk", () {
|
|
|
|
final transactionchunk = TransactionChunk.fromJson({
|
|
|
|
"timestamp": 45920,
|
|
|
|
"transactions": [],
|
|
|
|
});
|
|
|
|
expect(
|
|
|
|
transactionchunk.toString(), "timestamp: 45920 transactions: [\n]");
|
|
|
|
});
|
|
|
|
|
2022-09-29 23:19:51 +00:00
|
|
|
test("TransactionChunk with a transaction", () {
|
|
|
|
final txChunk = TransactionChunk.fromJson({
|
|
|
|
"timestamp": 993260735,
|
|
|
|
"transactions": [
|
|
|
|
{
|
|
|
|
"txid": "txid",
|
|
|
|
"confirmed_status": true,
|
|
|
|
"timestamp": 1876352482,
|
|
|
|
"txType": "txType",
|
|
|
|
"amount": 10,
|
|
|
|
"worthNow": "1",
|
|
|
|
"worthAtBlockTimestamp": "1",
|
|
|
|
"fees": 1,
|
|
|
|
"inputSize": 1,
|
|
|
|
"outputSize": 1,
|
|
|
|
"inputs": [],
|
|
|
|
"outputs": [],
|
|
|
|
"address": "address",
|
|
|
|
"height": 1,
|
|
|
|
"confirmations": 1,
|
|
|
|
"aliens": [],
|
|
|
|
"subType": "mint",
|
|
|
|
"isCancelled": false,
|
|
|
|
"slateId": "slateId",
|
|
|
|
"otherData": "otherData",
|
|
|
|
}
|
|
|
|
]
|
|
|
|
});
|
|
|
|
expect(txChunk.toString(),
|
2023-05-29 18:19:14 +00:00
|
|
|
"timestamp: 993260735 transactions: [\n {txid: txid, type: txType, subType: mint, value: 10, fee: 1, height: 1, confirm: true, confirmations: 1, address: address, timestamp: 1876352482, worthNow: 1, inputs: [], slateid: slateId, numberOfMessages: null } \n]");
|
2022-09-27 23:54:43 +00:00
|
|
|
});
|
|
|
|
});
|
|
|
|
|
2022-08-26 08:11:35 +00:00
|
|
|
group("Transaction isMinting", () {
|
|
|
|
test("Transaction isMinting unconfirmed mint", () {
|
|
|
|
final tx = Transaction(
|
|
|
|
txid: "txid",
|
|
|
|
confirmedStatus: false,
|
|
|
|
timestamp: 1,
|
|
|
|
subType: "mint",
|
|
|
|
txType: "",
|
|
|
|
amount: 1,
|
|
|
|
worthNow: "1",
|
|
|
|
worthAtBlockTimestamp: "1",
|
|
|
|
fees: 1,
|
|
|
|
inputSize: 1,
|
|
|
|
outputSize: 1,
|
|
|
|
inputs: [],
|
|
|
|
outputs: [],
|
|
|
|
address: "address",
|
|
|
|
height: 1,
|
|
|
|
confirmations: 1,
|
|
|
|
);
|
|
|
|
expect(tx.isMinting, true);
|
|
|
|
});
|
|
|
|
|
|
|
|
test("Transaction isMinting confirmed mint", () {
|
|
|
|
final tx = Transaction(
|
|
|
|
txid: "txid",
|
|
|
|
confirmedStatus: true,
|
|
|
|
timestamp: 1,
|
|
|
|
subType: "mint",
|
|
|
|
txType: "",
|
|
|
|
amount: 1,
|
|
|
|
worthNow: "1",
|
|
|
|
worthAtBlockTimestamp: "1",
|
|
|
|
fees: 1,
|
|
|
|
inputSize: 1,
|
|
|
|
outputSize: 1,
|
|
|
|
inputs: [],
|
|
|
|
outputs: [],
|
|
|
|
address: "address",
|
|
|
|
height: 1,
|
|
|
|
confirmations: 1,
|
|
|
|
);
|
|
|
|
expect(tx.isMinting, false);
|
|
|
|
});
|
|
|
|
|
|
|
|
test("Transaction isMinting non mint tx", () {
|
|
|
|
final tx = Transaction(
|
|
|
|
txid: "txid",
|
|
|
|
confirmedStatus: false,
|
|
|
|
timestamp: 1,
|
|
|
|
subType: "",
|
|
|
|
txType: "",
|
|
|
|
amount: 1,
|
|
|
|
worthNow: "1",
|
|
|
|
worthAtBlockTimestamp: "1",
|
|
|
|
fees: 1,
|
|
|
|
inputSize: 1,
|
|
|
|
outputSize: 1,
|
|
|
|
inputs: [],
|
|
|
|
outputs: [],
|
|
|
|
address: "address",
|
|
|
|
height: 1,
|
|
|
|
confirmations: 1,
|
|
|
|
);
|
|
|
|
expect(tx.isMinting, false);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
test("Transaction.copyWith", () {
|
|
|
|
final tx1 = Transaction(
|
|
|
|
txid: "txid",
|
|
|
|
confirmedStatus: true,
|
|
|
|
timestamp: 1,
|
|
|
|
subType: "mint",
|
|
|
|
txType: "",
|
|
|
|
amount: 1,
|
|
|
|
worthNow: "1",
|
|
|
|
worthAtBlockTimestamp: "1",
|
|
|
|
fees: 1,
|
|
|
|
inputSize: 1,
|
|
|
|
outputSize: 1,
|
|
|
|
inputs: [],
|
|
|
|
outputs: [],
|
|
|
|
address: "address",
|
|
|
|
height: 1,
|
|
|
|
confirmations: 1,
|
|
|
|
);
|
|
|
|
final tx2 = tx1.copyWith();
|
|
|
|
|
|
|
|
expect(tx1 == tx2, false);
|
|
|
|
expect(tx2.toString(), tx1.toString());
|
|
|
|
});
|
2022-09-29 23:19:51 +00:00
|
|
|
|
|
|
|
group("Input", () {
|
|
|
|
test("Input.toString", () {
|
|
|
|
final input = Input(
|
|
|
|
txid: "txid",
|
|
|
|
vout: 1,
|
|
|
|
prevout: null,
|
|
|
|
scriptsig: "scriptsig",
|
|
|
|
scriptsigAsm: "scriptsigAsm",
|
|
|
|
witness: [],
|
|
|
|
isCoinbase: false,
|
|
|
|
sequence: 1,
|
|
|
|
innerRedeemscriptAsm: "innerRedeemscriptAsm",
|
|
|
|
); //Input
|
|
|
|
|
|
|
|
expect(input.toString(), "{txid: txid}");
|
|
|
|
});
|
|
|
|
|
|
|
|
test("Input.toString", () {
|
|
|
|
final input = Input.fromJson({
|
|
|
|
"txid": "txid",
|
|
|
|
"vout": 1,
|
|
|
|
"prevout": null,
|
|
|
|
"scriptSig": {"hex": "somehexString", "asm": "someasmthing"},
|
|
|
|
"scriptsigAsm": "scriptsigAsm",
|
|
|
|
"witness": [],
|
|
|
|
"isCoinbase": false,
|
|
|
|
"sequence": 1,
|
|
|
|
"innerRedeemscriptAsm": "innerRedeemscriptAsm",
|
|
|
|
}); //Input
|
|
|
|
|
|
|
|
expect(input.toString(), "{txid: txid}");
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
group("Output", () {
|
|
|
|
test("Output.toString", () {
|
|
|
|
final output = Output.fromJson({
|
|
|
|
"scriptPubKey": {
|
|
|
|
"hex": "somehexSting",
|
|
|
|
"asm": "someasmthing",
|
|
|
|
"type": "sometype",
|
|
|
|
"addresses": "someaddresses",
|
|
|
|
},
|
|
|
|
"scriptpubkeyAsm": "scriptpubkeyAsm",
|
|
|
|
"scriptpubkeyType": "scriptpubkeyType",
|
|
|
|
"scriptpubkeyAddress": "address",
|
|
|
|
"value": 2,
|
|
|
|
}); //Input
|
|
|
|
|
|
|
|
expect(output.toString(), "Instance of \'Output\'");
|
|
|
|
});
|
|
|
|
});
|
2022-08-26 08:11:35 +00:00
|
|
|
}
|