feat: consulta pública de pedidos por código
This commit is contained in:
88
tests/unit/components/PublicOrderSummary.spec.js
Normal file
88
tests/unit/components/PublicOrderSummary.spec.js
Normal file
@@ -0,0 +1,88 @@
|
||||
import { describe, expect, it } from 'vitest'
|
||||
import { mount } from '@vue/test-utils'
|
||||
import PublicOrderSummary from '@/components/PublicOrderSummary.vue'
|
||||
import OrderAccessInfo from '@/components/order/OrderAccessInfo.vue'
|
||||
import OrderCustomer from '@/components/order/OrderCustomer.vue'
|
||||
import OrderLines from '@/components/order/OrderLines.vue'
|
||||
import OrderTotal from '@/components/order/OrderTotal.vue'
|
||||
import OrderPayment from '@/components/order/OrderPayment.vue'
|
||||
import vuetify from '@/plugins/vuetify'
|
||||
|
||||
const saleData = {
|
||||
id: 5,
|
||||
code: 'abc123',
|
||||
date: '2024-09-02T00:00:00Z',
|
||||
customer: { id: 1, name: 'Camilo' },
|
||||
payment_method: 'CASH',
|
||||
lines: [
|
||||
{ product: { id: 10, name: 'Panela' }, quantity: 2, unit_price: 3000 },
|
||||
{ product: { id: 11, name: 'Arroz' }, quantity: 1, unit_price: 5000 },
|
||||
],
|
||||
type: 'sale',
|
||||
}
|
||||
|
||||
const catalogData = {
|
||||
id: 7,
|
||||
code: 'def456',
|
||||
date: '2024-09-02T00:00:00Z',
|
||||
customer: { id: 1, name: 'Camilo' },
|
||||
lines: [{ product: { id: 10, name: 'Panela' }, quantity: 2, unit_price: 3000 }],
|
||||
type: 'catalog',
|
||||
}
|
||||
|
||||
function mountSummary (props) {
|
||||
return mount(PublicOrderSummary, {
|
||||
props,
|
||||
global: { plugins: [vuetify] },
|
||||
})
|
||||
}
|
||||
|
||||
describe('PublicOrderSummary', () => {
|
||||
it('renderiza el resumen de una venta con sus partes', () => {
|
||||
const wrapper = mountSummary({ purchase: saleData })
|
||||
|
||||
expect(wrapper.findComponent(OrderAccessInfo).exists()).toBe(true)
|
||||
expect(wrapper.findComponent(OrderCustomer).exists()).toBe(true)
|
||||
expect(wrapper.findComponent(OrderLines).exists()).toBe(true)
|
||||
expect(wrapper.findComponent(OrderTotal).exists()).toBe(true)
|
||||
expect(wrapper.findComponent(OrderPayment).exists()).toBe(true)
|
||||
expect(wrapper.text()).toContain('Camilo')
|
||||
expect(wrapper.text()).toContain('Panela')
|
||||
expect(wrapper.text()).toContain('Arroz')
|
||||
expect(wrapper.text().replace(/\u00A0/g, ' ')).toContain('11.000')
|
||||
})
|
||||
|
||||
it('renderiza un pedido de catálogo sin bloque de pago', () => {
|
||||
const wrapper = mountSummary({ purchase: catalogData })
|
||||
|
||||
expect(wrapper.findComponent(OrderAccessInfo).exists()).toBe(true)
|
||||
expect(wrapper.findComponent(OrderCustomer).exists()).toBe(true)
|
||||
expect(wrapper.findComponent(OrderLines).exists()).toBe(true)
|
||||
expect(wrapper.findComponent(OrderTotal).exists()).toBe(true)
|
||||
expect(wrapper.findComponent(OrderPayment).exists()).toBe(false)
|
||||
expect(wrapper.text()).toContain('Camilo')
|
||||
expect(wrapper.text()).toContain('Panela')
|
||||
})
|
||||
|
||||
it('muestra el estado de carga', () => {
|
||||
const wrapper = mountSummary({ purchase: null, loading: true })
|
||||
|
||||
expect(wrapper.text()).toContain('Cargando')
|
||||
})
|
||||
|
||||
it('muestra el mensaje de error cuando lo recibe', () => {
|
||||
const wrapper = mountSummary({
|
||||
purchase: null,
|
||||
error: 'No se encontró un pedido con ese código.',
|
||||
})
|
||||
|
||||
expect(wrapper.text()).toContain('No se encontró un pedido con ese código.')
|
||||
})
|
||||
|
||||
it('no renderiza datos cuando no hay pedido, carga ni error', () => {
|
||||
const wrapper = mountSummary({ purchase: null })
|
||||
|
||||
expect(wrapper.text()).not.toContain('Camilo')
|
||||
expect(wrapper.findComponent(OrderLines).exists()).toBe(false)
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user