95 lines
2.4 KiB
JavaScript
95 lines
2.4 KiB
JavaScript
import { expect } from 'chai'
|
|
import { mount } from '@vue/test-utils'
|
|
import ItemInput from '@/components/ItemInput.vue'
|
|
|
|
const MOCK_SOURCE = [
|
|
{ id: 1, name: "Épée", base_price: 20 },
|
|
{ id: 2, name: "Arc", base_price: 30 },
|
|
]
|
|
|
|
const withItemFactory = function (item) {
|
|
const wrapper = mount(ItemInput, {
|
|
propsData: {
|
|
source: MOCK_SOURCE,
|
|
}
|
|
})
|
|
wrapper.setData({ item })
|
|
return wrapper
|
|
}
|
|
|
|
describe('ItemInput.vue', () => {
|
|
|
|
// Tests on validation of the item data
|
|
it('item with name and price is valid', () => {
|
|
const localItem = {
|
|
item: {
|
|
id: 0,
|
|
name: 'Epee',
|
|
base_price: 200
|
|
}
|
|
}
|
|
expect(ItemInput.computed.isItemValid.call(localItem)).to.equal(true)
|
|
})
|
|
|
|
it('item without data is not valid', () => {
|
|
const localItem = {
|
|
item: {
|
|
id: 0,
|
|
name: '',
|
|
base_price: ''
|
|
}
|
|
}
|
|
expect(ItemInput.computed.isItemValid.call(localItem)).to.equal(false)
|
|
})
|
|
|
|
it('item without price is not valid', () => {
|
|
const localItem = {
|
|
item: {
|
|
id: 0,
|
|
name: 'Epee',
|
|
base_price: ''
|
|
}
|
|
}
|
|
expect(ItemInput.computed.isItemValid.call(localItem)).to.equal(false)
|
|
})
|
|
|
|
it('item without name is not valid', () => {
|
|
const localItem = {
|
|
item: {
|
|
id: 0,
|
|
name: '',
|
|
base_price: 200
|
|
}
|
|
}
|
|
expect(ItemInput.computed.isItemValid.call(localItem)).to.equal(false)
|
|
})
|
|
|
|
it('item price must be a number', () => {
|
|
const localItem = {
|
|
item: {
|
|
id: 0,
|
|
name: 'Epee',
|
|
base_price: 'cheap'
|
|
}
|
|
}
|
|
expect(ItemInput.computed.isItemValid.call(localItem)).to.equal(false)
|
|
})
|
|
|
|
// Test on auto-completion
|
|
it('show completion suggestions on input', () => {
|
|
const wrapper = withItemFactory({ id: 0, name: '', base_price: '' })
|
|
const input = wrapper.find({ name: "name" })
|
|
const suggestionBox = wrapper.find('.dropdown')
|
|
console.log(input)
|
|
expect(suggestionBox.classes('is-active')).to.equal(true)
|
|
})
|
|
|
|
it('hides suggestion box when no suggestions are available', () => {
|
|
|
|
})
|
|
|
|
it('click on suggestion sets the item', () => {
|
|
|
|
})
|
|
})
|