@reown/appkit-scaffold-ui
Version:
The full stack toolkit to build onchain app UX.
79 lines • 4.55 kB
JavaScript
import { fixture } from '@open-wc/testing';
import { beforeEach, describe, expect, it, vi } from 'vitest';
import { html } from 'lit';
import { NavigationUtil } from '@reown/appkit-common';
import { ChainController, CoreHelperUtil, EventsController, RouterController } from '@reown/appkit-controllers';
import { W3mChooseAccountNameView } from '../../src/views/w3m-choose-account-name-view/index';
import { HelpersUtil } from '../utils/HelpersUtil';
const CHOOSE_NAME_BUTTON_SELECTOR = 'wui-button';
const LEARN_MORE_LINK_SELECTOR = 'wui-link';
const ICON_BOX_SELECTOR = 'wui-icon-box';
describe('W3mChooseAccountNameView', () => {
beforeEach(() => {
vi.clearAllMocks();
vi.spyOn(ChainController.state, 'activeChain', 'get').mockReturnValue('eip155');
});
it('should render', async () => {
const element = await fixture(html `<w3m-choose-account-name-view></w3m-choose-account-name-view>`);
expect(element).toBeTruthy();
});
it('should render onboarding content', async () => {
const element = await fixture(html `<w3m-choose-account-name-view></w3m-choose-account-name-view>`);
const iconBox = HelpersUtil.querySelect(element, ICON_BOX_SELECTOR);
const textElements = element.shadowRoot?.querySelectorAll('wui-text');
const titleText = Array.from(textElements || []).find(el => el.textContent?.includes('Choose your account name'));
const descriptionText = Array.from(textElements || []).find(el => el.textContent?.includes('Finally say goodbye to 0x addresses'));
expect(iconBox).toBeTruthy();
expect(titleText).toBeTruthy();
expect(descriptionText).toBeTruthy();
});
it('should render choose name button', async () => {
const element = await fixture(html `<w3m-choose-account-name-view></w3m-choose-account-name-view>`);
const button = HelpersUtil.querySelect(element, CHOOSE_NAME_BUTTON_SELECTOR);
expect(button).toBeTruthy();
expect(button?.textContent?.trim()).toBe('Choose name');
});
it('should render learn more link', async () => {
const element = await fixture(html `<w3m-choose-account-name-view></w3m-choose-account-name-view>`);
const link = HelpersUtil.querySelect(element, LEARN_MORE_LINK_SELECTOR);
expect(link).toBeTruthy();
expect(link?.textContent?.trim()).toContain('Learn more about names');
});
it('should navigate to RegisterAccountName when choose name button is clicked', async () => {
const pushSpy = vi.spyOn(RouterController, 'push').mockImplementation(vi.fn());
const sendEventSpy = vi.spyOn(EventsController, 'sendEvent').mockImplementation(vi.fn());
const element = await fixture(html `<w3m-choose-account-name-view></w3m-choose-account-name-view>`);
const button = HelpersUtil.querySelect(element, CHOOSE_NAME_BUTTON_SELECTOR);
button?.click();
expect(pushSpy).toHaveBeenCalledWith('RegisterAccountName');
expect(sendEventSpy).toHaveBeenCalledWith({
type: 'track',
event: 'OPEN_ENS_FLOW',
properties: {
isSmartAccount: false
}
});
});
it('should open FAQ link when learn more is clicked', async () => {
const openHrefSpy = vi.spyOn(CoreHelperUtil, 'openHref').mockImplementation(vi.fn());
const element = await fixture(html `<w3m-choose-account-name-view></w3m-choose-account-name-view>`);
const link = HelpersUtil.querySelect(element, LEARN_MORE_LINK_SELECTOR);
link?.click();
expect(openHrefSpy).toHaveBeenCalledWith(NavigationUtil.URLS.FAQ, '_blank');
});
it('should show loading state on button when loading is true', async () => {
const element = await fixture(html `<w3m-choose-account-name-view></w3m-choose-account-name-view>`);
element['loading'] = true;
await element.updateComplete;
const button = HelpersUtil.querySelect(element, CHOOSE_NAME_BUTTON_SELECTOR);
expect(button?.loading).toBe(true);
});
it('should not show loading state on button when loading is false', async () => {
const element = await fixture(html `<w3m-choose-account-name-view></w3m-choose-account-name-view>`);
element['loading'] = false;
await element.updateComplete;
const button = HelpersUtil.querySelect(element, CHOOSE_NAME_BUTTON_SELECTOR);
expect(button?.loading).toBe(false);
});
});
//# sourceMappingURL=w3m-choose-account-name-view.test.js.map