import { mount, createLocalVue } from '@vue/test-utils'
import AdminIndexPage from './index.vue'
import Styleguide from '@human-connection/styleguide'
import VueApollo from 'vue-apollo'

const localVue = createLocalVue()

localVue.use(Styleguide)
localVue.use(VueApollo)

describe('admin/index.vue', () => {
  let Wrapper
  let store
  let mocks

  beforeEach(() => {
    mocks = {
      $t: jest.fn(),
    }
  })

  describe('mount', () => {
    Wrapper = () => {
      return mount(AdminIndexPage, {
        store,
        mocks,
        localVue,
      })
    }

    describe('in loading state', () => {
      beforeEach(() => {
        mocks = { ...mocks, $apolloData: { loading: true } }
      })

      it.skip('shows a loading spinner', () => {
        // I don't know how to mock the data that gets passed to
        // ApolloQuery component
        // What I found:
        // https://github.com/Akryum/vue-apollo/issues/656
        // https://github.com/Akryum/vue-apollo/issues/609
        Wrapper()
        const calls = mocks.$t.mock.calls
        const expected = [['site.error-occurred']]
        expect(calls).toEqual(expected)
      })
    })

    describe('in error state', () => {
      it.todo('displays an error message')
    })
  })
})
