mirror of
https://github.com/IT4Change/gradido.git
synced 2025-12-13 07:45:54 +00:00
141 lines
3.8 KiB
JavaScript
141 lines
3.8 KiB
JavaScript
import { mount } from '@vue/test-utils'
|
|
import TransactionLinkList from './TransactionLinkList.vue'
|
|
import { listTransactionLinksAdmin } from '../graphql/listTransactionLinksAdmin.js'
|
|
import { toastErrorSpy } from '../../test/testSetup'
|
|
|
|
const localVue = global.localVue
|
|
|
|
const apolloQueryMock = jest.fn()
|
|
apolloQueryMock.mockResolvedValue({
|
|
data: {
|
|
listTransactionLinksAdmin: {
|
|
linkCount: 8,
|
|
linkList: [
|
|
{
|
|
amount: '19.99',
|
|
code: '62ef8236ace7217fbd066c5a',
|
|
createdAt: '2022-03-24T17:43:09.000Z',
|
|
deletedAt: null,
|
|
holdAvailableAmount: '20.51411720068412022949',
|
|
id: 36,
|
|
memo: 'Kein Trick, keine Zauberrei,\nbei Gradidio sei dabei!',
|
|
redeemedAt: null,
|
|
validUntil: '2022-04-07T17:43:09.000Z',
|
|
},
|
|
{
|
|
amount: '19.99',
|
|
code: '2b603f36521c617fbd066cef',
|
|
createdAt: '2022-03-24T17:43:09.000Z',
|
|
deletedAt: null,
|
|
holdAvailableAmount: '20.51411720068412022949',
|
|
id: 37,
|
|
memo: 'Kein Trick, keine Zauberrei,\nbei Gradidio sei dabei!',
|
|
redeemedAt: null,
|
|
validUntil: '2022-04-07T17:43:09.000Z',
|
|
},
|
|
{
|
|
amount: '19.99',
|
|
code: '0bb789b5bd5b717fbd066eb5',
|
|
createdAt: '2022-03-24T17:43:09.000Z',
|
|
deletedAt: '2022-03-24T17:43:09.000Z',
|
|
holdAvailableAmount: '20.51411720068412022949',
|
|
id: 40,
|
|
memo: 'Da habe ich mich wohl etwas übernommen.',
|
|
redeemedAt: '2022-04-07T14:43:09.000Z',
|
|
validUntil: '2022-04-07T17:43:09.000Z',
|
|
},
|
|
{
|
|
amount: '19.99',
|
|
code: '2d4a763e516b317fbd066a85',
|
|
createdAt: '2022-01-01T00:00:00.000Z',
|
|
deletedAt: null,
|
|
holdAvailableAmount: '20.51411720068412022949',
|
|
id: 33,
|
|
memo: 'Leider wollte niemand meine Gradidos zum Neujahr haben :(',
|
|
redeemedAt: null,
|
|
validUntil: '2022-01-15T00:00:00.000Z',
|
|
},
|
|
],
|
|
},
|
|
},
|
|
})
|
|
|
|
const propsData = {
|
|
userId: 42,
|
|
}
|
|
|
|
const mocks = {
|
|
$apollo: {
|
|
query: apolloQueryMock,
|
|
},
|
|
$t: jest.fn((t) => t),
|
|
$d: jest.fn((d) => d),
|
|
}
|
|
|
|
describe('TransactionLinkList', () => {
|
|
let wrapper
|
|
|
|
const Wrapper = () => {
|
|
return mount(TransactionLinkList, { localVue, mocks, propsData })
|
|
}
|
|
|
|
describe('mount', () => {
|
|
beforeEach(() => {
|
|
jest.clearAllMocks()
|
|
wrapper = Wrapper()
|
|
})
|
|
|
|
it('calls the API', () => {
|
|
expect(apolloQueryMock).toBeCalledWith(
|
|
expect.objectContaining({
|
|
query: listTransactionLinksAdmin,
|
|
variables: {
|
|
currentPage: 1,
|
|
pageSize: 5,
|
|
userId: 42,
|
|
},
|
|
}),
|
|
)
|
|
})
|
|
|
|
it('has 4 items in the table', () => {
|
|
expect(wrapper.findAll('tbody > tr')).toHaveLength(4)
|
|
})
|
|
|
|
it('has pagination buttons', () => {
|
|
expect(wrapper.findComponent({ name: 'BPagination' }).exists()).toBe(true)
|
|
})
|
|
|
|
describe('next page', () => {
|
|
beforeAll(async () => {
|
|
jest.clearAllMocks()
|
|
await wrapper.findComponent({ name: 'BPagination' }).vm.$emit('input', 2)
|
|
})
|
|
|
|
it('calls the API again', () => {
|
|
expect(apolloQueryMock).toBeCalledWith(
|
|
expect.objectContaining({
|
|
query: listTransactionLinksAdmin,
|
|
variables: {
|
|
currentPage: 1,
|
|
pageSize: 5,
|
|
userId: 42,
|
|
},
|
|
}),
|
|
)
|
|
})
|
|
})
|
|
|
|
describe('server response with error', () => {
|
|
beforeEach(() => {
|
|
apolloQueryMock.mockRejectedValue({ message: 'Oh no!' })
|
|
wrapper = Wrapper()
|
|
})
|
|
|
|
it('toasts an error message', () => {
|
|
expect(toastErrorSpy).toBeCalledWith('Oh no!')
|
|
})
|
|
})
|
|
})
|
|
})
|