diff --git a/webapp/components/comments/CommentList/CommentList.spec.js b/webapp/components/comments/CommentList/CommentList.spec.js new file mode 100644 index 000000000..fa6394e53 --- /dev/null +++ b/webapp/components/comments/CommentList/CommentList.spec.js @@ -0,0 +1,64 @@ +import { config, mount, createLocalVue } from '@vue/test-utils' +import CommentList from '.' +import Empty from '~/components/Empty' +import Vue from 'vue' +import Vuex from 'vuex' +import Filters from '~/plugins/vue-filters' +import Styleguide from '@human-connection/styleguide' + +const localVue = createLocalVue() + +localVue.use(Styleguide) +localVue.use(Vuex) +localVue.filter('truncate', string => string) + +config.stubs['v-popover'] = '' +config.stubs['nuxt-link'] = '' +config.stubs['no-ssr'] = '' + +describe('CommentList.vue', () => { + let mocks + let store + let wrapper + let propsData + + propsData = { + post: { id: 1 } + } + store = new Vuex.Store({ + getters: { + 'auth/user': () => { + return {} + } + } + }) + mocks = { + $t: jest.fn() + } + + describe('shallowMount', () => { + const Wrapper = () => { + return mount(CommentList, { store, mocks, localVue, propsData }) + } + + beforeEach(() => { + wrapper = Wrapper() + wrapper.setData({ + comments: [{ id: 'c1', contentExcerpt: 'this is a comment' }] + }) + }) + + it('displays a comments counter', () => { + expect(wrapper.find('span.ds-tag').text()).toEqual('1') + }) + + it('displays comments when there are comments to display', () => { + expect(wrapper.find('div#comments').text()).toEqual('this is a comment') + }) + + it('displays a message icon when there are no comments to display', () => { + wrapper.setData({ comments: [] }) + expect(wrapper.findAll(Empty)).toHaveLength(1) + }) + }) +})