У меня есть следующий шаблон компонента, и я хотел бы написать тест (или два разных), который проверяет следующее:
- При событии перемещения метод
updatePosition
должен бытьвызываемый - При событии хода
updatePosition
должен поменять местами dxp_spopping двух карт.
<template>
<div>
<draggable-component
v-model="dashBoardDataLocal"
:move="updatePosition"
handle=".handle"
ghost-class="ghost"
class="reorder-draggable-component"
@start="drag=true"
@end="drag=false">
<div
v-for="card in dashBoardDataLocal"
:key="card.id"
class="card-list-item border p-2 my-3">
<font-awesome-icon icon="align-justify" class="handle"/>
{{card.db_name}}
</div>
</draggable-component>
</div>
</template>
Вот updatePosition
реализация
updatePosition (payload) {
if (this.disableSaveLocal === true) {
this.disableSaveLocal = false
}
const pos1 = payload.draggedContext.element.dxp_position
const index1 = payload.draggedContext.index
const index2 = payload.draggedContext.futureIndex
this.dashBoardDataLocal[index1].dxp_position = this.dashBoardDataLocal[index2].dxp_position
this.dashBoardDataLocal[index2].dxp_position = pos1
}
Вот текущее состояние теста
it('it should update the dxp_position of the two swapped dashBoardDataClone entries', () => {
// console.log(wrapper.vm)
let dashBoardDataCloneReordered = [
{ db_name: 'Jobs', dxp_dashboardref: 1, dxp_hidden: 0, dxp_position: 2, dxp_ref: 926 },
{ db_name: 'Firms', dxp_dashboardref: 2, dxp_hidden: 0, dxp_position: 1, dxp_ref: 927 },
{ db_name: 'CRM', dxp_dashboardref: 5, dxp_hidden: 0, dxp_position: 3, dxp_ref: 987 }
]
const updatePositionStub = jest.fn()
wrapper.setMethods({ updatePosition: updatePositionStub })
expect(updatePositionStub).toHaveBeenCalled()
})
Сбой при
Ошибка: ожидаемо (jest.fn ()). ToHaveBeenCalled ()
Ожидаемая фиктивная функция была вызвана, но она не была вызвана.
, что имеет смысл, поскольку на самом деле ничто не вызывает перемещения / перетаскивания.
Итак, мой вопрос, как я могу генерировать / имитировать событие перемещения (или 'onMove') SortableJs / VueDraggable?