import { module, test } from 'qunit'; import { setupRenderingTest } from 'ember-qunit'; import { find, render, waitUntil } from '@ember/test-helpers'; import hbs from 'htmlbars-inline-precompile'; import { setupMirage } from 'ember-cli-mirage/test-support'; import { MirageTestContext } from 'ember-cli-mirage/test-support'; import { createDepotSafe, createMerchantSafe, createPrepaidCardSafe, createSafeToken, getFilenameFromDid, } from '@cardstack/web-client/utils/test-factories'; interface Context extends MirageTestContext {} let walletAddress = '0x182619c6Ea074C053eF3f1e1eF81Ec8De6Eb6E44'; module( 'Integration | Component | card-pay/balance-view-banner', function (hooks) { setupRenderingTest(hooks); setupMirage(hooks); test('it renders a depot safe token balance', async function (this: Context, assert) { let depotAddress = '0xdepot000bAB0644ffCD32518eBF4924ba8666666'; this.set('walletAddress', walletAddress); this.set( 'safe', createDepotSafe({ address: depotAddress, tokens: [createSafeToken('DAI.CPXD', '23240000000000000000')], }) ); await render(hbs` `); assert .dom('[data-test-balance-view-summary]') .containsText('Account') .containsText('0x1826...6E44') .containsText('DEPOT') .containsText('23.24 DAI.CPXD'); assert .dom('[data-test-balance-view-account-address') .containsText('Account:') .containsText(walletAddress); assert .dom('[data-test-balance-view-safe-address') .containsText('DEPOT:') .containsText(depotAddress); assert .dom('[data-test-balance-view-safe-address] [data-test-icon=depot]') .exists(); assert .dom('[data-test-balance-view-token-amount') .containsText('23.24 DAI.CPXD'); }); test('it renders a merchant safe token balance', async function (this: Context, assert) { let merchantAddress = '0xmerchantbAB0644ffCD32518eBF4924ba8666666'; const MERCHANT_DID = 'did:cardstack:1moVYMRNGv6E5Ca3t7aXVD2Yb11e4e91103f084a'; this.set('walletAddress', walletAddress); this.set( 'safe', createMerchantSafe({ address: merchantAddress, merchant: '0xprepaidDbAB0644ffCD32518eBF4924ba8666666', tokens: [ createSafeToken('DAI.CPXD', '125000000000000000000'), createSafeToken('CARD.CPXD', '450110000000000000000'), ], accumulatedSpendValue: 100, infoDID: MERCHANT_DID, }) ); this.server.create('merchant-info', { id: await getFilenameFromDid(MERCHANT_DID), name: 'Mandello', slug: 'mandello1', did: MERCHANT_DID, }); await render(hbs` `); // Wait for merchant resource to fetch await waitUntil(() => find('[data-test-balance-view-summary]')?.textContent?.includes( 'Mandello' ) ); assert .dom('[data-test-balance-view-summary]') .containsText('Account') .containsText('0x1826...6E44') .containsText('Merchant Mandello') .containsText('450.11 CARD.CPXD'); assert .dom('[data-test-balance-view-account-address') .containsText('Account:') .containsText(walletAddress); assert .dom('[data-test-balance-view-safe-address') .containsText('Merchant Mandello:') .containsText(merchantAddress); assert .dom('[data-test-balance-view-safe-address] [data-test-icon=merchant]') .exists(); assert .dom('[data-test-balance-view-token-amount') .containsText('450.11 CARD.CPXD'); }); test('it uses placeholders for an unhandled safe type', async function (assert) { let safeAddress = '0x123400000000000000000000000000000000abcd'; this.set( 'safe', createPrepaidCardSafe({ address: safeAddress, }) ); await render(hbs` `); assert.dom('[data-test-balance-view-summary]').containsText('Safe'); assert .dom('[data-test-balance-view-safe-address]') .containsText('Safe:') .containsText(safeAddress); assert .dom('[data-test-balance-view-safe-address] [data-test-icon]') .doesNotExist(); }); } );