Fix: doc detail component fixes (#5373)

This commit is contained in:
shamoon
2024-01-13 13:40:22 -08:00
committed by GitHub
parent 53e04e66cf
commit 98c5cf89ef
5 changed files with 468 additions and 412 deletions

View File

@@ -255,9 +255,6 @@ describe('DocumentDetailComponent', () => {
router = TestBed.inject(Router)
activatedRoute = TestBed.inject(ActivatedRoute)
jest
.spyOn(activatedRoute, 'paramMap', 'get')
.mockReturnValue(of(convertToParamMap({ id: 3 })))
openDocumentsService = TestBed.inject(OpenDocumentsService)
documentService = TestBed.inject(DocumentService)
modalService = TestBed.inject(NgbModal)
@@ -295,6 +292,17 @@ describe('DocumentDetailComponent', () => {
expect(navigateSpy).toHaveBeenCalledWith(['documents', 3, 'notes'])
})
it('should forward id without section to details', () => {
const navigateSpy = jest.spyOn(router, 'navigate')
jest
.spyOn(activatedRoute, 'paramMap', 'get')
.mockReturnValue(of(convertToParamMap({ id: 3 })))
fixture.detectChanges()
expect(navigateSpy).toHaveBeenCalledWith(['documents', 3, 'details'], {
replaceUrl: true,
})
})
it('should update title after debounce', fakeAsync(() => {
initNormally()
component.titleInput.value = 'Foo Bar'
@@ -320,6 +328,7 @@ describe('DocumentDetailComponent', () => {
})
it('should load already-opened document via param', () => {
initNormally()
jest.spyOn(documentService, 'get').mockReturnValueOnce(of(doc))
jest.spyOn(openDocumentsService, 'getOpenDocument').mockReturnValue(doc)
jest.spyOn(customFieldsService, 'listAll').mockReturnValue(
@@ -400,8 +409,11 @@ describe('DocumentDetailComponent', () => {
})
it('should 404 on invalid id', () => {
jest.spyOn(documentService, 'get').mockReturnValueOnce(of(null))
const navigateSpy = jest.spyOn(router, 'navigate')
jest
.spyOn(activatedRoute, 'paramMap', 'get')
.mockReturnValue(of(convertToParamMap({ id: 999, section: 'details' })))
jest.spyOn(documentService, 'get').mockReturnValueOnce(of(null))
fixture.detectChanges()
expect(navigateSpy).toHaveBeenCalledWith(['404'], { replaceUrl: true })
})
@@ -936,11 +948,33 @@ describe('DocumentDetailComponent', () => {
expect(refreshSpy).toHaveBeenCalled()
})
it('should get suggestions', () => {
const suggestionsSpy = jest.spyOn(documentService, 'getSuggestions')
suggestionsSpy.mockReturnValue(of({ tags: [1, 2] }))
initNormally()
expect(suggestionsSpy).toHaveBeenCalled()
expect(component.suggestions).toEqual({ tags: [1, 2] })
})
it('should show error if needed for get suggestions', () => {
const suggestionsSpy = jest.spyOn(documentService, 'getSuggestions')
const errorSpy = jest.spyOn(toastService, 'showError')
suggestionsSpy.mockImplementationOnce(() =>
throwError(() => new Error('failed to get suggestions'))
)
initNormally()
expect(suggestionsSpy).toHaveBeenCalled()
expect(errorSpy).toHaveBeenCalled()
})
it('should warn when open document does not match doc retrieved from backend on init', () => {
const modalSpy = jest.spyOn(modalService, 'open')
const openDoc = Object.assign({}, doc)
// simulate a document being modified elsewhere and db updated
doc.modified = new Date()
jest
.spyOn(activatedRoute, 'paramMap', 'get')
.mockReturnValue(of(convertToParamMap({ id: 3, section: 'details' })))
jest.spyOn(documentService, 'get').mockReturnValueOnce(of(doc))
jest.spyOn(openDocumentsService, 'getOpenDocument').mockReturnValue(openDoc)
jest.spyOn(customFieldsService, 'listAll').mockReturnValue(
@@ -951,12 +985,13 @@ describe('DocumentDetailComponent', () => {
})
)
fixture.detectChanges() // calls ngOnInit
expect(modalSpy).toHaveBeenCalledWith(ConfirmDialogComponent, {
backdrop: 'static',
})
expect(modalSpy).toHaveBeenCalledWith(ConfirmDialogComponent)
})
function initNormally() {
jest
.spyOn(activatedRoute, 'paramMap', 'get')
.mockReturnValue(of(convertToParamMap({ id: 3, section: 'details' })))
jest
.spyOn(documentService, 'get')
.mockReturnValueOnce(of(Object.assign({}, doc)))