Skip to content

Commit

Permalink
Added issue collection tests (#59)
Browse files Browse the repository at this point in the history
* Added issue collection tests

* Fixed CHANGELOG.md
  • Loading branch information
razvantomegea authored Oct 18, 2024
1 parent beea8c3 commit 80cfefe
Show file tree
Hide file tree
Showing 6 changed files with 331 additions and 3 deletions.
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);
});
});

0 comments on commit 80cfefe

Please sign in to comment.