#49 fix: marcador de producto sin imagen visible en el mapa de provenance
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
import { describe, expect, it } from 'vitest'
|
||||
import { mount } from '@vue/test-utils'
|
||||
import ProvenanceRelationModal from '@/components/provenance/ProvenanceRelationModal.vue'
|
||||
import vuetify from '@/plugins/vuetify'
|
||||
|
||||
const relation = {
|
||||
supplier: { id: 5, name: 'Asociación La Mesa', contact_email: 'info@mesa.co' },
|
||||
organization: { id: 3, name: 'Red de Economía Solidaria' },
|
||||
municipality: { id: 7, name: 'Santa Bárbara' },
|
||||
department: { id: 2, name: 'Antioquia' },
|
||||
country: { id: 1, name: 'Colombia', code: 'CO' },
|
||||
}
|
||||
const product = {
|
||||
id: 1,
|
||||
name: 'Panela regional',
|
||||
catalogue_images: ['http://localhost/media/panela.jpg'],
|
||||
}
|
||||
|
||||
function mountModal (props = {}) {
|
||||
return mount(ProvenanceRelationModal, {
|
||||
props: { product, relation, visible: true, ...props },
|
||||
global: { plugins: [vuetify] },
|
||||
})
|
||||
}
|
||||
|
||||
function bodyText () {
|
||||
return document.body.textContent
|
||||
}
|
||||
|
||||
describe('ProvenanceRelationModal', () => {
|
||||
it('muestra el producto y todas las entidades de la relación', () => {
|
||||
mountModal()
|
||||
|
||||
expect(bodyText()).toContain('Panela regional')
|
||||
expect(bodyText()).toContain('Proveedor')
|
||||
expect(bodyText()).toContain('Asociación La Mesa')
|
||||
expect(bodyText()).toContain('Organización')
|
||||
expect(bodyText()).toContain('Red de Economía Solidaria')
|
||||
expect(bodyText()).toContain('Municipio')
|
||||
expect(bodyText()).toContain('Santa Bárbara')
|
||||
expect(bodyText()).toContain('Departamento')
|
||||
expect(bodyText()).toContain('Antioquia')
|
||||
expect(bodyText()).toContain('País')
|
||||
expect(bodyText()).toContain('Colombia')
|
||||
})
|
||||
|
||||
it('incluye los detalles de contacto del proveedor', () => {
|
||||
mountModal()
|
||||
|
||||
expect(bodyText()).toContain('info@mesa.co')
|
||||
})
|
||||
|
||||
it('muestra la imagen del producto cuando existe', () => {
|
||||
mountModal()
|
||||
|
||||
expect(document.querySelector('img').getAttribute('src')).toBe(
|
||||
'http://localhost/media/panela.jpg'
|
||||
)
|
||||
})
|
||||
|
||||
it('no muestra las entidades ausentes', () => {
|
||||
mountModal({ relation: { supplier: { id: 5, name: 'Asociación La Mesa' } } })
|
||||
|
||||
expect(bodyText()).not.toContain('Organización')
|
||||
expect(bodyText()).not.toContain('Municipio')
|
||||
expect(bodyText()).not.toContain('Departamento')
|
||||
expect(bodyText()).not.toContain('País')
|
||||
})
|
||||
|
||||
it('no muestra contenido cuando no hay relación', () => {
|
||||
mountModal({ relation: null })
|
||||
|
||||
expect(bodyText()).not.toContain('Proveedor')
|
||||
})
|
||||
|
||||
it('no muestra el diálogo cuando visible es false', () => {
|
||||
mountModal({ visible: false })
|
||||
|
||||
expect(bodyText()).not.toContain('Asociación La Mesa')
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user