mirror of
https://github.com/IT4Change/gradido.git
synced 2025-12-13 07:45:54 +00:00
296 lines
7.8 KiB
JavaScript
296 lines
7.8 KiB
JavaScript
import { mount } from '@vue/test-utils'
|
|
import ContributionMessagesList from './ContributionMessagesList.vue'
|
|
import ContributionMessagesListItem from './ContributionMessagesListItem.vue'
|
|
|
|
const localVue = global.localVue
|
|
let wrapper
|
|
|
|
const dateMock = jest.fn((d) => d)
|
|
|
|
const mocks = {
|
|
$t: jest.fn((t) => t),
|
|
$d: dateMock,
|
|
$store: {
|
|
state: {
|
|
firstName: 'Peter',
|
|
lastName: 'Lustig',
|
|
},
|
|
},
|
|
}
|
|
|
|
describe('ContributionMessagesList', () => {
|
|
const propsData = {
|
|
contributionId: 42,
|
|
state: 'PENDING',
|
|
messages: [
|
|
{
|
|
id: 111,
|
|
message: 'Lorem ipsum?',
|
|
createdAt: '2022-08-29T12:23:27.000Z',
|
|
updatedAt: null,
|
|
type: 'DIALOG',
|
|
userFirstName: 'Peter',
|
|
userLastName: 'Lustig',
|
|
userId: 107,
|
|
__typename: 'ContributionMessage',
|
|
},
|
|
{
|
|
id: 113,
|
|
message: 'Asda sdad ad asdasd, das Ass das Das. ',
|
|
createdAt: '2022-08-29T12:25:34.000Z',
|
|
updatedAt: null,
|
|
type: 'DIALOG',
|
|
userFirstName: 'Bibi',
|
|
userLastName: 'Bloxberg',
|
|
userId: 108,
|
|
__typename: 'ContributionMessage',
|
|
},
|
|
],
|
|
}
|
|
|
|
const ListWrapper = () => {
|
|
return mount(ContributionMessagesList, {
|
|
localVue,
|
|
mocks,
|
|
propsData,
|
|
})
|
|
}
|
|
|
|
describe('mount', () => {
|
|
beforeEach(() => {
|
|
wrapper = ListWrapper()
|
|
})
|
|
|
|
it('has two DIV .contribution-messages-list-item elements', () => {
|
|
expect(wrapper.findAll('div.contribution-messages-list-item').length).toBe(2)
|
|
})
|
|
})
|
|
})
|
|
|
|
describe('ContributionMessagesListItem', () => {
|
|
describe('if message author has moderator role', () => {
|
|
const propsData = {
|
|
message: {
|
|
id: 113,
|
|
message: 'Asda sdad ad asdasd, das Ass das Das. ',
|
|
createdAt: '2022-08-29T12:25:34.000Z',
|
|
updatedAt: null,
|
|
type: 'DIALOG',
|
|
userFirstName: 'Bibi',
|
|
userLastName: 'Bloxberg',
|
|
userId: 108,
|
|
__typename: 'ContributionMessage',
|
|
},
|
|
}
|
|
|
|
const ItemWrapper = () => {
|
|
return mount(ContributionMessagesListItem, {
|
|
localVue,
|
|
mocks,
|
|
propsData,
|
|
})
|
|
}
|
|
|
|
describe('mount', () => {
|
|
beforeAll(() => {
|
|
wrapper = ItemWrapper()
|
|
})
|
|
|
|
it('has a DIV .is-moderator', () => {
|
|
expect(wrapper.find('div.is-moderator').exists()).toBe(true)
|
|
})
|
|
|
|
it('has the complete user name', () => {
|
|
expect(wrapper.find('span[data-test="username"]').text()).toBe('Bibi Bloxberg')
|
|
})
|
|
|
|
it('has the message creation date', () => {
|
|
expect(wrapper.find('div[data-test="date"]').text()).toMatch(
|
|
'Mon Aug 29 2022 12:25:34 GMT+0000',
|
|
)
|
|
})
|
|
|
|
it('has the moderator label', () => {
|
|
expect(wrapper.find('span[data-test="moderator"]').text()).toBe('community.moderator')
|
|
})
|
|
|
|
it('has the message', () => {
|
|
expect(wrapper.find('div[data-test="message"]').text()).toBe(
|
|
'Asda sdad ad asdasd, das Ass das Das.',
|
|
)
|
|
})
|
|
})
|
|
})
|
|
|
|
describe('if message author does not have moderator role', () => {
|
|
const propsData = {
|
|
message: {
|
|
id: 111,
|
|
message: 'Lorem ipsum?',
|
|
createdAt: '2022-08-29T12:23:27.000Z',
|
|
updatedAt: null,
|
|
type: 'DIALOG',
|
|
userFirstName: 'Peter',
|
|
userLastName: 'Lustig',
|
|
userId: 107,
|
|
__typename: 'ContributionMessage',
|
|
},
|
|
}
|
|
|
|
const ModeratorItemWrapper = () => {
|
|
return mount(ContributionMessagesListItem, {
|
|
localVue,
|
|
mocks,
|
|
propsData,
|
|
})
|
|
}
|
|
|
|
describe('mount', () => {
|
|
beforeAll(() => {
|
|
wrapper = ModeratorItemWrapper()
|
|
})
|
|
|
|
it('has a DIV .is-not-moderator', () => {
|
|
expect(wrapper.find('div.is-not-moderator').exists()).toBe(true)
|
|
})
|
|
|
|
it('has the complete user name', () => {
|
|
expect(wrapper.find('div[data-test="username"]').text()).toBe('Peter Lustig')
|
|
})
|
|
|
|
it('has the message creation date', () => {
|
|
expect(wrapper.find('div[data-test="date"]').text()).toMatch(
|
|
'Mon Aug 29 2022 12:23:27 GMT+0000',
|
|
)
|
|
})
|
|
|
|
it('has the message', () => {
|
|
expect(wrapper.find('div[data-test="message"]').text()).toBe('Lorem ipsum?')
|
|
})
|
|
})
|
|
})
|
|
|
|
describe('links in contribtion message', () => {
|
|
const propsData = {
|
|
message: {
|
|
id: 111,
|
|
message: 'Lorem ipsum?',
|
|
createdAt: '2022-08-29T12:23:27.000Z',
|
|
updatedAt: null,
|
|
type: 'DIALOG',
|
|
userFirstName: 'Peter',
|
|
userLastName: 'Lustig',
|
|
userId: 107,
|
|
__typename: 'ContributionMessage',
|
|
},
|
|
}
|
|
|
|
const ModeratorItemWrapper = () => {
|
|
return mount(ContributionMessagesListItem, {
|
|
localVue,
|
|
mocks,
|
|
propsData,
|
|
})
|
|
}
|
|
|
|
let messageField
|
|
|
|
describe('message of only one link', () => {
|
|
beforeEach(() => {
|
|
propsData.message.message = 'https://gradido.net/de/'
|
|
wrapper = ModeratorItemWrapper()
|
|
messageField = wrapper.find('div[data-test="message"]')
|
|
})
|
|
|
|
it('contains the link as text', () => {
|
|
expect(messageField.text()).toBe('https://gradido.net/de/')
|
|
})
|
|
|
|
it('contains a link to the given address', () => {
|
|
expect(messageField.find('a').attributes('href')).toBe('https://gradido.net/de/')
|
|
})
|
|
})
|
|
|
|
describe('message with text and two links', () => {
|
|
beforeEach(() => {
|
|
propsData.message.message = `Here you find all you need to know about Gradido: https://gradido.net/de/
|
|
and here is the link to the repository: https://github.com/gradido/gradido`
|
|
wrapper = ModeratorItemWrapper()
|
|
messageField = wrapper.find('div[data-test="message"]')
|
|
})
|
|
|
|
it('contains the whole text', () => {
|
|
expect(messageField.text())
|
|
.toBe(`Here you find all you need to know about Gradido: https://gradido.net/de/
|
|
and here is the link to the repository: https://github.com/gradido/gradido`)
|
|
})
|
|
|
|
it('contains the two links', () => {
|
|
expect(messageField.findAll('a').at(0).attributes('href')).toBe('https://gradido.net/de/')
|
|
expect(messageField.findAll('a').at(1).attributes('href')).toBe(
|
|
'https://github.com/gradido/gradido',
|
|
)
|
|
})
|
|
})
|
|
})
|
|
|
|
describe('contribution message type HISTORY', () => {
|
|
const propsData = {
|
|
message: {
|
|
id: 111,
|
|
message: `Sun Nov 13 2022 13:05:48 GMT+0100 (Central European Standard Time)
|
|
---
|
|
This message also contains a link: https://gradido.net/de/
|
|
---
|
|
350.00`,
|
|
createdAt: '2022-08-29T12:23:27.000Z',
|
|
updatedAt: null,
|
|
type: 'HISTORY',
|
|
userFirstName: 'Peter',
|
|
userLastName: 'Lustig',
|
|
userId: 107,
|
|
__typename: 'ContributionMessage',
|
|
},
|
|
}
|
|
|
|
const itemWrapper = () => {
|
|
return mount(ContributionMessagesListItem, {
|
|
localVue,
|
|
mocks,
|
|
propsData,
|
|
})
|
|
}
|
|
|
|
let messageField
|
|
|
|
describe('render HISTORY message', () => {
|
|
beforeEach(() => {
|
|
jest.clearAllMocks()
|
|
wrapper = itemWrapper()
|
|
messageField = wrapper.find('div[data-test="message"]')
|
|
})
|
|
|
|
it('renders the date', () => {
|
|
expect(dateMock).toBeCalledWith(
|
|
new Date('Sun Nov 13 2022 13:05:48 GMT+0100 (Central European Standard Time'),
|
|
'short',
|
|
)
|
|
})
|
|
|
|
it('renders the amount', () => {
|
|
expect(messageField.text()).toContain('350.00 GDD')
|
|
})
|
|
|
|
it('contains the link as text', () => {
|
|
expect(messageField.text()).toContain(
|
|
'This message also contains a link: https://gradido.net/de/',
|
|
)
|
|
})
|
|
|
|
it('contains a link to the given address', () => {
|
|
expect(messageField.find('a').attributes('href')).toBe('https://gradido.net/de/')
|
|
})
|
|
})
|
|
})
|
|
})
|