Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Implement AIP 103 #2858

Merged
merged 35 commits into from
Aug 20, 2019
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
8efe68d
feat: core-marketplace
Aug 1, 2019
1b3670b
fix: milestones
Aug 1, 2019
22dd357
test: additional tests
Aug 2, 2019
00adfcd
Merge branch '2.6' of https://github.com/ArkEcosystem/core into 2.6
Aug 5, 2019
2aab80c
refactor: core-marketplace
Aug 5, 2019
86ff98e
Merge branch 'develop' into 2.6
faustbrian Aug 6, 2019
d520bf5
test: additional unit and functional tests
Aug 6, 2019
ba2820c
Merge branch '2.6' of https://github.com/KovacZan/core into 2.6
Aug 6, 2019
f96dbdd
test: add functional tests
Aug 7, 2019
c7bf5fa
fix: empty code block
Aug 7, 2019
bb8c7d6
test: add additional functional tests
Aug 8, 2019
677b1b1
fix: fixes based on feedback
Aug 9, 2019
bb1daaa
fix: change ipv4 and ipv6 to ip
Aug 9, 2019
e491e0b
fix: tests
Aug 9, 2019
4ac8ce4
fix: test description
Aug 9, 2019
150a784
fix: lazy loading in busines registration
Aug 10, 2019
0cf07ea
test: added tests for bridgechain transaction
Aug 11, 2019
a9bd6c9
test: additional tests for business registration
Aug 12, 2019
e11438f
Merge branch 'develop' of https://github.com/arkecosystem/core into 2.6
Aug 12, 2019
cf4709a
fix: bridgechain nonce
Aug 12, 2019
bc1b099
test: bridgechain-handler tests
Aug 12, 2019
c44de03
Merge branch '2.6' of https://github.com/kovaczan/core into 2.6
Aug 12, 2019
2dd75ee
feat: business-update transaction
Aug 12, 2019
533c952
feat: bridgechain update transaction type
Aug 13, 2019
49e9c2b
feat: bridgechain update apply for sender and revert for sender
Aug 13, 2019
5ceab19
test: bridgechain resignation transaction
Aug 14, 2019
95a5690
refactor: core-marketplace
Aug 14, 2019
07c252b
test: additional handler tests
Aug 14, 2019
211aecc
fix: tests
Aug 14, 2019
225257f
test: additional business registration tests
Aug 14, 2019
5779b15
Merge branch 'develop' into 2.6
spkjp Aug 15, 2019
fb554df
test: more tests
Aug 15, 2019
9d63946
Merge branch '2.6' of https://github.com/kovaczan/core into 2.6
Aug 15, 2019
466b73a
fix: integration test
Aug 16, 2019
713e6f1
Merge branch 'develop' into 2.6
spkjp Aug 17, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
test: bridgechain-handler tests
  • Loading branch information
zan committed Aug 12, 2019
commit bc1b099fb1b4544b3c8d0b6601a37c6a475aff39
Original file line number Diff line number Diff line change
@@ -0,0 +1,189 @@
import "jest-extended";

import { State } from "@arkecosystem/core-interfaces";
import { Wallets } from "@arkecosystem/core-state";
import { Handlers } from "@arkecosystem/core-transactions";
import { Managers, Utils } from "@arkecosystem/crypto";
import {
BridgechainRegistrationBuilder,
BridgechainResignationBuilder,
BusinessRegistrationBuilder,
} from "../../../src/builders";

import {
// @ts-ignore
BridgechainIsResignedError,
WalletIsNotBusinessError,
} from "../../../src/errors";
import {
BridgechainRegistrationTransactionHandler,
BridgechainResignationTransactionHandler,
BusinessRegistrationTransactionHandler,
} from "../../../src/handlers";
// @ts-ignore
import { IBusinessWalletProperty } from "../../../src/interfaces";
import { bridgechainIndexer, businessIndexer } from "../../../src/wallet-manager";
// @ts-ignore
import { bridgechainRegistrationAsset1, bridgechainRegistrationAsset2 } from "../helper";

let businessRegistrationHandler: Handlers.TransactionHandler;
let bridgechainRegistrationHandler: Handlers.TransactionHandler;
// @ts-ignore
let bridgechainResignationHandler: Handlers.TransactionHandler;

let businessRegistrationBuilder: BusinessRegistrationBuilder;
let bridgechianRegistrationBuilder: BridgechainRegistrationBuilder;
// @ts-ignore
let bridgechainResignationBuilder: BridgechainResignationBuilder;

let senderWallet: Wallets.Wallet;
let walletManager: State.IWalletManager;

describe("should test marketplace transaction handlers", () => {
Managers.configManager.setFromPreset("testnet");

Handlers.Registry.registerTransactionHandler(BusinessRegistrationTransactionHandler);
Handlers.Registry.registerTransactionHandler(BridgechainRegistrationTransactionHandler);
Handlers.Registry.registerTransactionHandler(BridgechainResignationTransactionHandler);

beforeEach(() => {
businessRegistrationHandler = new BusinessRegistrationTransactionHandler();
bridgechainRegistrationHandler = new BridgechainRegistrationTransactionHandler();
bridgechainResignationHandler = new BridgechainResignationTransactionHandler();

businessRegistrationBuilder = new BusinessRegistrationBuilder();
bridgechianRegistrationBuilder = new BridgechainRegistrationBuilder();
bridgechainResignationBuilder = new BridgechainResignationBuilder();

walletManager = new Wallets.WalletManager();
walletManager.registerIndex("byBusiness", businessIndexer);
walletManager.registerIndex("byBridgechain", bridgechainIndexer);

senderWallet = new Wallets.Wallet("ANBkoGqWeTSiaEVgVzSKZd3jS7UWzv9PSo");
senderWallet.balance = Utils.BigNumber.make(4527654310);
senderWallet.publicKey = "03287bfebba4c7881a0509717e71b34b63f31e40021c321f89ae04f84be6d6ac37";
walletManager.reindex(senderWallet);
});

describe("Bridgechain registration handler", () => {
describe("throwIfCannotBeApplied tests", () => {
it("should fail, because business is not registered", async () => {
const actual = bridgechianRegistrationBuilder
.bridgechainRegistrationAsset(bridgechainRegistrationAsset1)
.fee("50000000")
.nonce("1")
.sign("clay harbor enemy utility margin pretty hub comic piece aerobic umbrella acquire");

await expect(
bridgechainRegistrationHandler.throwIfCannotBeApplied(actual.build(), senderWallet, walletManager),
).rejects.toThrowError(WalletIsNotBusinessError);
});

describe("Business registered", () => {
beforeEach(async () => {
const businessRegistration = businessRegistrationBuilder
.businessRegistrationAsset({
name: "businessName",
website: "www.website.com",
})
.fee("50000000")
.nonce("1")
.sign("clay harbor enemy utility margin pretty hub comic piece aerobic umbrella acquire");
await businessRegistrationHandler.applyToSender(businessRegistration.build(), walletManager);
});

it("should pass because business is registered", async () => {
const actual = bridgechianRegistrationBuilder
.bridgechainRegistrationAsset(bridgechainRegistrationAsset1)
.fee("50000000")
.nonce("2")
.sign("clay harbor enemy utility margin pretty hub comic piece aerobic umbrella acquire");

await expect(
bridgechainRegistrationHandler.throwIfCannotBeApplied(
actual.build(),
senderWallet,
walletManager,
),
).toResolve();
});

it("should not throw after multiple bridgechain registrations", async () => {
const actual = bridgechianRegistrationBuilder
.bridgechainRegistrationAsset(bridgechainRegistrationAsset1)
.fee("50000000")
.nonce("2")
.sign("clay harbor enemy utility margin pretty hub comic piece aerobic umbrella acquire");
await bridgechainRegistrationHandler.applyToSender(actual.build(), walletManager);

actual.nonce("3");
await expect(
bridgechainRegistrationHandler.throwIfCannotBeApplied(
actual.build(),
senderWallet,
walletManager,
),
).toResolve();
});
});

describe("applyToSender tests", () => {
beforeEach(async () => {
const businessRegistration = businessRegistrationBuilder
.businessRegistrationAsset({
name: "businessName",
website: "www.website.com",
})
.fee("50000000")
.nonce("1")
.sign("clay harbor enemy utility margin pretty hub comic piece aerobic umbrella acquire");
await businessRegistrationHandler.applyToSender(businessRegistration.build(), walletManager);
});

it("should pass, because business is registered", async () => {
const bridgechainRegistration = bridgechianRegistrationBuilder
.bridgechainRegistrationAsset(bridgechainRegistrationAsset1)
.fee("50000000")
.nonce("2")
.sign("clay harbor enemy utility margin pretty hub comic piece aerobic umbrella acquire");

await expect(
bridgechainRegistrationHandler.applyToSender(bridgechainRegistration.build(), walletManager),
).toResolve();

// expect(
// senderWallet.getAttribute<IBusinessWalletProperty>("business").bridgechains[0].bridgechainNonce,
// ).toBe(1001);
//
// bridgechainRegistration.bridgechainRegistrationAsset(bridgechainRegistrationAsset2).nonce("3");
// await expect(
// bridgechainRegistrationHandler.applyToSender(bridgechainRegistration.build(), walletManager),
// ).toResolve();
//
// expect(
// senderWallet.getAttribute<IBusinessWalletProperty>("business").bridgechains[1].bridgechainNonce,
// ).toBe(1002);
//
// const bridgechainResignation = bridgechainResignationBuilder
// .businessResignationAsset(bridgechainRegistrationBuilded.id)
// .fee("50000000")
// .nonce("4")
// .sign("clay harbor enemy utility margin pretty hub comic piece aerobic umbrella acquire");
//
// await expect(
// bridgechainResignationHandler.applyToSender(bridgechainResignation.build(), walletManager),
// ).toResolve();
//
// bridgechainResignation.nonce("5");
// await expect(
// bridgechainResignationHandler.applyToSender(bridgechainResignation.build(), walletManager),
// ).rejects.toThrowError(BridgechainIsResignedError);
});

// it("should ", async () => {
//
// });
});
});
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -4,38 +4,21 @@ import { State } from "@arkecosystem/core-interfaces";
import { Wallets } from "@arkecosystem/core-state";
import { Handlers } from "@arkecosystem/core-transactions";
import { Managers, Utils } from "@arkecosystem/crypto";
import { BusinessRegistrationBuilder, BusinessResignationBuilder } from "../../../src/builders";
import {
BridgechainRegistrationBuilder,
BridgechainResignationBuilder,
BusinessRegistrationBuilder,
BusinessResignationBuilder,
} from "../../../src/builders";
import {
BridgechainIsResignedError,
BusinessAlreadyRegisteredError,
BusinessIsNotRegisteredError,
BusinessIsResignedError,
WalletIsNotBusinessError,
} from "../../../src/errors";
import {
BridgechainRegistrationTransactionHandler,
BridgechainResignationTransactionHandler,
BusinessRegistrationTransactionHandler,
BusinessResignationTransactionHandler,
} from "../../../src/handlers";
import { BusinessRegistrationTransactionHandler, BusinessResignationTransactionHandler } from "../../../src/handlers";
import { IBusinessWalletProperty } from "../../../src/interfaces";
import { bridgechainIndexer, businessIndexer } from "../../../src/wallet-manager";
import { bridgechainRegistrationAsset1, bridgechainRegistrationAsset2 } from "../helper";
import { businessIndexer } from "../../../src/wallet-manager";

let businessRegistrationHandler: Handlers.TransactionHandler;
let businessResignationHandler: Handlers.TransactionHandler;
let bridgechainRegistrationHandler: Handlers.TransactionHandler;
let bridgechainResignationHandler: Handlers.TransactionHandler;

let businessRegistrationBuilder: BusinessRegistrationBuilder;
let businessResignationBuilder: BusinessResignationBuilder;
let bridgechianRegistrationBuilder: BridgechainRegistrationBuilder;
let bridgechainResignationBuilder: BridgechainResignationBuilder;

let senderWallet: Wallets.Wallet;
let walletManager: State.IWalletManager;
Expand All @@ -45,23 +28,16 @@ describe("should test marketplace transaction handlers", () => {

Handlers.Registry.registerTransactionHandler(BusinessRegistrationTransactionHandler);
Handlers.Registry.registerTransactionHandler(BusinessResignationTransactionHandler);
Handlers.Registry.registerTransactionHandler(BridgechainRegistrationTransactionHandler);
Handlers.Registry.registerTransactionHandler(BridgechainResignationTransactionHandler);

beforeEach(() => {
businessRegistrationHandler = new BusinessRegistrationTransactionHandler();
businessResignationHandler = new BusinessResignationTransactionHandler();
bridgechainRegistrationHandler = new BridgechainRegistrationTransactionHandler();
bridgechainResignationHandler = new BridgechainResignationTransactionHandler();

businessRegistrationBuilder = new BusinessRegistrationBuilder();
businessResignationBuilder = new BusinessResignationBuilder();
bridgechianRegistrationBuilder = new BridgechainRegistrationBuilder();
bridgechainResignationBuilder = new BridgechainResignationBuilder();

walletManager = new Wallets.WalletManager();
walletManager.registerIndex("byBusiness", businessIndexer);
walletManager.registerIndex("byBridgechain", bridgechainIndexer);

senderWallet = new Wallets.Wallet("ANBkoGqWeTSiaEVgVzSKZd3jS7UWzv9PSo");
senderWallet.balance = Utils.BigNumber.make(4527654310);
Expand Down Expand Up @@ -184,70 +160,4 @@ describe("should test marketplace transaction handlers", () => {
).rejects.toThrowError(BusinessIsResignedError);
});
});

describe("should test bridgechain registration handler", () => {
it("should fail, because business is not registered", async () => {
const actual = bridgechianRegistrationBuilder
.bridgechainRegistrationAsset(bridgechainRegistrationAsset1)
.fee("50000000")
.nonce("1")
.sign("clay harbor enemy utility margin pretty hub comic piece aerobic umbrella acquire");

await expect(
bridgechainRegistrationHandler.throwIfCannotBeApplied(actual.build(), senderWallet, walletManager),
).rejects.toThrowError(WalletIsNotBusinessError);
});

it("should pass, because business is registered", async () => {
const businessRegistration = businessRegistrationBuilder
.businessRegistrationAsset({
name: "businessName",
website: "www.website.com",
})
.fee("50000000")
.nonce("1")
.sign("clay harbor enemy utility margin pretty hub comic piece aerobic umbrella acquire");
await businessRegistrationHandler.applyToSender(businessRegistration.build(), walletManager);

const bridgechainRegistration = bridgechianRegistrationBuilder
.bridgechainRegistrationAsset(bridgechainRegistrationAsset1)
.fee("50000000")
.nonce("2")
.sign("clay harbor enemy utility margin pretty hub comic piece aerobic umbrella acquire");

const bridgechainRegistrationBuilded = bridgechainRegistration.build();

await expect(
bridgechainRegistrationHandler.applyToSender(bridgechainRegistrationBuilded, walletManager),
).toResolve();

expect(
senderWallet.getAttribute<IBusinessWalletProperty>("business").bridgechains[0].bridgechainNonce,
).toBe(1001);

bridgechainRegistration.bridgechainRegistrationAsset(bridgechainRegistrationAsset2).nonce("3");
await expect(
bridgechainRegistrationHandler.applyToSender(bridgechainRegistration.build(), walletManager),
).toResolve();

expect(
senderWallet.getAttribute<IBusinessWalletProperty>("business").bridgechains[1].bridgechainNonce,
).toBe(1002);

const bridgechainResignation = bridgechainResignationBuilder
.businessResignationAsset(bridgechainRegistrationBuilded.id)
.fee("50000000")
.nonce("4")
.sign("clay harbor enemy utility margin pretty hub comic piece aerobic umbrella acquire");

await expect(
bridgechainResignationHandler.applyToSender(bridgechainResignation.build(), walletManager),
).toResolve();

bridgechainResignation.nonce("5");
await expect(
bridgechainResignationHandler.applyToSender(bridgechainResignation.build(), walletManager),
).rejects.toThrowError(BridgechainIsResignedError);
});
});
});