diff --git a/src/pages/Claim/Card/ClaimCard.vue b/src/pages/Claim/Card/ClaimCard.vue index df6faf323..2308a5e14 100644 --- a/src/pages/Claim/Card/ClaimCard.vue +++ b/src/pages/Claim/Card/ClaimCard.vue @@ -11,6 +11,20 @@ const state = useState(); + + + + + + + Detalles + + @@ -18,4 +32,4 @@ const state = useState(); - \ No newline at end of file + diff --git a/src/pages/Claim/Card/ClaimPhoto.vue b/src/pages/Claim/Card/ClaimPhoto.vue index 354787878..8d269bbce 100644 --- a/src/pages/Claim/Card/ClaimPhoto.vue +++ b/src/pages/Claim/Card/ClaimPhoto.vue @@ -25,6 +25,10 @@ const claimDms = ref([ }, ]); const client = ref({}); + +const inputFile = ref(); +const files = ref({}); + const claimDmsRef = ref(); const dmsType = ref({}); const config = ref({}); @@ -96,20 +100,11 @@ function setClaimDms(data) { client.value = data.client; } -async function uploadFile() { - const element = document.createElement('input'); - element.setAttribute('type', 'file'); - element.setAttribute('multiple', true); - element.click(); - - element.addEventListener('change', () => { - create(element.files).then(() => claimDmsRef.value.fetch()); - }); -} - -async function create(files) { +async function create() { const formData = new FormData(); - for (let i = 0; i < files.length; i++) formData.append(files[i].name, files[i]); + const inputFiles = files.value; + for (let i = 0; i < inputFiles.length; i++) + formData.append(inputFiles[i].name, inputFiles[i]); const query = `claims/${claimId.value}/uploadFile`; @@ -127,10 +122,7 @@ async function create(files) { }).toUpperCase(), }; - await axios({ - method: 'POST', - url: query, - data: formData, + await axios.post(query, formData, { params: dms, }); @@ -139,11 +131,14 @@ async function create(files) { type: 'positive', icon: 'check', }); + console.log(claimDmsRef); + claimDmsRef.value.fetch(); } function onDrop($data) { dragFile.value = false; - create($data.dataTransfer.files).then(() => claimDmsRef.value.fetch()); + files.value = $data.dataTransfer.files; + create(); } function onDrag() { @@ -190,7 +185,7 @@ function onDrag() {
@@ -245,16 +240,36 @@ function onDrag() {
- - {{ t('globals.add') }} - +
- + diff --git a/test/cypress/integration/claimPhoto.spec.js b/test/cypress/integration/claimPhoto.spec.js index a11f7208b..a6b4286cb 100755 --- a/test/cypress/integration/claimPhoto.spec.js +++ b/test/cypress/integration/claimPhoto.spec.js @@ -3,13 +3,14 @@ describe('ClaimPhoto', () => { beforeEach(() => { const claimId = 1; cy.viewport(1280, 720); - cy.login('developer'); - cy.visit(`/#/claim/${claimId}/photos`); + cy.login('developer').then(() => { + cy.visit(`/#/claim/${claimId}/photos`); + }); }); - xit('should add new file', () => { - cy.get('.q-gutter-x-sm > .q-btn > .q-btn__content > .q-icon').click(); - cy.get('.container').selectFile('test/cypress/fixtures/image.jpg', { + it('should add new file', () => { + cy.get('label > .q-btn').click(); + cy.get('label > .q-btn input').selectFile('test/cypress/fixtures/image.jpg', { force: true, }); cy.get('.q-notification__message').should('have.text', 'Data saved'); diff --git a/test/vitest/__tests__/pages/Claims/ClaimPhoto.spec.js b/test/vitest/__tests__/pages/Claims/ClaimPhoto.spec.js index 4aba572c7..e09d15474 100644 --- a/test/vitest/__tests__/pages/Claims/ClaimPhoto.spec.js +++ b/test/vitest/__tests__/pages/Claims/ClaimPhoto.spec.js @@ -1,9 +1,6 @@ import { vi, describe, expect, it, beforeAll, afterEach } from 'vitest'; -import { ref } from 'vue'; -import { mount } from '@vue/test-utils'; import { createWrapper, axios } from 'app/test/vitest/helper'; import ClaimPhoto from 'pages/Claim/Card/ClaimPhoto.vue'; -import * as FormData from 'form-data'; describe('ClaimPhoto', () => { let vm; @@ -27,6 +24,7 @@ describe('ClaimPhoto', () => { stubs: ['FetchData', 'TeleportSlot'], mocks: { claimDms: [{ dmsFk: 1 }], + claimDmsRef: { hola: 'hola' }, }, }, }).vm; @@ -43,6 +41,9 @@ describe('ClaimPhoto', () => { await vm.deleteDms(0); + expect(axios.post).toHaveBeenCalledWith( + `ClaimDms/${claimMock.claimDms[0].dmsFk}/removeFile` + ); expect(vm.quasar.notify).toHaveBeenCalledWith( expect.objectContaining({ type: 'positive' }) ); @@ -86,15 +87,17 @@ describe('ClaimPhoto', () => { }); }); - describe.skip('create()', () => { + describe('create()', () => { it('should upload file and call quasar notify', async () => { const files = [{ name: 'firstFile' }]; + + vi.mock('claimDmsRef', {}); vi.spyOn(axios, 'post').mockResolvedValue({ data: true }); vi.spyOn(vm.quasar, 'notify'); await vm.create(files); - expect(axios).toHaveBeenCalledWith( + expect(axios.post).toHaveBeenCalledWith( expect.objectContaining({ type: 'positive' }) ); expect(vm.quasar.notify).toHaveBeenCalledWith( diff --git a/test/vitest/helper.js b/test/vitest/helper.js index 795879ebd..c22d9b0c9 100644 --- a/test/vitest/helper.js +++ b/test/vitest/helper.js @@ -30,36 +30,36 @@ vi.mock('vue-router', () => ({ }), })); -// class FormDataMock { -// append() { -// vi.fn(); -// } -// delete() { -// vi.fn(); -// } -// get() { -// vi.fn(); -// } -// getAll() { -// vi.fn(); -// } -// has() { -// vi.fn(); -// } -// set() { -// vi.fn(); -// } -// forEach() { -// vi.fn(); -// } -// } +class FormDataMock { + append() { + vi.fn(); + } + delete() { + vi.fn(); + } + get() { + vi.fn(); + } + getAll() { + vi.fn(); + } + has() { + vi.fn(); + } + set() { + vi.fn(); + } + forEach() { + vi.fn(); + } +} +global.FormData = FormDataMock; export function createWrapper(component, options) { const pinia = createTestingPinia({ createSpy: vi.fn, stubActions: false }); const defaultOptions = { global: { - // FormData: FormDataMock, plugins: [i18n, pinia], }, };