import { mount } from '@vue/test-utils'
import SearchPost from './SearchPost.vue'

const localVue = global.localVue
localVue.filter('dateTime', (d) => d)

describe('SearchPost.vue', () => {
  let mocks, wrapper, propsData, counts
  beforeEach(() => {
    mocks = {
      $t: jest.fn((string) => string),
    }
    propsData = {
      option: {
        title: 'Post Title',
        commentsCount: 3,
        shoutedCount: 6,
        clickedCount: 5,
        viewedTeaserCount: 15,
        createdAt: '23.08.2019',
        author: {
          name: 'Post Author',
        },
      },
    }
    wrapper = Wrapper()
    counts = wrapper.find('.search-post > .metadata > .counts')
  })

  const Wrapper = () => {
    return mount(SearchPost, { mocks, localVue, propsData })
  }

  describe('shallowMount', () => {
    it('renders post title', () => {
      expect(wrapper.find('.search-post > .label').text()).toMatch('Post Title')
    })

    it('renders post commentsCount', () => {
      expect(counts.text()).toContain(propsData.option.commentsCount.toString())
    })

    it('renders post shoutedCount', () => {
      expect(counts.text()).toContain(propsData.option.shoutedCount.toString())
    })

    it('renders post author', () => {
      expect(wrapper.find('.search-post > .metadata').text()).toContain('Post Author')
    })

    it('renders post createdAt', () => {
      expect(wrapper.find('.search-post > .metadata').text()).toContain('23.08.2019')
    })
  })
})
