From 6e5af2a2ec0b7dd8a1eb1fa3eba030e321682e7f Mon Sep 17 00:00:00 2001 From: mahula Date: Wed, 21 Dec 2022 05:31:17 +0100 Subject: [PATCH] add unit tests for transaction rows name component --- .../components/TransactionRows/Name.spec.js | 79 +++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 frontend/src/components/TransactionRows/Name.spec.js diff --git a/frontend/src/components/TransactionRows/Name.spec.js b/frontend/src/components/TransactionRows/Name.spec.js new file mode 100644 index 000000000..839a698ae --- /dev/null +++ b/frontend/src/components/TransactionRows/Name.spec.js @@ -0,0 +1,79 @@ +import { mount } from '@vue/test-utils' +import Name from './Name' + +const localVue = global.localVue + +const mocks = { + $router: { + push: jest.fn(), + history: { + current: { + fullPath: '/transactions', + }, + }, + }, +} + +const propsData = { + text: 'Plaintext Name', +} + +describe('Name', () => { + let wrapper + + const Wrapper = () => { + return mount(Name, { localVue, mocks, propsData }) + } + + describe('mount', () => { + beforeEach(() => { + wrapper = Wrapper() + }) + + it('renders the component', () => { + expect(wrapper.find('div.name').exists()).toBe(true) + }) + + describe('without linked user', () => { + it('has a span with the text', () => { + expect(wrapper.find('div.gdd-transaction-list-item-name').text()).toBe('Plaintext Name') + }) + + it('has no link', () => { + expect(wrapper.find('div.gdd-transaction-list-item-name').find('a').exists()).toBe(false) + }) + }) + + describe('with linked user', () => { + beforeEach(async () => { + await wrapper.setProps({ + linkedUser: { firstName: 'Bibi', lastName: 'Bloxberg', email: 'bibi@bloxberg.de' }, + }) + }) + + it('has a link with first and last name', () => { + expect(wrapper.find('div.gdd-transaction-list-item-name').text()).toBe('Bibi Bloxberg') + }) + + it('has a link', () => { + expect(wrapper.find('div.gdd-transaction-list-item-name').find('a').exists()).toBe(true) + }) + + describe('click link', () => { + beforeEach(async () => { + await wrapper.find('div.gdd-transaction-list-item-name').find('a').trigger('click') + }) + + it('emits set tunneled email', () => { + expect(wrapper.emitted('set-tunneled-email')).toEqual([['bibi@bloxberg.de']]) + }) + + it('pushes the route with query for email', () => { + expect(mocks.$router.push).toBeCalledWith({ + path: '/send', + }) + }) + }) + }) + }) +})