From 2c31c9c3ac316f420346b77bd57dc826c786b8cc Mon Sep 17 00:00:00 2001 From: Theophile Sandoz Date: Fri, 19 Jan 2024 22:05:08 +0100 Subject: [PATCH] Move validators mocks to a separate file --- packages/ui/src/app/App.stories.tsx | 67 ++------------- .../pages/Profile/MyMemberships.stories.tsx | 67 ++------------- .../Validators/ValidatorList.stories.tsx | 85 ++----------------- .../BuyMembershipFormModal.tsx | 12 +-- packages/ui/src/mocks/data/raw/members.json | 4 +- packages/ui/src/mocks/data/validators.ts | 76 +++++++++++++++++ packages/ui/src/mocks/helpers/asChainData.ts | 5 +- 7 files changed, 104 insertions(+), 212 deletions(-) create mode 100644 packages/ui/src/mocks/data/validators.ts diff --git a/packages/ui/src/app/App.stories.tsx b/packages/ui/src/app/App.stories.tsx index 81c6587c30..7cf584b7f9 100644 --- a/packages/ui/src/app/App.stories.tsx +++ b/packages/ui/src/app/App.stories.tsx @@ -22,6 +22,7 @@ import { RegisterBackendMemberDocument, } from '@/memberships/queries/__generated__/backend.generated' import { Membership, member } from '@/mocks/data/members' +import { validators } from '@/mocks/data/validators' import { Container, getButtonByText, joy, selectFromDropdown, withinModal } from '@/mocks/helpers' import { MocksParameters } from '@/mocks/providers' @@ -125,69 +126,13 @@ export default { council: { stage: { stage: { isIdle: true }, changedAt: 123 } }, referendum: { stage: {} }, staking: { - bonded: { - multi: [ - 'j4RLnWh3DWgc9u4CMprqxfBhq3kthXhvZDmnpjEtETFVm446D', - 'j4RbTjvPyaufVVoxVGk5vEKHma1k7j5ZAQCaAL9qMKQWKAswW', - 'j4Rc8VUXGYAx7FNbVZBFU72rQw3GaCuG2AkrUQWnWTh5SpemP', - 'j4Rh1cHtZFAQYGh7Y8RZwoXbkAPtZN46FmuYpKNiR3P2Dc2oz', - 'j4RjraznxDKae1aGL2L2xzXPSf8qCjFbjuw9sPWkoiy1UqWCa', - 'j4RuqkJ2Xqf3NTVRYBUqgbatKVZ31mbK59fWnq4ZzfZvhbhbN', - 'j4RxTMa1QVucodYPfQGA2JrHxZP944dfJ8qdDDYKU4QbJCWNP', - 'j4Rxkb1w9yB6WXroB2npKjRJJxwxbD8JjSQwMZFB31cf5aZAJ', - 'j4RyLBbSUBvipuQLkjLyUGeFWEzmrnfYdpteDa2gYNoM13qEg', - 'j4ShWRXxTG4K5Q5H7KXmdWN8HnaaLwppqM7GdiSwAy3eTLsJt', - 'j4WfB3TD4tFgrJpCmUi8P3wPp3EocyC5At9ZM2YUpmKGJ1FWM', - ], - }, validators: { - entries: [ - [ - { args: ['5FLSigC9HGRKVhB9FiEo4Y3koPsNmBmLJbpXg2mp1hXcS59Y'] }, - { commission: 0.05 * 10 ** 9, blocked: false }, - ], - [ - { args: ['5DAAnrj7VHTznn2AWBemMuyBwZWs6FNFjdyVXUeYum3PTXFy'] }, - { commission: 0.1 * 10 ** 9, blocked: false }, - ], - [ - { args: ['j4Rc8VUXGYAx7FNbVZBFU72rQw3GaCuG2AkrUQWnWTh5SpemP'] }, - { commission: 0.05 * 10 ** 9, blocked: false }, - ], - [ - { args: ['j4Rh1cHtZFAQYGh7Y8RZwoXbkAPtZN46FmuYpKNiR3P2Dc2oz'] }, - { commission: 0.15 * 10 ** 9, blocked: false }, - ], - [ - { args: ['j4RjraznxDKae1aGL2L2xzXPSf8qCjFbjuw9sPWkoiy1UqWCa'] }, - { commission: 0.2 * 10 ** 9, blocked: false }, - ], - [ - { args: ['j4RuqkJ2Xqf3NTVRYBUqgbatKVZ31mbK59fWnq4ZzfZvhbhbN'] }, - { commission: 0.01 * 10 ** 9, blocked: false }, - ], - [ - { args: ['j4RxTMa1QVucodYPfQGA2JrHxZP944dfJ8qdDDYKU4QbJCWNP'] }, - { commission: 0.03 * 10 ** 9, blocked: false }, - ], - [ - { args: ['j4Rxkb1w9yB6WXroB2npKjRJJxwxbD8JjSQwMZFB31cf5aZAJ'] }, - { commission: 0.05 * 10 ** 9, blocked: false }, - ], - [ - { args: ['j4RyLBbSUBvipuQLkjLyUGeFWEzmrnfYdpteDa2gYNoM13qEg'] }, - { commission: 0.05 * 10 ** 9, blocked: false }, - ], - [ - { args: ['j4ShWRXxTG4K5Q5H7KXmdWN8HnaaLwppqM7GdiSwAy3eTLsJt'] }, - { commission: 0.05 * 10 ** 9, blocked: false }, - ], - [ - { args: ['j4WfB3TD4tFgrJpCmUi8P3wPp3EocyC5At9ZM2YUpmKGJ1FWM'] }, - { commission: 0.05 * 10 ** 9, blocked: false }, - ], - ], + entries: Object.entries(validators).map(([address, { commission }]) => [ + { args: [address] }, + { commission, blocked: false }, + ]), }, + bonded: { multi: Object.keys(validators) }, }, }, diff --git a/packages/ui/src/app/pages/Profile/MyMemberships.stories.tsx b/packages/ui/src/app/pages/Profile/MyMemberships.stories.tsx index c38a147894..43b6cdbbf0 100644 --- a/packages/ui/src/app/pages/Profile/MyMemberships.stories.tsx +++ b/packages/ui/src/app/pages/Profile/MyMemberships.stories.tsx @@ -11,6 +11,7 @@ import { GetMembersWithDetailsDocument, } from '@/memberships/queries' import { Membership, member } from '@/mocks/data/members' +import { validators } from '@/mocks/data/validators' import { Container, getButtonByText, joy, selectFromDropdown, withinModal } from '@/mocks/helpers' import { MocksParameters } from '@/mocks/providers' @@ -71,69 +72,13 @@ export default { members: { membershipPrice: joy(20) }, membershipWorkingGroup: { budget: joy(166666_66) }, staking: { - bonded: { - multi: [ - 'j4RLnWh3DWgc9u4CMprqxfBhq3kthXhvZDmnpjEtETFVm446D', - 'j4RbTjvPyaufVVoxVGk5vEKHma1k7j5ZAQCaAL9qMKQWKAswW', - 'j4Rc8VUXGYAx7FNbVZBFU72rQw3GaCuG2AkrUQWnWTh5SpemP', - 'j4Rh1cHtZFAQYGh7Y8RZwoXbkAPtZN46FmuYpKNiR3P2Dc2oz', - 'j4RjraznxDKae1aGL2L2xzXPSf8qCjFbjuw9sPWkoiy1UqWCa', - 'j4RuqkJ2Xqf3NTVRYBUqgbatKVZ31mbK59fWnq4ZzfZvhbhbN', - 'j4RxTMa1QVucodYPfQGA2JrHxZP944dfJ8qdDDYKU4QbJCWNP', - 'j4Rxkb1w9yB6WXroB2npKjRJJxwxbD8JjSQwMZFB31cf5aZAJ', - 'j4RyLBbSUBvipuQLkjLyUGeFWEzmrnfYdpteDa2gYNoM13qEg', - 'j4ShWRXxTG4K5Q5H7KXmdWN8HnaaLwppqM7GdiSwAy3eTLsJt', - 'j4WfB3TD4tFgrJpCmUi8P3wPp3EocyC5At9ZM2YUpmKGJ1FWM', - ], - }, validators: { - entries: [ - [ - { args: ['j4RLnWh3DWgc9u4CMprqxfBhq3kthXhvZDmnpjEtETFVm446D'] }, - { commission: 0.05 * 10 ** 9, blocked: false }, - ], - [ - { args: ['j4RbTjvPyaufVVoxVGk5vEKHma1k7j5ZAQCaAL9qMKQWKAswW'] }, - { commission: 0.1 * 10 ** 9, blocked: false }, - ], - [ - { args: ['j4Rc8VUXGYAx7FNbVZBFU72rQw3GaCuG2AkrUQWnWTh5SpemP'] }, - { commission: 0.05 * 10 ** 9, blocked: false }, - ], - [ - { args: ['j4Rh1cHtZFAQYGh7Y8RZwoXbkAPtZN46FmuYpKNiR3P2Dc2oz'] }, - { commission: 0.15 * 10 ** 9, blocked: false }, - ], - [ - { args: ['j4RjraznxDKae1aGL2L2xzXPSf8qCjFbjuw9sPWkoiy1UqWCa'] }, - { commission: 0.2 * 10 ** 9, blocked: false }, - ], - [ - { args: ['j4RuqkJ2Xqf3NTVRYBUqgbatKVZ31mbK59fWnq4ZzfZvhbhbN'] }, - { commission: 0.01 * 10 ** 9, blocked: false }, - ], - [ - { args: ['j4RxTMa1QVucodYPfQGA2JrHxZP944dfJ8qdDDYKU4QbJCWNP'] }, - { commission: 0.03 * 10 ** 9, blocked: false }, - ], - [ - { args: ['j4Rxkb1w9yB6WXroB2npKjRJJxwxbD8JjSQwMZFB31cf5aZAJ'] }, - { commission: 0.05 * 10 ** 9, blocked: false }, - ], - [ - { args: ['j4RyLBbSUBvipuQLkjLyUGeFWEzmrnfYdpteDa2gYNoM13qEg'] }, - { commission: 0.05 * 10 ** 9, blocked: false }, - ], - [ - { args: ['j4ShWRXxTG4K5Q5H7KXmdWN8HnaaLwppqM7GdiSwAy3eTLsJt'] }, - { commission: 0.05 * 10 ** 9, blocked: false }, - ], - [ - { args: ['j4WfB3TD4tFgrJpCmUi8P3wPp3EocyC5At9ZM2YUpmKGJ1FWM'] }, - { commission: 0.05 * 10 ** 9, blocked: false }, - ], - ], + entries: Object.entries(validators).map(([address, { commission }]) => [ + { args: [address] }, + { commission, blocked: false }, + ]), }, + bonded: { multi: Object.keys(validators) }, }, }, derive: { diff --git a/packages/ui/src/app/pages/Validators/ValidatorList.stories.tsx b/packages/ui/src/app/pages/Validators/ValidatorList.stories.tsx index 24b5dde53a..ba5c1a66d6 100644 --- a/packages/ui/src/app/pages/Validators/ValidatorList.stories.tsx +++ b/packages/ui/src/app/pages/Validators/ValidatorList.stories.tsx @@ -1,9 +1,11 @@ import { expect } from '@storybook/jest' import { Meta, StoryObj } from '@storybook/react' import { userEvent, waitFor, within } from '@storybook/testing-library' +import { of } from 'rxjs' import { GetMembersWithDetailsDocument } from '@/memberships/queries' import { member } from '@/mocks/data/members' +import { validators } from '@/mocks/data/validators' import { joy, selectFromDropdown } from '@/mocks/helpers' import { MocksParameters } from '@/mocks/providers' @@ -11,81 +13,6 @@ import { ValidatorList } from './ValidatorList' type Args = object -const validators = { - j4RLnWh3DWgc9u4CMprqxfBhq3kthXhvZDmnpjEtETFVm446D: { - commission: 0.05 * 10 ** 9, - totalStake: joy(400), - ownStake: joy(0.0001), - nominators: { - j4WGdFxqTkyAgzJiTbEBeRseP12dPEvJgf2Wy9qkPa68XSP55: { stake: joy(0.2) }, - j4UQEfPFnKwGuHytxs9YEouLnhnSNkPDgNm9tKeB7an3dRaiy: { stake: joy(0.2) }, - }, - }, - j4RbTjvPyaufVVoxVGk5vEKHma1k7j5ZAQCaAL9qMKQWKAswW: { - commission: 0.1 * 10 ** 9, - totalStake: joy(400), - ownStake: joy(0.0001), - nominators: { - j4T3XgRMUaZZL6GsMk6RXfBcjuMWxfSLnoATYkBTHh7xyjmoH: { stake: joy(0.2) }, - j4UQEfPFnKwGuHytxs9YEouLnhnSNkPDgNm9tKeB7an3dRaiy: { stake: joy(0.2) }, - j4W2bw7ggG69e9TZ77RP9mjem1GrbPwpbKYK7WdZiym77yzMJ: { stake: joy(0.2) }, - j4UzoJUhDGpnsCWrmx9ojofwaT8KHz3azp8C1S49MSN6rYjim: { stake: joy(0.2) }, - }, - }, - j4Rc8VUXGYAx7FNbVZBFU72rQw3GaCuG2AkrUQWnWTh5SpemP: { - commission: 0.05 * 10 ** 9, - totalStake: joy(400), - ownStake: joy(0.0001), - nominators: { - j4SgrgDrzzGyfrxPe4ZgaKfByKyLo5SdsUXNfHzZJPh5R6f8q: { stake: joy(0.2) }, - j4UQEfPFnKwGuHytxs9YEouLnhnSNkPDgNm9tKeB7an3dRaiy: { stake: joy(0.2) }, - j4RLnWh3DWgc9u4CMprqxfBhq3kthXhvZDmnpjEtETFVm446D: { stake: joy(0.2) }, - j4RxTMa1QVucodYPfQGA2JrHxZP944dfJ8qdDDYKU4QbJCWNP: { stake: joy(0.2) }, - }, - }, - j4Rh1cHtZFAQYGh7Y8RZwoXbkAPtZN46FmuYpKNiR3P2Dc2oz: { - commission: 0.15 * 10 ** 9, - totalStake: joy(400), - ownStake: joy(0.0001), - nominators: { - j4Rxkb1w9yB6WXroB2npKjRJJxwxbD8JjSQwMZFB31cf5aZAJ: { stake: joy(0.2) }, - j4UQEfPFnKwGuHytxs9YEouLnhnSNkPDgNm9tKeB7an3dRaiy: { stake: joy(0.2) }, - j4RyLBbSUBvipuQLkjLyUGeFWEzmrnfYdpteDa2gYNoM13qEg: { stake: joy(0.2) }, - }, - }, - j4RjraznxDKae1aGL2L2xzXPSf8qCjFbjuw9sPWkoiy1UqWCa: { - commission: 0.2 * 10 ** 9, - totalStake: joy(400), - ownStake: joy(0.0001), - nominators: { - j4WwTZ3fnkoXJw3D1vGVyymjaiLxM78TGyAAX41JRH8Kx6T2u: { stake: joy(0.2) }, - j4UQEfPFnKwGuHytxs9YEouLnhnSNkPDgNm9tKeB7an3dRaiy: { stake: joy(0.2) }, - j4WqZwj6KjB4DbxknxyJB1ZkeVrPRGmg6DUGw2YkuAy7jUERg: { stake: joy(0.2) }, - j4Wo9377XBAvhmB35J4TkpJUHnUKmyccXhGtHCVvi6pPr9so8: { stake: joy(0.2) }, - }, - }, - j4RuqkJ2Xqf3NTVRYBUqgbatKVZ31mbK59fWnq4ZzfZvhbhbN: { - commission: 0.01 * 10 ** 9, - totalStake: joy(400), - ownStake: joy(0.0001), - }, - j4RxTMa1QVucodYPfQGA2JrHxZP944dfJ8qdDDYKU4QbJCWNP: { - commission: 0.03 * 10 ** 9, - totalStake: joy(400), - ownStake: joy(0.0001), - }, - j4Rxkb1w9yB6WXroB2npKjRJJxwxbD8JjSQwMZFB31cf5aZAJ: { - commission: 0.05 * 10 ** 9, - totalStake: joy(400), - ownStake: joy(0.0001), - }, - j4RyLBbSUBvipuQLkjLyUGeFWEzmrnfYdpteDa2gYNoM13qEg: { - commission: 0.05 * 10 ** 9, - totalStake: joy(400), - ownStake: joy(0.0001), - }, -} - const activeEra = { index: 700, start: Date.now() - 5400000, @@ -142,8 +69,8 @@ export default { }, session: { - validators: Object.entries(validators).flatMap(([address, data]) => - 'nominators' in data ? address : [] + validators: of( + Object.entries(validators).flatMap(([address, data]) => ('nominators' in data ? address : [])) ), }, @@ -205,12 +132,12 @@ export const TestsFilters: Story = { await waitFor(() => expect(screen.queryAllByRole('button', { name: 'Nominate' })).toHaveLength(3)) expect(screen.queryByText('unverifed')).toBeNull() expect(screen.getAllByText('alice').length).toEqual(2) - expect(screen.queryByText('bob')).toBeNull() + expect(screen.queryByText('dave')).toBeNull() await selectFromDropdown(screen, verificationFilter, 'unverified') await waitFor(() => expect(screen.queryAllByRole('button', { name: 'Nominate' })).toHaveLength(6)) expect(screen.queryByText('verifed')).toBeNull() expect(screen.queryByText('alice')).toBeNull() - expect(screen.getByText('bob')) + expect(screen.getByText('dave')) await selectFromDropdown(screen, verificationFilter, 'All') }) await step('State Filter', async () => { diff --git a/packages/ui/src/memberships/modals/BuyMembershipModal/BuyMembershipFormModal.tsx b/packages/ui/src/memberships/modals/BuyMembershipModal/BuyMembershipFormModal.tsx index d71ec12173..9603539a02 100644 --- a/packages/ui/src/memberships/modals/BuyMembershipModal/BuyMembershipFormModal.tsx +++ b/packages/ui/src/memberships/modals/BuyMembershipModal/BuyMembershipFormModal.tsx @@ -8,7 +8,6 @@ import * as Yup from 'yup' import { SelectAccount, SelectedAccount } from '@/accounts/components/SelectAccount' import { useMyAccounts } from '@/accounts/hooks/useMyAccounts' import { accountOrNamed } from '@/accounts/model/accountOrNamed' -import { encodeAddress } from '@/accounts/model/encodeAddress' import { Account } from '@/accounts/types' import { TermsRoutes } from '@/app/constants/routes' import { ButtonGhost, ButtonPrimary } from '@/common/components/buttons' @@ -154,18 +153,15 @@ export const BuyMembershipForm = ({ 'validatorAccountCandidate', ]) - const validators = useValidators({ skip: isValidator ?? true }) + const validators = useValidators({ skip: !isValidator ?? true }) const [validatorAccounts, setValidatorAccounts] = useState([]) const validatorAddresses = useMemo( - () => - validators - ?.flatMap(({ stashAccount: stash, controllerAccount: ctrl }) => (ctrl ? [stash, ctrl] : [stash])) - .map(encodeAddress), + () => validators?.flatMap(({ stashAccount: stash, controllerAccount: ctrl }) => (ctrl ? [stash, ctrl] : [stash])), [validators] ) const isValidValidatorAccount = useMemo( - () => validatorAccountCandidate && validatorAddresses?.includes(encodeAddress(validatorAccountCandidate.address)), + () => validatorAccountCandidate && validatorAddresses?.includes(validatorAccountCandidate.address), [validatorAccountCandidate, validatorAddresses] ) @@ -302,7 +298,7 @@ export const BuyMembershipForm = ({ !!validatorAddresses?.includes(encodeAddress(account.address))} + filter={(account) => !!validatorAddresses?.includes(account.address)} /> { return createType('u128', data) case 'String': - return isNaN(data) ? data : createType('u128', data) + if (!isNaN(data)) return createType('u128', data) + if (isAddress(data)) return createType('AccountId', data) + return createType('Text', data) default: return data