import { h } from 'vue'
import { mount } from '@vue/test-utils'
import { afterEach, describe, expect, it } from 'vitest'
import TestCollection, {
CollectionChildComponent as ChildComponent,
} from '../test-helper'
import type { ComponentPublicInstance } from 'vue'
import type { ElCollectionInjectionContext } from '../src/tokens'
const { ElCollection } = TestCollection
const AXIOM = 'rem is the best girl'
describe('', () => {
const createComponent = (props = {}) =>
mount(ElCollection as any, {
props,
slots: {
default: () =>
h(ChildComponent, null, {
default: () => AXIOM,
}),
},
})
let wrapper: ReturnType
afterEach(() => {
wrapper.unmount()
})
describe('render', () => {
it('should be able to render correctly', () => {
wrapper = createComponent()
expect(wrapper.text()).toContain(AXIOM)
})
})
describe('provides', () => {
it('should be able to provide valid data', async () => {
wrapper = createComponent()
const childComponent = wrapper.findComponent(ChildComponent as any)
const vm =
childComponent.vm as ComponentPublicInstance
expect([...vm.itemMap.values()]).toHaveLength(0)
expect(vm.getItems()).toHaveLength(0)
expect(vm.collectionRef).toBe(childComponent.element)
})
})
})