From 374ea72340ae03b7b1b2ab0eee95654ad0f6da74 Mon Sep 17 00:00:00 2001 From: Segfault <5221072+Segfaultd@users.noreply.github.com> Date: Tue, 8 Jun 2021 12:57:15 +0200 Subject: [PATCH 1/8] Reflect beam protocol upgrade --- src/codec/chain/beam/beam.ts | 91 +++++++++++++++++++++++------- src/codec/chain/beam/query.ts | 2 +- src/codec/chain/beam/tx.ts | 59 ++++++++++++------- src/messages/beam/MsgOpenBeam.ts | 5 +- src/messages/beam/MsgUpdateBeam.ts | 4 +- tests/client.test.ts | 48 ++++++++++++---- 6 files changed, 153 insertions(+), 56 deletions(-) diff --git a/src/codec/chain/beam/beam.ts b/src/codec/chain/beam/beam.ts index e55e6d7..d4e27fe 100644 --- a/src/codec/chain/beam/beam.ts +++ b/src/codec/chain/beam/beam.ts @@ -1,6 +1,7 @@ /* eslint-disable */ import Long from 'long'; import _m0 from 'protobufjs/minimal'; +import { Coin } from '../../cosmos/base/v1beta1/coin'; export const protobufPackage = 'lum.network.beam'; @@ -8,7 +9,6 @@ export enum BeamState { OPEN = 0, CANCELED = 1, CLOSED = 2, - CLAIMED = 3, UNRECOGNIZED = -1, } @@ -23,9 +23,6 @@ export function beamStateFromJSON(object: any): BeamState { case 2: case 'CLOSED': return BeamState.CLOSED; - case 3: - case 'CLAIMED': - return BeamState.CLAIMED; case -1: case 'UNRECOGNIZED': default: @@ -41,8 +38,6 @@ export function beamStateToJSON(object: BeamState): string { return 'CANCELED'; case BeamState.CLOSED: return 'CLOSED'; - case BeamState.CLAIMED: - return 'CLAIMED'; default: return 'UNKNOWN'; } @@ -161,9 +156,12 @@ export interface BeamSchemeReward { export interface Beam { creator: string; id: string; - amount: Long; + amount?: Coin; status: BeamState; secret: string; + owner: string; + fundsWithdrawn: boolean; + claimed: boolean; schema: string; reward?: BeamSchemeReward; review?: BeamSchemeReview; @@ -1907,7 +1905,7 @@ export const BeamSchemeReward = { }, }; -const baseBeam: object = { creator: '', id: '', amount: Long.ZERO, status: 0, secret: '', schema: '' }; +const baseBeam: object = { creator: '', id: '', status: 0, secret: '', owner: '', fundsWithdrawn: false, claimed: false, schema: '' }; export const Beam = { encode(message: Beam, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { @@ -1917,8 +1915,8 @@ export const Beam = { if (message.id !== '') { writer.uint32(18).string(message.id); } - if (!message.amount.isZero()) { - writer.uint32(24).int64(message.amount); + if (message.amount !== undefined) { + Coin.encode(message.amount, writer.uint32(26).fork()).ldelim(); } if (message.status !== 0) { writer.uint32(32).int32(message.status); @@ -1926,14 +1924,23 @@ export const Beam = { if (message.secret !== '') { writer.uint32(42).string(message.secret); } + if (message.owner !== '') { + writer.uint32(50).string(message.owner); + } + if (message.fundsWithdrawn === true) { + writer.uint32(56).bool(message.fundsWithdrawn); + } + if (message.claimed === true) { + writer.uint32(64).bool(message.claimed); + } if (message.schema !== '') { - writer.uint32(50).string(message.schema); + writer.uint32(74).string(message.schema); } if (message.reward !== undefined) { - BeamSchemeReward.encode(message.reward, writer.uint32(58).fork()).ldelim(); + BeamSchemeReward.encode(message.reward, writer.uint32(82).fork()).ldelim(); } if (message.review !== undefined) { - BeamSchemeReview.encode(message.review, writer.uint32(66).fork()).ldelim(); + BeamSchemeReview.encode(message.review, writer.uint32(90).fork()).ldelim(); } return writer; }, @@ -1952,7 +1959,7 @@ export const Beam = { message.id = reader.string(); break; case 3: - message.amount = reader.int64() as Long; + message.amount = Coin.decode(reader, reader.uint32()); break; case 4: message.status = reader.int32() as any; @@ -1961,12 +1968,21 @@ export const Beam = { message.secret = reader.string(); break; case 6: - message.schema = reader.string(); + message.owner = reader.string(); break; case 7: - message.reward = BeamSchemeReward.decode(reader, reader.uint32()); + message.fundsWithdrawn = reader.bool(); break; case 8: + message.claimed = reader.bool(); + break; + case 9: + message.schema = reader.string(); + break; + case 10: + message.reward = BeamSchemeReward.decode(reader, reader.uint32()); + break; + case 11: message.review = BeamSchemeReview.decode(reader, reader.uint32()); break; default: @@ -1990,9 +2006,9 @@ export const Beam = { message.id = ''; } if (object.amount !== undefined && object.amount !== null) { - message.amount = Long.fromString(object.amount); + message.amount = Coin.fromJSON(object.amount); } else { - message.amount = Long.ZERO; + message.amount = undefined; } if (object.status !== undefined && object.status !== null) { message.status = beamStateFromJSON(object.status); @@ -2004,6 +2020,21 @@ export const Beam = { } else { message.secret = ''; } + if (object.owner !== undefined && object.owner !== null) { + message.owner = String(object.owner); + } else { + message.owner = ''; + } + if (object.fundsWithdrawn !== undefined && object.fundsWithdrawn !== null) { + message.fundsWithdrawn = Boolean(object.fundsWithdrawn); + } else { + message.fundsWithdrawn = false; + } + if (object.claimed !== undefined && object.claimed !== null) { + message.claimed = Boolean(object.claimed); + } else { + message.claimed = false; + } if (object.schema !== undefined && object.schema !== null) { message.schema = String(object.schema); } else { @@ -2026,9 +2057,12 @@ export const Beam = { const obj: any = {}; message.creator !== undefined && (obj.creator = message.creator); message.id !== undefined && (obj.id = message.id); - message.amount !== undefined && (obj.amount = (message.amount || Long.ZERO).toString()); + message.amount !== undefined && (obj.amount = message.amount ? Coin.toJSON(message.amount) : undefined); message.status !== undefined && (obj.status = beamStateToJSON(message.status)); message.secret !== undefined && (obj.secret = message.secret); + message.owner !== undefined && (obj.owner = message.owner); + message.fundsWithdrawn !== undefined && (obj.fundsWithdrawn = message.fundsWithdrawn); + message.claimed !== undefined && (obj.claimed = message.claimed); message.schema !== undefined && (obj.schema = message.schema); message.reward !== undefined && (obj.reward = message.reward ? BeamSchemeReward.toJSON(message.reward) : undefined); message.review !== undefined && (obj.review = message.review ? BeamSchemeReview.toJSON(message.review) : undefined); @@ -2048,9 +2082,9 @@ export const Beam = { message.id = ''; } if (object.amount !== undefined && object.amount !== null) { - message.amount = object.amount as Long; + message.amount = Coin.fromPartial(object.amount); } else { - message.amount = Long.ZERO; + message.amount = undefined; } if (object.status !== undefined && object.status !== null) { message.status = object.status; @@ -2062,6 +2096,21 @@ export const Beam = { } else { message.secret = ''; } + if (object.owner !== undefined && object.owner !== null) { + message.owner = object.owner; + } else { + message.owner = ''; + } + if (object.fundsWithdrawn !== undefined && object.fundsWithdrawn !== null) { + message.fundsWithdrawn = object.fundsWithdrawn; + } else { + message.fundsWithdrawn = false; + } + if (object.claimed !== undefined && object.claimed !== null) { + message.claimed = object.claimed; + } else { + message.claimed = false; + } if (object.schema !== undefined && object.schema !== null) { message.schema = object.schema; } else { diff --git a/src/codec/chain/beam/query.ts b/src/codec/chain/beam/query.ts index d04d751..6cc7f5f 100644 --- a/src/codec/chain/beam/query.ts +++ b/src/codec/chain/beam/query.ts @@ -2,7 +2,7 @@ import Long from 'long'; import _m0 from 'protobufjs/minimal'; import { Beam } from './beam'; -import { PageRequest, PageResponse } from "../../cosmos/base/query/v1beta1/pagination"; +import { PageRequest, PageResponse } from '../../cosmos/base/query/v1beta1/pagination'; export const protobufPackage = 'lum.network.beam'; diff --git a/src/codec/chain/beam/tx.ts b/src/codec/chain/beam/tx.ts index 0229d24..d21d4ff 100644 --- a/src/codec/chain/beam/tx.ts +++ b/src/codec/chain/beam/tx.ts @@ -1,6 +1,7 @@ /* eslint-disable */ import Long from 'long'; import _m0 from 'protobufjs/minimal'; +import { Coin } from '../../cosmos/base/v1beta1/coin'; import { BeamSchemeReward, BeamSchemeReview, BeamState, beamStateFromJSON, beamStateToJSON } from './beam'; export const protobufPackage = 'lum.network.beam'; @@ -9,16 +10,17 @@ export interface MsgOpenBeam { id: string; creator: string; secret: string; - amount: Long; + amount?: Coin; schema: string; reward?: BeamSchemeReward; review?: BeamSchemeReview; + owner: string; } export interface MsgUpdateBeam { updater: string; id: string; - amount: Long; + amount?: Coin; status: BeamState; reward?: BeamSchemeReward; review?: BeamSchemeReview; @@ -30,7 +32,7 @@ export interface MsgClaimBeam { secret: string; } -const baseMsgOpenBeam: object = { id: '', creator: '', secret: '', amount: Long.ZERO, schema: '' }; +const baseMsgOpenBeam: object = { id: '', creator: '', secret: '', schema: '', owner: '' }; export const MsgOpenBeam = { encode(message: MsgOpenBeam, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { @@ -43,8 +45,8 @@ export const MsgOpenBeam = { if (message.secret !== '') { writer.uint32(26).string(message.secret); } - if (!message.amount.isZero()) { - writer.uint32(32).int64(message.amount); + if (message.amount !== undefined) { + Coin.encode(message.amount, writer.uint32(34).fork()).ldelim(); } if (message.schema !== '') { writer.uint32(42).string(message.schema); @@ -55,6 +57,9 @@ export const MsgOpenBeam = { if (message.review !== undefined) { BeamSchemeReview.encode(message.review, writer.uint32(58).fork()).ldelim(); } + if (message.owner !== '') { + writer.uint32(66).string(message.owner); + } return writer; }, @@ -75,7 +80,7 @@ export const MsgOpenBeam = { message.secret = reader.string(); break; case 4: - message.amount = reader.int64() as Long; + message.amount = Coin.decode(reader, reader.uint32()); break; case 5: message.schema = reader.string(); @@ -86,6 +91,9 @@ export const MsgOpenBeam = { case 7: message.review = BeamSchemeReview.decode(reader, reader.uint32()); break; + case 8: + message.owner = reader.string(); + break; default: reader.skipType(tag & 7); break; @@ -112,9 +120,9 @@ export const MsgOpenBeam = { message.secret = ''; } if (object.amount !== undefined && object.amount !== null) { - message.amount = Long.fromString(object.amount); + message.amount = Coin.fromJSON(object.amount); } else { - message.amount = Long.ZERO; + message.amount = undefined; } if (object.schema !== undefined && object.schema !== null) { message.schema = String(object.schema); @@ -131,6 +139,11 @@ export const MsgOpenBeam = { } else { message.review = undefined; } + if (object.owner !== undefined && object.owner !== null) { + message.owner = String(object.owner); + } else { + message.owner = ''; + } return message; }, @@ -139,10 +152,11 @@ export const MsgOpenBeam = { message.id !== undefined && (obj.id = message.id); message.creator !== undefined && (obj.creator = message.creator); message.secret !== undefined && (obj.secret = message.secret); - message.amount !== undefined && (obj.amount = (message.amount || Long.ZERO).toString()); + message.amount !== undefined && (obj.amount = message.amount ? Coin.toJSON(message.amount) : undefined); message.schema !== undefined && (obj.schema = message.schema); message.reward !== undefined && (obj.reward = message.reward ? BeamSchemeReward.toJSON(message.reward) : undefined); message.review !== undefined && (obj.review = message.review ? BeamSchemeReview.toJSON(message.review) : undefined); + message.owner !== undefined && (obj.owner = message.owner); return obj; }, @@ -164,9 +178,9 @@ export const MsgOpenBeam = { message.secret = ''; } if (object.amount !== undefined && object.amount !== null) { - message.amount = object.amount as Long; + message.amount = Coin.fromPartial(object.amount); } else { - message.amount = Long.ZERO; + message.amount = undefined; } if (object.schema !== undefined && object.schema !== null) { message.schema = object.schema; @@ -183,11 +197,16 @@ export const MsgOpenBeam = { } else { message.review = undefined; } + if (object.owner !== undefined && object.owner !== null) { + message.owner = object.owner; + } else { + message.owner = ''; + } return message; }, }; -const baseMsgUpdateBeam: object = { updater: '', id: '', amount: Long.ZERO, status: 0 }; +const baseMsgUpdateBeam: object = { updater: '', id: '', status: 0 }; export const MsgUpdateBeam = { encode(message: MsgUpdateBeam, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { @@ -197,8 +216,8 @@ export const MsgUpdateBeam = { if (message.id !== '') { writer.uint32(18).string(message.id); } - if (!message.amount.isZero()) { - writer.uint32(24).int64(message.amount); + if (message.amount !== undefined) { + Coin.encode(message.amount, writer.uint32(26).fork()).ldelim(); } if (message.status !== 0) { writer.uint32(32).int32(message.status); @@ -226,7 +245,7 @@ export const MsgUpdateBeam = { message.id = reader.string(); break; case 3: - message.amount = reader.int64() as Long; + message.amount = Coin.decode(reader, reader.uint32()); break; case 4: message.status = reader.int32() as any; @@ -258,9 +277,9 @@ export const MsgUpdateBeam = { message.id = ''; } if (object.amount !== undefined && object.amount !== null) { - message.amount = Long.fromString(object.amount); + message.amount = Coin.fromJSON(object.amount); } else { - message.amount = Long.ZERO; + message.amount = undefined; } if (object.status !== undefined && object.status !== null) { message.status = beamStateFromJSON(object.status); @@ -284,7 +303,7 @@ export const MsgUpdateBeam = { const obj: any = {}; message.updater !== undefined && (obj.updater = message.updater); message.id !== undefined && (obj.id = message.id); - message.amount !== undefined && (obj.amount = (message.amount || Long.ZERO).toString()); + message.amount !== undefined && (obj.amount = message.amount ? Coin.toJSON(message.amount) : undefined); message.status !== undefined && (obj.status = beamStateToJSON(message.status)); message.reward !== undefined && (obj.reward = message.reward ? BeamSchemeReward.toJSON(message.reward) : undefined); message.review !== undefined && (obj.review = message.review ? BeamSchemeReview.toJSON(message.review) : undefined); @@ -304,9 +323,9 @@ export const MsgUpdateBeam = { message.id = ''; } if (object.amount !== undefined && object.amount !== null) { - message.amount = object.amount as Long; + message.amount = Coin.fromPartial(object.amount); } else { - message.amount = Long.ZERO; + message.amount = undefined; } if (object.status !== undefined && object.status !== null) { message.status = object.status; diff --git a/src/messages/beam/MsgOpenBeam.ts b/src/messages/beam/MsgOpenBeam.ts index d933537..50dc746 100644 --- a/src/messages/beam/MsgOpenBeam.ts +++ b/src/messages/beam/MsgOpenBeam.ts @@ -1,11 +1,11 @@ import { Message } from '../Message'; -import Long from 'long'; import { BeamSchemeReview, BeamSchemeReward } from '../../codec/chain/beam/beam'; import { MsgOpenBeam } from '../../codec/chain/beam/tx'; +import { Coin } from '../../types'; export const MsgOpenBeamUrl = '/lum.network.beam.MsgOpenBeam'; -export const BuildMsgOpenBeam = (id: string, creator: string, amount: Long, secret: string, schema: string, reward?: BeamSchemeReward, review?: BeamSchemeReview): Message => { +export const BuildMsgOpenBeam = (id: string, creator: string, amount: Coin, secret: string, schema: string, owner?: string, reward?: BeamSchemeReward, review?: BeamSchemeReview): Message => { return { typeUrl: MsgOpenBeamUrl, value: { @@ -15,6 +15,7 @@ export const BuildMsgOpenBeam = (id: string, creator: string, amount: Long, secr secret, schema, reward, + owner, review, } as MsgOpenBeam, }; diff --git a/src/messages/beam/MsgUpdateBeam.ts b/src/messages/beam/MsgUpdateBeam.ts index d77e50e..97797a1 100644 --- a/src/messages/beam/MsgUpdateBeam.ts +++ b/src/messages/beam/MsgUpdateBeam.ts @@ -1,11 +1,11 @@ import { Message } from '../Message'; -import Long from 'long'; import { BeamSchemeReview, BeamSchemeReward, BeamState } from '../../codec/chain/beam/beam'; import { MsgUpdateBeam } from '../../codec/chain/beam/tx'; +import { Coin } from '../../types'; export const MsgUpdateBeamUrl = '/lum.network.beam.MsgUpdateBeam'; -export const BuildMsgUpdateBeam = (updater: string, id: string, amount: Long, status?: BeamState, reward?: BeamSchemeReward, review?: BeamSchemeReview): Message => { +export const BuildMsgUpdateBeam = (updater: string, id: string, amount: Coin, status?: BeamState, reward?: BeamSchemeReward, review?: BeamSchemeReview): Message => { return { typeUrl: MsgUpdateBeamUrl, value: { diff --git a/tests/client.test.ts b/tests/client.test.ts index 4df0581..7ad63bf 100644 --- a/tests/client.test.ts +++ b/tests/client.test.ts @@ -1,12 +1,12 @@ -import { LumWallet, LumWalletFactory, LumClient, LumUtils, LumConstants, LumRegistry, LumTypes, LumMessages, LumPaperWallet } from '../src'; +import { LumWallet, LumWalletFactory, LumClient, LumUtils, LumConstants, LumRegistry, LumTypes, LumMessages } from '../src'; import axios from 'axios'; -import Long from 'long'; +import { BeamSchemeReward } from '../src/codec/chain/beam/beam'; const randomString = (): string => { return Math.random().toString(36).substring(7); -} +}; -describe("LumClient", () => { +describe('LumClient', () => { let clt: LumClient; let w1: LumWallet; let w2: LumWallet; @@ -47,7 +47,7 @@ describe("LumClient", () => { await expect(clt.disconnect()).resolves.toBeTruthy(); }); - it('Should be able to use beam features', async () => { + it('Should open a beam review transaction', async () => { const beamId = randomString(); // Here we wait until the faucet transaction get dispatched and the account finally exists on the blockchain @@ -57,7 +57,35 @@ describe("LumClient", () => { const chainId = await clt.getChainId(); - const openBeamMsg = LumMessages.BuildMsgOpenBeam(beamId, w1.getAddress(), new Long(100), 'test', null, null); + const amount: LumTypes.Coin = { + amount: '1', + denom: LumConstants.MicroLumDenom, + }; + + const openBeamMsg = LumMessages.BuildMsgOpenBeam( + beamId, + w1.getAddress(), + amount, + 'test', + 'lum-network/review', + null, + BeamSchemeReward.fromPartial({ + reward: { + amount: 1, + status: 'pending', + currency: 'EUR', + maxAmount: 2, + trigger: 'purchase', + details: [], + }, + verifier: { + name: 'test', + url: 'https://test.com', + signature: 'test', + }, + }), + null, + ); const fee = { amount: [{ denom: LumConstants.MicroLumDenom, amount: '1' }], @@ -84,12 +112,12 @@ describe("LumClient", () => { it('Should expose basic information', async () => { const height = (await clt.getBlockHeight()) - 1; - expect(clt.getChainId()).resolves.toEqual("lumnetwork-testnet"); + expect(clt.getChainId()).resolves.toEqual('lumnetwork-testnet'); expect(height).toBeGreaterThan(0); expect(clt.getBlock(height)).resolves.toBeTruthy(); }); - it("should expose tendermint rpcs", async () => { + it('should expose tendermint rpcs', async () => { const height = (await clt.getBlockHeight()) - 1; expect(height).toBeGreaterThan(0); expect(clt.tmClient.health()).resolves.toBeNull(); @@ -111,7 +139,7 @@ describe("LumClient", () => { expect(parseFloat(lumSupply.amount)).toBeGreaterThan(0); }); - it("Should expose staking module", async () => { + it('Should expose staking module', async () => { const validators = await clt.tmClient.validatorsAll(); expect(validators.validators.length).toBeGreaterThanOrEqual(1); const block = await clt.getBlock(); @@ -151,7 +179,7 @@ describe("LumClient", () => { expect(parseFloat(lumBalance.amount)).toBeGreaterThan(0); }); - it("Should expose distribution module", async () => { + it('Should expose distribution module', async () => { // Get validators const validators = await clt.tmClient.validatorsAll(); expect(validators.validators.length).toBeGreaterThanOrEqual(1); From 95d2b2f3e008eac2ae28c37dbf75ed11d059cf6b Mon Sep 17 00:00:00 2001 From: Segfault <5221072+Segfaultd@users.noreply.github.com> Date: Tue, 8 Jun 2021 13:06:07 +0200 Subject: [PATCH 2/8] Added another test for beam review --- tests/client.test.ts | 116 +++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 111 insertions(+), 5 deletions(-) diff --git a/tests/client.test.ts b/tests/client.test.ts index 7ad63bf..3ed6a80 100644 --- a/tests/client.test.ts +++ b/tests/client.test.ts @@ -1,6 +1,6 @@ import { LumWallet, LumWalletFactory, LumClient, LumUtils, LumConstants, LumRegistry, LumTypes, LumMessages } from '../src'; import axios from 'axios'; -import { BeamSchemeReward } from '../src/codec/chain/beam/beam'; +import { BeamSchemeReview, BeamSchemeReward } from "../src/codec/chain/beam/beam"; const randomString = (): string => { return Math.random().toString(36).substring(7); @@ -47,7 +47,115 @@ describe('LumClient', () => { await expect(clt.disconnect()).resolves.toBeTruthy(); }); - it('Should open a beam review transaction', async () => { + it('should open a beam review transaction', async () => { + const beamId = randomString(); + + // Here we wait until the faucet transaction get dispatched and the account finally exists on the blockchain + // This should be improved since... you know... + const acc = await clt.getAccount(w1.getAddress()); + expect(acc).toBeTruthy(); + + const chainId = await clt.getChainId(); + + const amount: LumTypes.Coin = { + amount: '1', + denom: LumConstants.MicroLumDenom, + }; + + const openBeamMsg = LumMessages.BuildMsgOpenBeam( + beamId, + w1.getAddress(), + amount, + 'test', + 'lum-network/review', + null, + null, + BeamSchemeReview.fromPartial({ + reward: { + amount: 1, + status: "pending", + trigger: "purchase", + maxAmount: 2, + currency: "EUR", + }, + verifier: { + name: 'test', + url: 'https://test.com', + signature: 'test', + }, + reviewer: { + reviewerId: "kqjsndqj342", + name: "John Doe", + isAnonymous: false + }, + merchantReview: { + reviewId: "sjqdqsd444sq", + reviewUrl: "https://google.com", + title: "Good", + orderId: "js44", + ratingUrl: "https://google.com", + timestamp: (new Date).toString(), + collectionMethod: "purchase", + merchantUrl: "https://google.com", + content: { + overall: "Not bad not good", + customerService: "Not good not bad" + }, + ratings: { + nps: 3, + customerService: 3, + overall: 3 + } + }, + productsReviews: [ + { + title: "Product", + timestamp: (new Date).toString(), + ratingUrl: "https://google.com", + reviewUrl: "https://google.com", + orderId: "123445", + reviewId: "54321", + ratings: { + overall: 3, + quality: 3 + }, + content: { + overall: "a", + cons: "b", + pros: "d" + }, + collectionMethod: "purchase", + medias: [], + products: [] + } + ] + }), + ); + + const fee = { + amount: [{ denom: LumConstants.MicroLumDenom, amount: '1' }], + gas: '100000', + }; + const doc = { + accountNumber: acc.accountNumber, + chainId, + fee: fee, + memo: 'Beam review transaction', + messages: [openBeamMsg], + signers: [ + { + accountNumber: acc.accountNumber, + sequence: acc.sequence, + publicKey: w1.getPublicKey(), + }, + ], + }; + + const tx = await clt.signAndBroadcastTx(w1, doc); + expect(tx.deliverTx.code).toBe(0); + }) + + it('Should open a beam reward transaction', async () => { const beamId = randomString(); // Here we wait until the faucet transaction get dispatched and the account finally exists on the blockchain @@ -95,7 +203,7 @@ describe('LumClient', () => { accountNumber: acc.accountNumber, chainId, fee: fee, - memo: 'Just a open beam transaction', + memo: 'Beam reward transaction', messages: [openBeamMsg], signers: [ { @@ -209,8 +317,6 @@ describe('LumClient', () => { expect(delegValidators.validators.length).toBeGreaterThan(0); }); - it('Should open a beam', async () => {}); - it('Should allow multiple signers per transaction', async () => { const acc1 = await clt.getAccount(w1.getAddress()); const acc2 = await clt.getAccount(w2.getAddress()); From 8823443ed1dc2c590bb86f7901e0d94591e64f0d Mon Sep 17 00:00:00 2001 From: Segfault <5221072+Segfaultd@users.noreply.github.com> Date: Tue, 8 Jun 2021 18:04:37 +0200 Subject: [PATCH 3/8] Reflect protocol upgrade --- src/codec/chain/beam/beam.ts | 221 +++++++++++++--------------------- src/codec/chain/beam/tx.ts | 226 +++++++++++++++++------------------ 2 files changed, 194 insertions(+), 253 deletions(-) diff --git a/src/codec/chain/beam/beam.ts b/src/codec/chain/beam/beam.ts index d4e27fe..4a7c6c5 100644 --- a/src/codec/chain/beam/beam.ts +++ b/src/codec/chain/beam/beam.ts @@ -140,7 +140,7 @@ export interface BeamProductReview_BeamProduct_BeamProductIds { asins: string[]; } -export interface BeamSchemeReview { +export interface BeamData { reward?: BeamReward; verifier?: BeamVerifier; reviewer?: BeamReviewer; @@ -148,23 +148,19 @@ export interface BeamSchemeReview { productsReviews: BeamProductReview[]; } -export interface BeamSchemeReward { - reward?: BeamReward; - verifier?: BeamVerifier; -} - export interface Beam { - creator: string; + creatorAddress: string; id: string; amount?: Coin; status: BeamState; secret: string; - owner: string; + claimAddress: string; fundsWithdrawn: boolean; claimed: boolean; + cancelReason: string; + hideContent: boolean; schema: string; - reward?: BeamSchemeReward; - review?: BeamSchemeReview; + data?: BeamData; } const baseBeamMedia: object = { mimetype: '', url: '', thumbnailUrl: '' }; @@ -1703,10 +1699,10 @@ export const BeamProductReview_BeamProduct_BeamProductIds = { }, }; -const baseBeamSchemeReview: object = {}; +const baseBeamData: object = {}; -export const BeamSchemeReview = { - encode(message: BeamSchemeReview, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { +export const BeamData = { + encode(message: BeamData, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { if (message.reward !== undefined) { BeamReward.encode(message.reward, writer.uint32(10).fork()).ldelim(); } @@ -1725,10 +1721,10 @@ export const BeamSchemeReview = { return writer; }, - decode(input: _m0.Reader | Uint8Array, length?: number): BeamSchemeReview { + decode(input: _m0.Reader | Uint8Array, length?: number): BeamData { const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input); let end = length === undefined ? reader.len : reader.pos + length; - const message = { ...baseBeamSchemeReview } as BeamSchemeReview; + const message = { ...baseBeamData } as BeamData; message.productsReviews = []; while (reader.pos < end) { const tag = reader.uint32(); @@ -1756,8 +1752,8 @@ export const BeamSchemeReview = { return message; }, - fromJSON(object: any): BeamSchemeReview { - const message = { ...baseBeamSchemeReview } as BeamSchemeReview; + fromJSON(object: any): BeamData { + const message = { ...baseBeamData } as BeamData; message.productsReviews = []; if (object.reward !== undefined && object.reward !== null) { message.reward = BeamReward.fromJSON(object.reward); @@ -1787,7 +1783,7 @@ export const BeamSchemeReview = { return message; }, - toJSON(message: BeamSchemeReview): unknown { + toJSON(message: BeamData): unknown { const obj: any = {}; message.reward !== undefined && (obj.reward = message.reward ? BeamReward.toJSON(message.reward) : undefined); message.verifier !== undefined && (obj.verifier = message.verifier ? BeamVerifier.toJSON(message.verifier) : undefined); @@ -1801,8 +1797,8 @@ export const BeamSchemeReview = { return obj; }, - fromPartial(object: DeepPartial): BeamSchemeReview { - const message = { ...baseBeamSchemeReview } as BeamSchemeReview; + fromPartial(object: DeepPartial): BeamData { + const message = { ...baseBeamData } as BeamData; message.productsReviews = []; if (object.reward !== undefined && object.reward !== null) { message.reward = BeamReward.fromPartial(object.reward); @@ -1833,84 +1829,12 @@ export const BeamSchemeReview = { }, }; -const baseBeamSchemeReward: object = {}; - -export const BeamSchemeReward = { - encode(message: BeamSchemeReward, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.reward !== undefined) { - BeamReward.encode(message.reward, writer.uint32(10).fork()).ldelim(); - } - if (message.verifier !== undefined) { - BeamVerifier.encode(message.verifier, writer.uint32(18).fork()).ldelim(); - } - return writer; - }, - - decode(input: _m0.Reader | Uint8Array, length?: number): BeamSchemeReward { - const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input); - let end = length === undefined ? reader.len : reader.pos + length; - const message = { ...baseBeamSchemeReward } as BeamSchemeReward; - while (reader.pos < end) { - const tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - message.reward = BeamReward.decode(reader, reader.uint32()); - break; - case 2: - message.verifier = BeamVerifier.decode(reader, reader.uint32()); - break; - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }, - - fromJSON(object: any): BeamSchemeReward { - const message = { ...baseBeamSchemeReward } as BeamSchemeReward; - if (object.reward !== undefined && object.reward !== null) { - message.reward = BeamReward.fromJSON(object.reward); - } else { - message.reward = undefined; - } - if (object.verifier !== undefined && object.verifier !== null) { - message.verifier = BeamVerifier.fromJSON(object.verifier); - } else { - message.verifier = undefined; - } - return message; - }, - - toJSON(message: BeamSchemeReward): unknown { - const obj: any = {}; - message.reward !== undefined && (obj.reward = message.reward ? BeamReward.toJSON(message.reward) : undefined); - message.verifier !== undefined && (obj.verifier = message.verifier ? BeamVerifier.toJSON(message.verifier) : undefined); - return obj; - }, - - fromPartial(object: DeepPartial): BeamSchemeReward { - const message = { ...baseBeamSchemeReward } as BeamSchemeReward; - if (object.reward !== undefined && object.reward !== null) { - message.reward = BeamReward.fromPartial(object.reward); - } else { - message.reward = undefined; - } - if (object.verifier !== undefined && object.verifier !== null) { - message.verifier = BeamVerifier.fromPartial(object.verifier); - } else { - message.verifier = undefined; - } - return message; - }, -}; - -const baseBeam: object = { creator: '', id: '', status: 0, secret: '', owner: '', fundsWithdrawn: false, claimed: false, schema: '' }; +const baseBeam: object = { creatorAddress: '', id: '', status: 0, secret: '', claimAddress: '', fundsWithdrawn: false, claimed: false, cancelReason: '', hideContent: false, schema: '' }; export const Beam = { encode(message: Beam, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.creator !== '') { - writer.uint32(10).string(message.creator); + if (message.creatorAddress !== '') { + writer.uint32(10).string(message.creatorAddress); } if (message.id !== '') { writer.uint32(18).string(message.id); @@ -1924,8 +1848,8 @@ export const Beam = { if (message.secret !== '') { writer.uint32(42).string(message.secret); } - if (message.owner !== '') { - writer.uint32(50).string(message.owner); + if (message.claimAddress !== '') { + writer.uint32(50).string(message.claimAddress); } if (message.fundsWithdrawn === true) { writer.uint32(56).bool(message.fundsWithdrawn); @@ -1933,14 +1857,17 @@ export const Beam = { if (message.claimed === true) { writer.uint32(64).bool(message.claimed); } - if (message.schema !== '') { - writer.uint32(74).string(message.schema); + if (message.cancelReason !== '') { + writer.uint32(74).string(message.cancelReason); } - if (message.reward !== undefined) { - BeamSchemeReward.encode(message.reward, writer.uint32(82).fork()).ldelim(); + if (message.hideContent === true) { + writer.uint32(80).bool(message.hideContent); + } + if (message.schema !== '') { + writer.uint32(90).string(message.schema); } - if (message.review !== undefined) { - BeamSchemeReview.encode(message.review, writer.uint32(90).fork()).ldelim(); + if (message.data !== undefined) { + BeamData.encode(message.data, writer.uint32(98).fork()).ldelim(); } return writer; }, @@ -1953,7 +1880,7 @@ export const Beam = { const tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.creator = reader.string(); + message.creatorAddress = reader.string(); break; case 2: message.id = reader.string(); @@ -1968,7 +1895,7 @@ export const Beam = { message.secret = reader.string(); break; case 6: - message.owner = reader.string(); + message.claimAddress = reader.string(); break; case 7: message.fundsWithdrawn = reader.bool(); @@ -1977,13 +1904,16 @@ export const Beam = { message.claimed = reader.bool(); break; case 9: - message.schema = reader.string(); + message.cancelReason = reader.string(); break; case 10: - message.reward = BeamSchemeReward.decode(reader, reader.uint32()); + message.hideContent = reader.bool(); break; case 11: - message.review = BeamSchemeReview.decode(reader, reader.uint32()); + message.schema = reader.string(); + break; + case 12: + message.data = BeamData.decode(reader, reader.uint32()); break; default: reader.skipType(tag & 7); @@ -1995,10 +1925,10 @@ export const Beam = { fromJSON(object: any): Beam { const message = { ...baseBeam } as Beam; - if (object.creator !== undefined && object.creator !== null) { - message.creator = String(object.creator); + if (object.creatorAddress !== undefined && object.creatorAddress !== null) { + message.creatorAddress = String(object.creatorAddress); } else { - message.creator = ''; + message.creatorAddress = ''; } if (object.id !== undefined && object.id !== null) { message.id = String(object.id); @@ -2020,10 +1950,10 @@ export const Beam = { } else { message.secret = ''; } - if (object.owner !== undefined && object.owner !== null) { - message.owner = String(object.owner); + if (object.claimAddress !== undefined && object.claimAddress !== null) { + message.claimAddress = String(object.claimAddress); } else { - message.owner = ''; + message.claimAddress = ''; } if (object.fundsWithdrawn !== undefined && object.fundsWithdrawn !== null) { message.fundsWithdrawn = Boolean(object.fundsWithdrawn); @@ -2035,46 +1965,52 @@ export const Beam = { } else { message.claimed = false; } + if (object.cancelReason !== undefined && object.cancelReason !== null) { + message.cancelReason = String(object.cancelReason); + } else { + message.cancelReason = ''; + } + if (object.hideContent !== undefined && object.hideContent !== null) { + message.hideContent = Boolean(object.hideContent); + } else { + message.hideContent = false; + } if (object.schema !== undefined && object.schema !== null) { message.schema = String(object.schema); } else { message.schema = ''; } - if (object.reward !== undefined && object.reward !== null) { - message.reward = BeamSchemeReward.fromJSON(object.reward); - } else { - message.reward = undefined; - } - if (object.review !== undefined && object.review !== null) { - message.review = BeamSchemeReview.fromJSON(object.review); + if (object.data !== undefined && object.data !== null) { + message.data = BeamData.fromJSON(object.data); } else { - message.review = undefined; + message.data = undefined; } return message; }, toJSON(message: Beam): unknown { const obj: any = {}; - message.creator !== undefined && (obj.creator = message.creator); + message.creatorAddress !== undefined && (obj.creatorAddress = message.creatorAddress); message.id !== undefined && (obj.id = message.id); message.amount !== undefined && (obj.amount = message.amount ? Coin.toJSON(message.amount) : undefined); message.status !== undefined && (obj.status = beamStateToJSON(message.status)); message.secret !== undefined && (obj.secret = message.secret); - message.owner !== undefined && (obj.owner = message.owner); + message.claimAddress !== undefined && (obj.claimAddress = message.claimAddress); message.fundsWithdrawn !== undefined && (obj.fundsWithdrawn = message.fundsWithdrawn); message.claimed !== undefined && (obj.claimed = message.claimed); + message.cancelReason !== undefined && (obj.cancelReason = message.cancelReason); + message.hideContent !== undefined && (obj.hideContent = message.hideContent); message.schema !== undefined && (obj.schema = message.schema); - message.reward !== undefined && (obj.reward = message.reward ? BeamSchemeReward.toJSON(message.reward) : undefined); - message.review !== undefined && (obj.review = message.review ? BeamSchemeReview.toJSON(message.review) : undefined); + message.data !== undefined && (obj.data = message.data ? BeamData.toJSON(message.data) : undefined); return obj; }, fromPartial(object: DeepPartial): Beam { const message = { ...baseBeam } as Beam; - if (object.creator !== undefined && object.creator !== null) { - message.creator = object.creator; + if (object.creatorAddress !== undefined && object.creatorAddress !== null) { + message.creatorAddress = object.creatorAddress; } else { - message.creator = ''; + message.creatorAddress = ''; } if (object.id !== undefined && object.id !== null) { message.id = object.id; @@ -2096,10 +2032,10 @@ export const Beam = { } else { message.secret = ''; } - if (object.owner !== undefined && object.owner !== null) { - message.owner = object.owner; + if (object.claimAddress !== undefined && object.claimAddress !== null) { + message.claimAddress = object.claimAddress; } else { - message.owner = ''; + message.claimAddress = ''; } if (object.fundsWithdrawn !== undefined && object.fundsWithdrawn !== null) { message.fundsWithdrawn = object.fundsWithdrawn; @@ -2111,20 +2047,25 @@ export const Beam = { } else { message.claimed = false; } + if (object.cancelReason !== undefined && object.cancelReason !== null) { + message.cancelReason = object.cancelReason; + } else { + message.cancelReason = ''; + } + if (object.hideContent !== undefined && object.hideContent !== null) { + message.hideContent = object.hideContent; + } else { + message.hideContent = false; + } if (object.schema !== undefined && object.schema !== null) { message.schema = object.schema; } else { message.schema = ''; } - if (object.reward !== undefined && object.reward !== null) { - message.reward = BeamSchemeReward.fromPartial(object.reward); - } else { - message.reward = undefined; - } - if (object.review !== undefined && object.review !== null) { - message.review = BeamSchemeReview.fromPartial(object.review); + if (object.data !== undefined && object.data !== null) { + message.data = BeamData.fromPartial(object.data); } else { - message.review = undefined; + message.data = undefined; } return message; }, diff --git a/src/codec/chain/beam/tx.ts b/src/codec/chain/beam/tx.ts index d21d4ff..4296730 100644 --- a/src/codec/chain/beam/tx.ts +++ b/src/codec/chain/beam/tx.ts @@ -2,45 +2,45 @@ import Long from 'long'; import _m0 from 'protobufjs/minimal'; import { Coin } from '../../cosmos/base/v1beta1/coin'; -import { BeamSchemeReward, BeamSchemeReview, BeamState, beamStateFromJSON, beamStateToJSON } from './beam'; +import { BeamData, BeamState, beamStateFromJSON, beamStateToJSON } from '../beam/beam'; export const protobufPackage = 'lum.network.beam'; export interface MsgOpenBeam { id: string; - creator: string; + creatorAddress: string; secret: string; amount?: Coin; schema: string; - reward?: BeamSchemeReward; - review?: BeamSchemeReview; - owner: string; + data?: BeamData; + claimAddress: string; } export interface MsgUpdateBeam { - updater: string; id: string; + updaterAddress: string; amount?: Coin; status: BeamState; - reward?: BeamSchemeReward; - review?: BeamSchemeReview; + cancelReason: string; + hideContent: boolean; + data?: BeamData; } export interface MsgClaimBeam { - claimer: string; id: string; + claimerAddress: string; secret: string; } -const baseMsgOpenBeam: object = { id: '', creator: '', secret: '', schema: '', owner: '' }; +const baseMsgOpenBeam: object = { id: '', creatorAddress: '', secret: '', schema: '', claimAddress: '' }; export const MsgOpenBeam = { encode(message: MsgOpenBeam, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { if (message.id !== '') { writer.uint32(10).string(message.id); } - if (message.creator !== '') { - writer.uint32(18).string(message.creator); + if (message.creatorAddress !== '') { + writer.uint32(18).string(message.creatorAddress); } if (message.secret !== '') { writer.uint32(26).string(message.secret); @@ -51,14 +51,11 @@ export const MsgOpenBeam = { if (message.schema !== '') { writer.uint32(42).string(message.schema); } - if (message.reward !== undefined) { - BeamSchemeReward.encode(message.reward, writer.uint32(50).fork()).ldelim(); + if (message.data !== undefined) { + BeamData.encode(message.data, writer.uint32(50).fork()).ldelim(); } - if (message.review !== undefined) { - BeamSchemeReview.encode(message.review, writer.uint32(58).fork()).ldelim(); - } - if (message.owner !== '') { - writer.uint32(66).string(message.owner); + if (message.claimAddress !== '') { + writer.uint32(58).string(message.claimAddress); } return writer; }, @@ -74,7 +71,7 @@ export const MsgOpenBeam = { message.id = reader.string(); break; case 2: - message.creator = reader.string(); + message.creatorAddress = reader.string(); break; case 3: message.secret = reader.string(); @@ -86,13 +83,10 @@ export const MsgOpenBeam = { message.schema = reader.string(); break; case 6: - message.reward = BeamSchemeReward.decode(reader, reader.uint32()); + message.data = BeamData.decode(reader, reader.uint32()); break; case 7: - message.review = BeamSchemeReview.decode(reader, reader.uint32()); - break; - case 8: - message.owner = reader.string(); + message.claimAddress = reader.string(); break; default: reader.skipType(tag & 7); @@ -109,10 +103,10 @@ export const MsgOpenBeam = { } else { message.id = ''; } - if (object.creator !== undefined && object.creator !== null) { - message.creator = String(object.creator); + if (object.creatorAddress !== undefined && object.creatorAddress !== null) { + message.creatorAddress = String(object.creatorAddress); } else { - message.creator = ''; + message.creatorAddress = ''; } if (object.secret !== undefined && object.secret !== null) { message.secret = String(object.secret); @@ -129,20 +123,15 @@ export const MsgOpenBeam = { } else { message.schema = ''; } - if (object.reward !== undefined && object.reward !== null) { - message.reward = BeamSchemeReward.fromJSON(object.reward); + if (object.data !== undefined && object.data !== null) { + message.data = BeamData.fromJSON(object.data); } else { - message.reward = undefined; + message.data = undefined; } - if (object.review !== undefined && object.review !== null) { - message.review = BeamSchemeReview.fromJSON(object.review); + if (object.claimAddress !== undefined && object.claimAddress !== null) { + message.claimAddress = String(object.claimAddress); } else { - message.review = undefined; - } - if (object.owner !== undefined && object.owner !== null) { - message.owner = String(object.owner); - } else { - message.owner = ''; + message.claimAddress = ''; } return message; }, @@ -150,13 +139,12 @@ export const MsgOpenBeam = { toJSON(message: MsgOpenBeam): unknown { const obj: any = {}; message.id !== undefined && (obj.id = message.id); - message.creator !== undefined && (obj.creator = message.creator); + message.creatorAddress !== undefined && (obj.creatorAddress = message.creatorAddress); message.secret !== undefined && (obj.secret = message.secret); message.amount !== undefined && (obj.amount = message.amount ? Coin.toJSON(message.amount) : undefined); message.schema !== undefined && (obj.schema = message.schema); - message.reward !== undefined && (obj.reward = message.reward ? BeamSchemeReward.toJSON(message.reward) : undefined); - message.review !== undefined && (obj.review = message.review ? BeamSchemeReview.toJSON(message.review) : undefined); - message.owner !== undefined && (obj.owner = message.owner); + message.data !== undefined && (obj.data = message.data ? BeamData.toJSON(message.data) : undefined); + message.claimAddress !== undefined && (obj.claimAddress = message.claimAddress); return obj; }, @@ -167,10 +155,10 @@ export const MsgOpenBeam = { } else { message.id = ''; } - if (object.creator !== undefined && object.creator !== null) { - message.creator = object.creator; + if (object.creatorAddress !== undefined && object.creatorAddress !== null) { + message.creatorAddress = object.creatorAddress; } else { - message.creator = ''; + message.creatorAddress = ''; } if (object.secret !== undefined && object.secret !== null) { message.secret = object.secret; @@ -187,34 +175,29 @@ export const MsgOpenBeam = { } else { message.schema = ''; } - if (object.reward !== undefined && object.reward !== null) { - message.reward = BeamSchemeReward.fromPartial(object.reward); - } else { - message.reward = undefined; - } - if (object.review !== undefined && object.review !== null) { - message.review = BeamSchemeReview.fromPartial(object.review); + if (object.data !== undefined && object.data !== null) { + message.data = BeamData.fromPartial(object.data); } else { - message.review = undefined; + message.data = undefined; } - if (object.owner !== undefined && object.owner !== null) { - message.owner = object.owner; + if (object.claimAddress !== undefined && object.claimAddress !== null) { + message.claimAddress = object.claimAddress; } else { - message.owner = ''; + message.claimAddress = ''; } return message; }, }; -const baseMsgUpdateBeam: object = { updater: '', id: '', status: 0 }; +const baseMsgUpdateBeam: object = { id: '', updaterAddress: '', status: 0, cancelReason: '', hideContent: false }; export const MsgUpdateBeam = { encode(message: MsgUpdateBeam, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.updater !== '') { - writer.uint32(10).string(message.updater); - } if (message.id !== '') { - writer.uint32(18).string(message.id); + writer.uint32(10).string(message.id); + } + if (message.updaterAddress !== '') { + writer.uint32(18).string(message.updaterAddress); } if (message.amount !== undefined) { Coin.encode(message.amount, writer.uint32(26).fork()).ldelim(); @@ -222,11 +205,14 @@ export const MsgUpdateBeam = { if (message.status !== 0) { writer.uint32(32).int32(message.status); } - if (message.reward !== undefined) { - BeamSchemeReward.encode(message.reward, writer.uint32(42).fork()).ldelim(); + if (message.cancelReason !== '') { + writer.uint32(42).string(message.cancelReason); + } + if (message.hideContent === true) { + writer.uint32(48).bool(message.hideContent); } - if (message.review !== undefined) { - BeamSchemeReview.encode(message.review, writer.uint32(50).fork()).ldelim(); + if (message.data !== undefined) { + BeamData.encode(message.data, writer.uint32(58).fork()).ldelim(); } return writer; }, @@ -239,10 +225,10 @@ export const MsgUpdateBeam = { const tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.updater = reader.string(); + message.id = reader.string(); break; case 2: - message.id = reader.string(); + message.updaterAddress = reader.string(); break; case 3: message.amount = Coin.decode(reader, reader.uint32()); @@ -251,10 +237,13 @@ export const MsgUpdateBeam = { message.status = reader.int32() as any; break; case 5: - message.reward = BeamSchemeReward.decode(reader, reader.uint32()); + message.cancelReason = reader.string(); break; case 6: - message.review = BeamSchemeReview.decode(reader, reader.uint32()); + message.hideContent = reader.bool(); + break; + case 7: + message.data = BeamData.decode(reader, reader.uint32()); break; default: reader.skipType(tag & 7); @@ -266,16 +255,16 @@ export const MsgUpdateBeam = { fromJSON(object: any): MsgUpdateBeam { const message = { ...baseMsgUpdateBeam } as MsgUpdateBeam; - if (object.updater !== undefined && object.updater !== null) { - message.updater = String(object.updater); - } else { - message.updater = ''; - } if (object.id !== undefined && object.id !== null) { message.id = String(object.id); } else { message.id = ''; } + if (object.updaterAddress !== undefined && object.updaterAddress !== null) { + message.updaterAddress = String(object.updaterAddress); + } else { + message.updaterAddress = ''; + } if (object.amount !== undefined && object.amount !== null) { message.amount = Coin.fromJSON(object.amount); } else { @@ -286,42 +275,48 @@ export const MsgUpdateBeam = { } else { message.status = 0; } - if (object.reward !== undefined && object.reward !== null) { - message.reward = BeamSchemeReward.fromJSON(object.reward); + if (object.cancelReason !== undefined && object.cancelReason !== null) { + message.cancelReason = String(object.cancelReason); + } else { + message.cancelReason = ''; + } + if (object.hideContent !== undefined && object.hideContent !== null) { + message.hideContent = Boolean(object.hideContent); } else { - message.reward = undefined; + message.hideContent = false; } - if (object.review !== undefined && object.review !== null) { - message.review = BeamSchemeReview.fromJSON(object.review); + if (object.data !== undefined && object.data !== null) { + message.data = BeamData.fromJSON(object.data); } else { - message.review = undefined; + message.data = undefined; } return message; }, toJSON(message: MsgUpdateBeam): unknown { const obj: any = {}; - message.updater !== undefined && (obj.updater = message.updater); message.id !== undefined && (obj.id = message.id); + message.updaterAddress !== undefined && (obj.updaterAddress = message.updaterAddress); message.amount !== undefined && (obj.amount = message.amount ? Coin.toJSON(message.amount) : undefined); message.status !== undefined && (obj.status = beamStateToJSON(message.status)); - message.reward !== undefined && (obj.reward = message.reward ? BeamSchemeReward.toJSON(message.reward) : undefined); - message.review !== undefined && (obj.review = message.review ? BeamSchemeReview.toJSON(message.review) : undefined); + message.cancelReason !== undefined && (obj.cancelReason = message.cancelReason); + message.hideContent !== undefined && (obj.hideContent = message.hideContent); + message.data !== undefined && (obj.data = message.data ? BeamData.toJSON(message.data) : undefined); return obj; }, fromPartial(object: DeepPartial): MsgUpdateBeam { const message = { ...baseMsgUpdateBeam } as MsgUpdateBeam; - if (object.updater !== undefined && object.updater !== null) { - message.updater = object.updater; - } else { - message.updater = ''; - } if (object.id !== undefined && object.id !== null) { message.id = object.id; } else { message.id = ''; } + if (object.updaterAddress !== undefined && object.updaterAddress !== null) { + message.updaterAddress = object.updaterAddress; + } else { + message.updaterAddress = ''; + } if (object.amount !== undefined && object.amount !== null) { message.amount = Coin.fromPartial(object.amount); } else { @@ -332,29 +327,34 @@ export const MsgUpdateBeam = { } else { message.status = 0; } - if (object.reward !== undefined && object.reward !== null) { - message.reward = BeamSchemeReward.fromPartial(object.reward); + if (object.cancelReason !== undefined && object.cancelReason !== null) { + message.cancelReason = object.cancelReason; + } else { + message.cancelReason = ''; + } + if (object.hideContent !== undefined && object.hideContent !== null) { + message.hideContent = object.hideContent; } else { - message.reward = undefined; + message.hideContent = false; } - if (object.review !== undefined && object.review !== null) { - message.review = BeamSchemeReview.fromPartial(object.review); + if (object.data !== undefined && object.data !== null) { + message.data = BeamData.fromPartial(object.data); } else { - message.review = undefined; + message.data = undefined; } return message; }, }; -const baseMsgClaimBeam: object = { claimer: '', id: '', secret: '' }; +const baseMsgClaimBeam: object = { id: '', claimerAddress: '', secret: '' }; export const MsgClaimBeam = { encode(message: MsgClaimBeam, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer { - if (message.claimer !== '') { - writer.uint32(10).string(message.claimer); - } if (message.id !== '') { - writer.uint32(18).string(message.id); + writer.uint32(10).string(message.id); + } + if (message.claimerAddress !== '') { + writer.uint32(18).string(message.claimerAddress); } if (message.secret !== '') { writer.uint32(26).string(message.secret); @@ -370,10 +370,10 @@ export const MsgClaimBeam = { const tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.claimer = reader.string(); + message.id = reader.string(); break; case 2: - message.id = reader.string(); + message.claimerAddress = reader.string(); break; case 3: message.secret = reader.string(); @@ -388,16 +388,16 @@ export const MsgClaimBeam = { fromJSON(object: any): MsgClaimBeam { const message = { ...baseMsgClaimBeam } as MsgClaimBeam; - if (object.claimer !== undefined && object.claimer !== null) { - message.claimer = String(object.claimer); - } else { - message.claimer = ''; - } if (object.id !== undefined && object.id !== null) { message.id = String(object.id); } else { message.id = ''; } + if (object.claimerAddress !== undefined && object.claimerAddress !== null) { + message.claimerAddress = String(object.claimerAddress); + } else { + message.claimerAddress = ''; + } if (object.secret !== undefined && object.secret !== null) { message.secret = String(object.secret); } else { @@ -408,24 +408,24 @@ export const MsgClaimBeam = { toJSON(message: MsgClaimBeam): unknown { const obj: any = {}; - message.claimer !== undefined && (obj.claimer = message.claimer); message.id !== undefined && (obj.id = message.id); + message.claimerAddress !== undefined && (obj.claimerAddress = message.claimerAddress); message.secret !== undefined && (obj.secret = message.secret); return obj; }, fromPartial(object: DeepPartial): MsgClaimBeam { const message = { ...baseMsgClaimBeam } as MsgClaimBeam; - if (object.claimer !== undefined && object.claimer !== null) { - message.claimer = object.claimer; - } else { - message.claimer = ''; - } if (object.id !== undefined && object.id !== null) { message.id = object.id; } else { message.id = ''; } + if (object.claimerAddress !== undefined && object.claimerAddress !== null) { + message.claimerAddress = object.claimerAddress; + } else { + message.claimerAddress = ''; + } if (object.secret !== undefined && object.secret !== null) { message.secret = object.secret; } else { From 75d728410a4c1fa9618cbcd216e0ef0149779611 Mon Sep 17 00:00:00 2001 From: Segfault <5221072+Segfaultd@users.noreply.github.com> Date: Tue, 8 Jun 2021 18:09:00 +0200 Subject: [PATCH 4/8] Fixed messages builder --- src/messages/beam/MsgClaimBeam.ts | 4 ++-- src/messages/beam/MsgOpenBeam.ts | 11 +++++------ src/messages/beam/MsgUpdateBeam.ts | 11 ++++++----- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/messages/beam/MsgClaimBeam.ts b/src/messages/beam/MsgClaimBeam.ts index 0322ab8..7f8001e 100644 --- a/src/messages/beam/MsgClaimBeam.ts +++ b/src/messages/beam/MsgClaimBeam.ts @@ -3,12 +3,12 @@ import { MsgClaimBeam } from '../../codec/chain/beam/tx'; export const MsgClaimBeamUrl = '/lum.network.beam.MsgClaimBeam'; -export const BuildMsgClaimBeam = (claimer: string, id: string, secret: string): Message => { +export const BuildMsgClaimBeam = (id: string, claimerAddress: string, secret: string): Message => { return { typeUrl: MsgClaimBeamUrl, value: { - claimer, id, + claimerAddress, secret, } as MsgClaimBeam, }; diff --git a/src/messages/beam/MsgOpenBeam.ts b/src/messages/beam/MsgOpenBeam.ts index 50dc746..f234038 100644 --- a/src/messages/beam/MsgOpenBeam.ts +++ b/src/messages/beam/MsgOpenBeam.ts @@ -1,22 +1,21 @@ import { Message } from '../Message'; -import { BeamSchemeReview, BeamSchemeReward } from '../../codec/chain/beam/beam'; +import { BeamData } from '../../codec/chain/beam/beam'; import { MsgOpenBeam } from '../../codec/chain/beam/tx'; import { Coin } from '../../types'; export const MsgOpenBeamUrl = '/lum.network.beam.MsgOpenBeam'; -export const BuildMsgOpenBeam = (id: string, creator: string, amount: Coin, secret: string, schema: string, owner?: string, reward?: BeamSchemeReward, review?: BeamSchemeReview): Message => { +export const BuildMsgOpenBeam = (id: string, creatorAddress: string, claimAddress: string, amount: Coin, secret: string, schema: string, data?: BeamData): Message => { return { typeUrl: MsgOpenBeamUrl, value: { id, - creator, + creatorAddress, + claimAddress, amount, secret, schema, - reward, - owner, - review, + data, } as MsgOpenBeam, }; }; diff --git a/src/messages/beam/MsgUpdateBeam.ts b/src/messages/beam/MsgUpdateBeam.ts index 97797a1..2b9accf 100644 --- a/src/messages/beam/MsgUpdateBeam.ts +++ b/src/messages/beam/MsgUpdateBeam.ts @@ -1,20 +1,21 @@ import { Message } from '../Message'; -import { BeamSchemeReview, BeamSchemeReward, BeamState } from '../../codec/chain/beam/beam'; +import { BeamData, BeamState } from '../../codec/chain/beam/beam'; import { MsgUpdateBeam } from '../../codec/chain/beam/tx'; import { Coin } from '../../types'; export const MsgUpdateBeamUrl = '/lum.network.beam.MsgUpdateBeam'; -export const BuildMsgUpdateBeam = (updater: string, id: string, amount: Coin, status?: BeamState, reward?: BeamSchemeReward, review?: BeamSchemeReview): Message => { +export const BuildMsgUpdateBeam = (id: string, updaterAddress: string, amount: Coin, status?: BeamState, data?: BeamData, cancelReason = '', hideContent = false): Message => { return { typeUrl: MsgUpdateBeamUrl, value: { - updater, id, + updaterAddress, amount, status, - reward, - review, + data, + cancelReason, + hideContent, } as MsgUpdateBeam, }; }; From 3dec85556b6216c43a0276f91c7d08c4c02460e7 Mon Sep 17 00:00:00 2001 From: Segfault <5221072+Segfaultd@users.noreply.github.com> Date: Tue, 8 Jun 2021 18:11:20 +0200 Subject: [PATCH 5/8] Fixed test suite --- tests/client.test.ts | 83 ++++++++++++++++++++++---------------------- 1 file changed, 41 insertions(+), 42 deletions(-) diff --git a/tests/client.test.ts b/tests/client.test.ts index 3ed6a80..f1fccd9 100644 --- a/tests/client.test.ts +++ b/tests/client.test.ts @@ -1,6 +1,6 @@ import { LumWallet, LumWalletFactory, LumClient, LumUtils, LumConstants, LumRegistry, LumTypes, LumMessages } from '../src'; import axios from 'axios'; -import { BeamSchemeReview, BeamSchemeReward } from "../src/codec/chain/beam/beam"; +import { BeamData } from "../src/codec/chain/beam/beam"; const randomString = (): string => { return Math.random().toString(36).substring(7); @@ -65,18 +65,17 @@ describe('LumClient', () => { const openBeamMsg = LumMessages.BuildMsgOpenBeam( beamId, w1.getAddress(), + '', amount, 'test', 'lum-network/review', - null, - null, - BeamSchemeReview.fromPartial({ + BeamData.fromPartial({ reward: { amount: 1, - status: "pending", - trigger: "purchase", + status: 'pending', + trigger: 'purchase', maxAmount: 2, - currency: "EUR", + currency: 'EUR', }, verifier: { name: 'test', @@ -84,51 +83,51 @@ describe('LumClient', () => { signature: 'test', }, reviewer: { - reviewerId: "kqjsndqj342", - name: "John Doe", - isAnonymous: false + reviewerId: 'kqjsndqj342', + name: 'John Doe', + isAnonymous: false, }, merchantReview: { - reviewId: "sjqdqsd444sq", - reviewUrl: "https://google.com", - title: "Good", - orderId: "js44", - ratingUrl: "https://google.com", - timestamp: (new Date).toString(), - collectionMethod: "purchase", - merchantUrl: "https://google.com", + reviewId: 'sjqdqsd444sq', + reviewUrl: 'https://google.com', + title: 'Good', + orderId: 'js44', + ratingUrl: 'https://google.com', + timestamp: new Date().toString(), + collectionMethod: 'purchase', + merchantUrl: 'https://google.com', content: { - overall: "Not bad not good", - customerService: "Not good not bad" + overall: 'Not bad not good', + customerService: 'Not good not bad', }, ratings: { nps: 3, customerService: 3, - overall: 3 - } + overall: 3, + }, }, productsReviews: [ { - title: "Product", - timestamp: (new Date).toString(), - ratingUrl: "https://google.com", - reviewUrl: "https://google.com", - orderId: "123445", - reviewId: "54321", + title: 'Product', + timestamp: new Date().toString(), + ratingUrl: 'https://google.com', + reviewUrl: 'https://google.com', + orderId: '123445', + reviewId: '54321', ratings: { overall: 3, - quality: 3 + quality: 3, }, content: { - overall: "a", - cons: "b", - pros: "d" + overall: 'a', + cons: 'b', + pros: 'd', }, - collectionMethod: "purchase", + collectionMethod: 'purchase', medias: [], - products: [] - } - ] + products: [], + }, + ], }), ); @@ -152,8 +151,9 @@ describe('LumClient', () => { }; const tx = await clt.signAndBroadcastTx(w1, doc); + console.log(JSON.stringify(tx)); expect(tx.deliverTx.code).toBe(0); - }) + }); it('Should open a beam reward transaction', async () => { const beamId = randomString(); @@ -173,11 +173,11 @@ describe('LumClient', () => { const openBeamMsg = LumMessages.BuildMsgOpenBeam( beamId, w1.getAddress(), + '', amount, 'test', - 'lum-network/review', - null, - BeamSchemeReward.fromPartial({ + 'lum-network/reward', + BeamData.fromPartial({ reward: { amount: 1, status: 'pending', @@ -191,8 +191,7 @@ describe('LumClient', () => { url: 'https://test.com', signature: 'test', }, - }), - null, + }) ); const fee = { From fcf736e8b8d7e86ebabf1823e0d60223933db97e Mon Sep 17 00:00:00 2001 From: Segfault <5221072+Segfaultd@users.noreply.github.com> Date: Tue, 8 Jun 2021 18:17:25 +0200 Subject: [PATCH 6/8] Bump version --- package.json | 2 +- tests/client.test.ts | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/package.json b/package.json index 6456d0c..8f1790c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@lum-network/sdk-javascript", - "version": "0.4.2", + "version": "0.4.3", "license": "Apache-2.0", "description": "Javascript SDK library for NodeJS and Web browsers to interact with the Lum Network.", "homepage": "https://github.com/lum-network/sdk-javascript#readme", diff --git a/tests/client.test.ts b/tests/client.test.ts index f1fccd9..1e68aed 100644 --- a/tests/client.test.ts +++ b/tests/client.test.ts @@ -151,7 +151,6 @@ describe('LumClient', () => { }; const tx = await clt.signAndBroadcastTx(w1, doc); - console.log(JSON.stringify(tx)); expect(tx.deliverTx.code).toBe(0); }); From ac0ee75a06420ae5bd62e31aea9f717040d3f880 Mon Sep 17 00:00:00 2001 From: Segfault <5221072+Segfaultd@users.noreply.github.com> Date: Tue, 8 Jun 2021 18:25:16 +0200 Subject: [PATCH 7/8] Bump jest timeout --- jest.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jest.config.js b/jest.config.js index e02a4b2..c80d399 100644 --- a/jest.config.js +++ b/jest.config.js @@ -13,5 +13,5 @@ module.exports = { tsconfig: 'tsconfig.spec.json', }, }, - testTimeout: 60000, + testTimeout: 120000, }; From b58945cf85e944bcfdc2bd0e9d72775ea80c1724 Mon Sep 17 00:00:00 2001 From: Segfault <5221072+Segfaultd@users.noreply.github.com> Date: Tue, 8 Jun 2021 18:30:49 +0200 Subject: [PATCH 8/8] Bump timeout --- jest.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jest.config.js b/jest.config.js index c80d399..d1c2dc7 100644 --- a/jest.config.js +++ b/jest.config.js @@ -13,5 +13,5 @@ module.exports = { tsconfig: 'tsconfig.spec.json', }, }, - testTimeout: 120000, + testTimeout: 240000, };