Skip to content

Commit

Permalink
feat(mespapiers): Add default value country metadata to specific papers
Browse files Browse the repository at this point in the history
Add a value to the `country` metadata based on the
document's qualification label, unless already filled in.

Cases such as foreign driver's license keep what has been
defined by the user.
  • Loading branch information
Merkur39 committed May 17, 2024
1 parent 079025a commit cf3f820
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 6 deletions.
34 changes: 29 additions & 5 deletions packages/cozy-mespapiers-lib/src/helpers/createPdfAndSave.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,22 @@ export const addContactReferenceToFile = async ({
await fileCollection.addReferencedBy(fileCreated, references)
}

/**
* Add the value of the "country" metadata according to the qualification
*
* @param {import('cozy-client/types/types').QualificationAttributes} qualification
* @returns {{ country: string }}
*/
export const addCountryValueByQualification = qualification => {
const qualificationsByCode = { FR: ['national_id_card', 'driver_license'] }

return Object.entries(qualificationsByCode).reduce((acc, [key, val]) => {
if (val.includes(qualification.label)) {
return { ...acc, country: key }
}
return acc
}, {})
}
/**
* Convert image & pdf file to pdf & save it
*
Expand All @@ -64,7 +80,15 @@ export const createPdfAndSave = async ({
const { data, metadata, contacts } = { ...formData }
const fileCollection = client.collection(FILES_DOCTYPE)
const { featureDate, label, filenameModel } = currentDefinition
const date = metadata[featureDate] && f(metadata[featureDate], 'YYYY.MM.DD')

// If present, we wish to keep the value in the metadata as a priority (e.g. foreign driver's license).
const updatedMetadata = {
...addCountryValueByQualification(qualification),
...metadata
}
const date =
updatedMetadata[featureDate] &&
f(updatedMetadata[featureDate], 'YYYY.MM.DD')

// If all files are to be considered as one.
const isMultiPage = data.some(({ fileMetadata }) => fileMetadata.multipage)
Expand All @@ -79,7 +103,7 @@ export const createPdfAndSave = async ({

const paperName = buildFilename({
filenameModel,
metadata,
metadata: updatedMetadata,
qualification: {
label,
name: scannerT(`items.${label}`)
Expand All @@ -98,9 +122,9 @@ export const createPdfAndSave = async ({
...qualification
},
...sanitizeFileMetadata(fileMetadata, isMultiPage),
...metadata,
datetime: metadata[featureDate]
? metadata[featureDate]
...updatedMetadata,
datetime: updatedMetadata[featureDate]
? updatedMetadata[featureDate]
: pdfDoc.getCreationDate(),
datetimeLabel: featureDate || 'datetime'
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
import * as addFileToPdf from 'cozy-ui/transpiled/react/ActionsMenu/Actions/helpers'

import * as buildFilename from './buildFilename'
import { createPdfAndSave } from './createPdfAndSave'
import {
addCountryValueByQualification,
createPdfAndSave
} from './createPdfAndSave'

jest.mock('cozy-client', () => ({
...jest.requireActual('cozy-client'),
Expand Down Expand Up @@ -71,3 +74,17 @@ describe('createAndSavePdf', () => {
expect(resultJPG).toEqual(expectedJPG)
})
})

describe('addCountryValueByQualification', () => {
it('should return object with country key', () => {
const qualification = { label: 'national_id_card' }
const result = addCountryValueByQualification(qualification)
expect(result).toEqual({ country: 'FR' })
})

it('should return empty object', () => {
const qualification = { label: 'other_revenue' }
const result = addCountryValueByQualification(qualification)
expect(result).toEqual({})
})
})

0 comments on commit cf3f820

Please sign in to comment.