gradido/frontend/src/components/GdtTransactionList.spec.js
2022-04-19 12:25:09 +02:00

149 lines
3.7 KiB
JavaScript

import { mount } from '@vue/test-utils'
import GdtTransactionList from './GdtTransactionList'
import { GdtEntryType } from '@/graphql/enums'
const localVue = global.localVue
const state = {
language: 'en',
}
describe('GdtTransactionList ', () => {
let wrapper
const mocks = {
$store: {
state,
commit: jest.fn(),
},
$i18n: {
locale: 'en',
},
$t: jest.fn((t) => t),
$n: jest.fn((n) => n),
$d: jest.fn((d) => d),
}
const propsData = {
transactionsGdt: [],
transactionGdtCount: 0,
pageSize: 25,
value: 1,
}
const Wrapper = () => {
return mount(GdtTransactionList, { localVue, mocks, propsData })
}
describe('transactionGdtCount is 0', () => {
beforeEach(() => {
wrapper = Wrapper()
})
it('renders the funding button ', () => {
expect(wrapper.find('.gdt-funding').exists()).toBe(true)
})
it('links to https://gradido.net/en/memberships/ when clicking', async () => {
expect(wrapper.find('.gdt-funding').attributes('href')).toBe(
'https://gradido.net/' + state.language + '/memberships/',
)
})
})
describe('Transactions are loaded', () => {
beforeEach(async () => {
wrapper = Wrapper()
await wrapper.setProps({
transactionGdtCount: 42,
transactionsGdt: [
{
id: 1,
amount: 100,
gdt: 1700,
factor: 17,
comment: '',
date: '2021-05-02T17:20:11+00:00',
gdtEntryType: GdtEntryType.FORM,
},
{
id: 2,
amount: 1810,
gdt: 362,
factor: 0.2,
comment: 'Dezember 20',
date: '2020-12-31T12:00:00+00:00',
gdtEntryType: GdtEntryType.GLOBAL_MODIFICATOR,
},
{
id: 3,
amount: 100,
gdt: 1700,
factor: 17,
comment: '',
date: '2020-05-07T17:00:00+00:00',
gdtEntryType: GdtEntryType.FORM,
},
{
id: 4,
amount: 100,
gdt: 110,
factor: 22,
comment: '',
date: '2020-04-10T13:28:00+00:00',
gdtEntryType: GdtEntryType.ELOPAGE_PUBLISHER,
},
],
})
})
it('renders the component', () => {
expect(wrapper.find('div.gdt-transaction-list').exists()).toBeTruthy()
})
it('does not render the funding button ', () => {
expect(wrapper.find('.gdt-funding').exists()).toBe(false)
})
describe('change of currentPage', () => {
it('calls the API after currentPage changes', async () => {
jest.clearAllMocks()
await wrapper.findComponent({ name: 'BPagination' }).vm.$emit('input', 2)
expect(wrapper.emitted('input')).toEqual([[2]])
})
describe('pagination buttons', () => {
describe('with transactionCount > pageSize', () => {
it('shows the pagination buttons', () => {
expect(wrapper.find('ul.pagination').exists()).toBe(true)
})
})
describe('with transactionCount < pageSize', () => {
beforeEach(() => {
wrapper.setProps({
transactionGdtCount: 10,
})
})
it('shows no pagination buttons', () => {
expect(wrapper.find('ul.pagination').exists()).toBe(false)
})
})
})
})
describe('server not reachable', () => {
beforeEach(() => {
wrapper.setProps({
transactionGdtCount: -1,
})
})
it('renders the not-reachable text', () => {
expect(wrapper.text()).toBe('gdt.not-reachable')
})
})
})
})