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

Added issue collection tests #59

Merged
merged 2 commits into from
Oct 18, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
3 changes: 2 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

- [Added faucet and issue token tests](https://github.com/multiversx/mx-lite-wallet-dapp/pull/57)
- [Added issue collection tests](https://github.com/multiversx/mx-lite-wallet-dapp/pull/59)
- [Added faucet and issue token tests](https://github.com/multiversx/mx-lite-wallet-dapp/pull/58)
- [Allow only tokens and collections with prefix to be registered](https://github.com/multiversx/mx-lite-wallet-dapp/pull/56)

## [[1.0.2](https://github.com/multiversx/mx-lite-wallet-dapp/pull/54)] - 2024-10-03
Expand Down
4 changes: 2 additions & 2 deletions src/pages/IssueCollection/hooks/useIssueCollectionForm.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,14 +35,14 @@ export const useIssueCollectionForm = () => {
validationSchema: object().shape({
tokenName: string()
.required('Required')
.matches(/^[a-zA-Z]*$/, 'Only letters are allowed')
.matches(/^[a-zA-Z0-9]*$/, 'Alphanumeric characters only')
.test(
'validLength',
'Must be between 3 - 50 characters long',
(value) => Boolean(value && value.length >= 3 && value.length <= 50)
),
tokenTicker: string()
.matches(/^[A-Z0-9]*$/, 'Only uppercase letters are allowed')
.matches(/^[A-Z0-9]*$/, 'Alphanumeric uppercase characters only')
.required('Required')
.test(
'validLength',
Expand Down
215 changes: 215 additions & 0 deletions src/pages/IssueCollection/tests/IssueCollectionFormValidation.e2e.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,215 @@
import { DataTestIdsEnum } from 'localConstants/dataTestIds.enum';
import {
changeInputText,
expectElementToContainText,
expectInputToHaveValue,
getByDataTestId,
loginWithKeystore
} from 'utils/testUtils/puppeteer';
import { WALLET_SOURCE_ORIGIN } from '__mocks__/data';

describe('Issue Collection form validation test', () => {
it('should show errors and not create collection when data is invalid', async () => {
await page.goto(`${WALLET_SOURCE_ORIGIN}/logout`, {
waitUntil: 'domcontentloaded'
});

await loginWithKeystore();
await page.click(getByDataTestId(DataTestIdsEnum.issueCollectionBtn));
await expect(page.url()).toEqual(
`${WALLET_SOURCE_ORIGIN}/issue-collection`
);

const createCollectionBtn = await page.waitForSelector(
getByDataTestId(DataTestIdsEnum.issueCollectionBtn)
);

await createCollectionBtn?.click();
await page.click(getByDataTestId(DataTestIdsEnum.issueCollectionBtn));
await expectElementToContainText({
dataTestId: DataTestIdsEnum.tokenNameError,
text: 'Required'
});

await expectElementToContainText({
dataTestId: DataTestIdsEnum.tokenTickerError,
text: 'Required'
});

await changeInputText({
dataTestId: DataTestIdsEnum.tokenNameInput,
shouldOverride: true,
text: 'TEST-COLLECTION'
});

await changeInputText({
dataTestId: DataTestIdsEnum.tokenTickerInput,
shouldOverride: true,
text: 'T'
});

await expectInputToHaveValue({
dataTestId: DataTestIdsEnum.tokenNameInput,
value: 'TEST-COLLECTION'
});

await expectInputToHaveValue({
dataTestId: DataTestIdsEnum.tokenTickerInput,
value: 'T'
});

await page.click(getByDataTestId(DataTestIdsEnum.issueCollectionBtn));
await expectElementToContainText({
dataTestId: DataTestIdsEnum.tokenNameError,
text: 'Alphanumeric characters only'
});

await expectElementToContainText({
dataTestId: DataTestIdsEnum.tokenTickerError,
text: 'Must be between 3 - 10 characters long'
});

await changeInputText({
dataTestId: DataTestIdsEnum.tokenNameInput,
shouldOverride: true,
text: 'tc'
});

await changeInputText({
dataTestId: DataTestIdsEnum.tokenTickerInput,
shouldOverride: true,
text: 'TEST-COLLECTION'
});

await expectInputToHaveValue({
dataTestId: DataTestIdsEnum.tokenNameInput,
value: 'tc'
});

await expectInputToHaveValue({
dataTestId: DataTestIdsEnum.tokenTickerInput,
value: 'TEST-COLLECTION'
});

await page.click(getByDataTestId(DataTestIdsEnum.issueCollectionBtn));
await expectElementToContainText({
dataTestId: DataTestIdsEnum.tokenNameError,
text: 'Must be between 3 - 50 characters long'
});

await expectElementToContainText({
dataTestId: DataTestIdsEnum.tokenTickerError,
text: 'Alphanumeric uppercase characters only'
});

await changeInputText({
dataTestId: DataTestIdsEnum.tokenNameInput,
shouldOverride: true,
text: 'QWERTYUIOPS!'
});

await changeInputText({
dataTestId: DataTestIdsEnum.tokenTickerInput,
shouldOverride: true,
text: 'QWERTYUIOP!'
});

await page.click(getByDataTestId(DataTestIdsEnum.issueCollectionBtn));
await expectElementToContainText({
dataTestId: DataTestIdsEnum.tokenNameError,
text: 'Alphanumeric characters only'
});

await expectElementToContainText({
dataTestId: DataTestIdsEnum.tokenTickerError,
text: 'Alphanumeric uppercase characters only'
});

await changeInputText({
dataTestId: DataTestIdsEnum.tokenNameInput,
shouldOverride: true,
text: 'quertyuiop123'
});

await changeInputText({
dataTestId: DataTestIdsEnum.tokenTickerInput,
shouldOverride: true,
text: 'quert!'
});

await page.click(getByDataTestId(DataTestIdsEnum.issueCollectionBtn));
await expectElementToContainText({
dataTestId: DataTestIdsEnum.tokenTickerError,
text: 'Alphanumeric uppercase characters only'
});

await changeInputText({
dataTestId: DataTestIdsEnum.tokenNameInput,
shouldOverride: true,
text: 'QWERTYUIOPASDFGHJKLZXCVBNMQWERTYUIOPASDFGHJKLZXCVBNM'
});

await changeInputText({
dataTestId: DataTestIdsEnum.tokenTickerInput,
shouldOverride: true,
text: 'QWERTYUIOPASDFGHJKLZXCVBNM'
});

await expectInputToHaveValue({
dataTestId: DataTestIdsEnum.tokenNameInput,
value: 'QWERTYUIOPASDFGHJKLZXCVBNMQWERTYUIOPASDFGHJKLZXCVBNM'
});

await expectInputToHaveValue({
dataTestId: DataTestIdsEnum.tokenTickerInput,
value: 'QWERTYUIOPASDFGHJKLZXCVBNM'
});

await page.click(getByDataTestId(DataTestIdsEnum.issueCollectionBtn));
await expectElementToContainText({
dataTestId: DataTestIdsEnum.tokenNameError,
text: 'Must be between 3 - 50 characters long'
});

await expectElementToContainText({
dataTestId: DataTestIdsEnum.tokenTickerError,
text: 'Must be between 3 - 10 characters long'
});

await page.click(getByDataTestId(DataTestIdsEnum.sftTypeInput));

await changeInputText({
dataTestId: DataTestIdsEnum.tokenNameInput,
shouldOverride: true,
text: 'TESTCOLLECTION'
});

await changeInputText({
dataTestId: DataTestIdsEnum.tokenTickerInput,
shouldOverride: true,
text: 'TEST'
});

await expectInputToHaveValue({
dataTestId: DataTestIdsEnum.tokenNameInput,
value: 'TESTCOLLECTION'
});

await expectInputToHaveValue({
dataTestId: DataTestIdsEnum.tokenTickerInput,
value: 'TEST'
});

await page.click(getByDataTestId(DataTestIdsEnum.issueCollectionBtn));
const tokenNameError = await page.$(
getByDataTestId(DataTestIdsEnum.tokenNameError)
);

const tokenTickerError = await page.$(
getByDataTestId(DataTestIdsEnum.tokenTickerError)
);

expect(tokenNameError).toEqual(null);
expect(tokenTickerError).toEqual(null);
});
});
45 changes: 45 additions & 0 deletions src/pages/IssueCollection/tests/IssueNFTCollection.e2e.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
import { WALLET_SOURCE_ORIGIN } from '__mocks__/data';
import { DataTestIdsEnum } from 'localConstants/dataTestIds.enum';
import {
changeInputText,
expectElementToContainText,
getByDataTestId,
loginWithKeystore
} from 'utils/testUtils/puppeteer';

describe('Issue NFT Collection test', () => {
it('should create a new NFT collection successfully', async () => {
await page.goto(`${WALLET_SOURCE_ORIGIN}/logout`, {
waitUntil: 'domcontentloaded'
});

await loginWithKeystore();
await page.click(getByDataTestId(DataTestIdsEnum.issueCollectionBtn));
await expect(page.url()).toEqual(
`${WALLET_SOURCE_ORIGIN}/issue-collection`
);

const createCollectionBtn = await page.waitForSelector(
getByDataTestId(DataTestIdsEnum.issueCollectionBtn)
);

await createCollectionBtn?.click();
await changeInputText({
dataTestId: DataTestIdsEnum.tokenNameInput,
shouldOverride: true,
text: 'TESTCOLLECTION'
});

await changeInputText({
dataTestId: DataTestIdsEnum.tokenTickerInput,
shouldOverride: true,
text: 'TEST'
});

await page.click(getByDataTestId(DataTestIdsEnum.issueCollectionBtn));
await expectElementToContainText({
dataTestId: DataTestIdsEnum.transactionToastTitle,
text: 'Processing transaction'
});
});
});
46 changes: 46 additions & 0 deletions src/pages/IssueCollection/tests/IssueSFTCollection.e2e.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
import { WALLET_SOURCE_ORIGIN } from '__mocks__/data';
import { DataTestIdsEnum } from 'localConstants/dataTestIds.enum';
import {
changeInputText,
expectElementToContainText,
getByDataTestId,
loginWithKeystore
} from 'utils/testUtils/puppeteer';

describe('Issue SFT Collection test', () => {
it('should create a new SFT collection successfully', async () => {
await page.goto(`${WALLET_SOURCE_ORIGIN}/logout`, {
waitUntil: 'domcontentloaded'
});

await loginWithKeystore();
await page.click(getByDataTestId(DataTestIdsEnum.issueCollectionBtn));
await expect(page.url()).toEqual(
`${WALLET_SOURCE_ORIGIN}/issue-collection`
);

const createCollectionBtn = await page.waitForSelector(
getByDataTestId(DataTestIdsEnum.issueCollectionBtn)
);

await createCollectionBtn?.click();
await page.click(getByDataTestId(DataTestIdsEnum.sftTypeInput));
await changeInputText({
dataTestId: DataTestIdsEnum.tokenNameInput,
shouldOverride: true,
text: 'SFTTESTCOL'
});

await changeInputText({
dataTestId: DataTestIdsEnum.tokenTickerInput,
shouldOverride: true,
text: 'SFT'
});

await page.click(getByDataTestId(DataTestIdsEnum.issueCollectionBtn));
await expectElementToContainText({
dataTestId: DataTestIdsEnum.transactionToastTitle,
text: 'Processing transaction'
});
});
});
21 changes: 21 additions & 0 deletions src/pages/IssueToken/tests/IssueTokenFormValidation.e2e.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,11 @@ describe('Issue Token form validation test', () => {
text: 'Required'
});

await expectElementToContainText({
dataTestId: DataTestIdsEnum.tokenTickerError,
text: 'Required'
});

await changeInputText({
dataTestId: DataTestIdsEnum.tokenNameInput,
shouldOverride: true,
Expand Down Expand Up @@ -187,5 +192,21 @@ describe('Issue Token form validation test', () => {
dataTestId: DataTestIdsEnum.numDecimalsError,
text: 'Must be between 0 - 18'
});

const tokenNameError = await page.$(
getByDataTestId(DataTestIdsEnum.tokenNameError)
);

const tokenTickerError = await page.$(
getByDataTestId(DataTestIdsEnum.tokenTickerError)
);

const mintedValueError = await page.$(
getByDataTestId(DataTestIdsEnum.mintedValueError)
);

expect(tokenNameError).toEqual(null);
expect(tokenTickerError).toEqual(null);
expect(mintedValueError).toEqual(null);
});
});
Loading