Frontend custom fields coverage
This commit is contained in:
parent
69b7660026
commit
df973922c3
@ -68,6 +68,7 @@ import { DocumentNotesComponent } from '../document-notes/document-notes.compone
|
|||||||
import { DocumentDetailComponent } from './document-detail.component'
|
import { DocumentDetailComponent } from './document-detail.component'
|
||||||
import { ShareLinksDropdownComponent } from '../common/share-links-dropdown/share-links-dropdown.component'
|
import { ShareLinksDropdownComponent } from '../common/share-links-dropdown/share-links-dropdown.component'
|
||||||
import { CustomFieldsDropdownComponent } from '../common/custom-fields-dropdown/custom-fields-dropdown.component'
|
import { CustomFieldsDropdownComponent } from '../common/custom-fields-dropdown/custom-fields-dropdown.component'
|
||||||
|
import { PaperlessCustomFieldDataType } from 'src/app/data/paperless-custom-field'
|
||||||
|
|
||||||
const doc: PaperlessDocument = {
|
const doc: PaperlessDocument = {
|
||||||
id: 3,
|
id: 3,
|
||||||
@ -95,6 +96,19 @@ const doc: PaperlessDocument = {
|
|||||||
user: 2,
|
user: 2,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
custom_fields: [
|
||||||
|
{
|
||||||
|
field: {
|
||||||
|
id: 0,
|
||||||
|
name: 'Field 1',
|
||||||
|
data_type: PaperlessCustomFieldDataType.String,
|
||||||
|
created: new Date(),
|
||||||
|
},
|
||||||
|
document: 3,
|
||||||
|
created: new Date(),
|
||||||
|
value: 'custom foo bar',
|
||||||
|
},
|
||||||
|
],
|
||||||
}
|
}
|
||||||
|
|
||||||
describe('DocumentDetailComponent', () => {
|
describe('DocumentDetailComponent', () => {
|
||||||
@ -799,8 +813,58 @@ describe('DocumentDetailComponent', () => {
|
|||||||
expect(toastSpy).toHaveBeenCalledWith('Error retrieving metadata', error)
|
expect(toastSpy).toHaveBeenCalledWith('Error retrieving metadata', error)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it('should display custom fields', () => {
|
||||||
|
initNormally()
|
||||||
|
expect(fixture.debugElement.nativeElement.textContent).toContain(
|
||||||
|
doc.custom_fields[0].field.name
|
||||||
|
)
|
||||||
|
})
|
||||||
|
|
||||||
|
it('should support add custom field, correctly send via post', () => {
|
||||||
|
const field = {
|
||||||
|
id: 1,
|
||||||
|
name: 'Custom Field 2',
|
||||||
|
data_type: PaperlessCustomFieldDataType.Integer,
|
||||||
|
}
|
||||||
|
initNormally()
|
||||||
|
const initialLength = doc.custom_fields.length
|
||||||
|
expect(component.customFieldFormFields).toHaveLength(initialLength)
|
||||||
|
component.addField(field)
|
||||||
|
fixture.detectChanges()
|
||||||
|
expect(component.document.custom_fields).toHaveLength(initialLength + 1)
|
||||||
|
expect(component.customFieldFormFields).toHaveLength(initialLength + 1)
|
||||||
|
expect(fixture.debugElement.nativeElement.textContent).toContain(field.name)
|
||||||
|
const updateSpy = jest.spyOn(documentService, 'update')
|
||||||
|
component.save(true)
|
||||||
|
expect(updateSpy.mock.lastCall[0].custom_fields).toHaveLength(2)
|
||||||
|
expect(updateSpy.mock.lastCall[0].custom_fields[1]).toEqual({
|
||||||
|
field,
|
||||||
|
value: null,
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
it('should support remove custom field, correctly send via post', () => {
|
||||||
|
initNormally()
|
||||||
|
const initialLength = doc.custom_fields.length
|
||||||
|
expect(component.customFieldFormFields).toHaveLength(initialLength)
|
||||||
|
component.removeField({ title: 'Field 1' } as any)
|
||||||
|
fixture.detectChanges()
|
||||||
|
expect(component.document.custom_fields).toHaveLength(initialLength - 1)
|
||||||
|
expect(component.customFieldFormFields).toHaveLength(initialLength - 1)
|
||||||
|
expect(fixture.debugElement.nativeElement.textContent).not.toContain(
|
||||||
|
'Field 1'
|
||||||
|
)
|
||||||
|
const updateSpy = jest.spyOn(documentService, 'update')
|
||||||
|
component.save(true)
|
||||||
|
expect(updateSpy.mock.lastCall[0].custom_fields).toHaveLength(
|
||||||
|
initialLength - 1
|
||||||
|
)
|
||||||
|
})
|
||||||
|
|
||||||
function initNormally() {
|
function initNormally() {
|
||||||
jest.spyOn(documentService, 'get').mockReturnValueOnce(of(doc))
|
jest
|
||||||
|
.spyOn(documentService, 'get')
|
||||||
|
.mockReturnValueOnce(of(Object.assign({}, doc)))
|
||||||
jest.spyOn(openDocumentsService, 'getOpenDocument').mockReturnValue(null)
|
jest.spyOn(openDocumentsService, 'getOpenDocument').mockReturnValue(null)
|
||||||
jest
|
jest
|
||||||
.spyOn(openDocumentsService, 'openDocument')
|
.spyOn(openDocumentsService, 'openDocument')
|
||||||
|
@ -869,7 +869,7 @@ export class DocumentDetailComponent
|
|||||||
const customFieldIndex = this.document.custom_fields.findIndex(
|
const customFieldIndex = this.document.custom_fields.findIndex(
|
||||||
(f) => f.field.name === input.title
|
(f) => f.field.name === input.title
|
||||||
)
|
)
|
||||||
if (customFieldIndex) {
|
if (customFieldIndex > -1) {
|
||||||
this.document.custom_fields.splice(customFieldIndex, 1)
|
this.document.custom_fields.splice(customFieldIndex, 1)
|
||||||
this.updateFormForCustomFields(true)
|
this.updateFormForCustomFields(true)
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user