From 28c5618cae7d405354257e1e5b35b54858ee8c6d Mon Sep 17 00:00:00 2001 From: CameronEYDS <53542131+cameron-eyds@users.noreply.github.com> Date: Tue, 21 May 2024 15:24:28 -0700 Subject: [PATCH] SAN Notice/Orders: Edit/Remove (#1886) * AddRemove Notice/Orders * Version bump and test fix * styling fix * Unit test update * hide show label swap --- .../AddEditCourtOrder.vue | 13 +- .../CourtCommissionOrderReview.vue | 150 ++++----- .../securities-act-notices/NoticePanel.vue | 299 ++++++++++++++---- .../SecuritiesActNotices.vue | 2 +- .../SecuritiesActNoticesPanels.vue | 17 +- .../dialogOptions/confirmationDialogs.ts | 7 + .../unit/SecuritiesActNoticesPanels.spec.ts | 31 ++ 7 files changed, 373 insertions(+), 146 deletions(-) diff --git a/ppr-ui/src/components/registration/securities-act-notices/AddEditCourtOrder.vue b/ppr-ui/src/components/registration/securities-act-notices/AddEditCourtOrder.vue index acf57c0d4..144ad7904 100644 --- a/ppr-ui/src/components/registration/securities-act-notices/AddEditCourtOrder.vue +++ b/ppr-ui/src/components/registration/securities-act-notices/AddEditCourtOrder.vue @@ -166,7 +166,7 @@ const props = withDefaults(defineProps<{ /** Local Properties **/ const isValidCourtOrderForm = ref(false) const validateAddEditCourtOrder = ref(false) -const courtOrderData: Ref = ref(props.courtOrderProp || { +const courtOrderData: Ref = ref({ courtOrder: true, courtName: '', courtRegistry: '', @@ -175,7 +175,7 @@ const courtOrderData: Ref = ref(props.courtOrderProp || { effectOfOrder: '' }) const addEditLabel = ref(computed(() => props.isEditing ? 'Edit' : 'Add')) -const isFormValid = ref(computed(() => isValidCourtOrderForm.value && !!courtOrderData.value.orderDate)) +const isFormValid = computed(() => isValidCourtOrderForm.value && !!courtOrderData.value.orderDate) /** Form Rules **/ const nameOrRegistryRules = customRules( @@ -198,10 +198,13 @@ const submitAddEditCourtOrder = async () => { emits('done', courtOrderData.value) } } - -watch(() => isFormValid.value, () => { - emits('isValid', !validateAddEditCourtOrder.value || isFormValid.value) +watch(() => validateAddEditCourtOrder.value, (val: boolean) => { + if (val) emits('isValid', isFormValid.value) }) +watch(() => props.isEditing, (val: boolean) => { + if (val) courtOrderData.value = { ...props.courtOrderProp } +}, { immediate: true }) + diff --git a/ppr-ui/src/resources/dialogOptions/confirmationDialogs.ts b/ppr-ui/src/resources/dialogOptions/confirmationDialogs.ts index 9f305a495..786838fc2 100644 --- a/ppr-ui/src/resources/dialogOptions/confirmationDialogs.ts +++ b/ppr-ui/src/resources/dialogOptions/confirmationDialogs.ts @@ -117,3 +117,10 @@ export const outOfDateOwnersDialogOptions = (mhrIdentifier: string): DialogOptio of MHR Number ${mhrIdentifier} and redo your changes.` } } + +export const confirmRemoveNoticeDialog: DialogOptionsIF = { + acceptText: 'Remove Notice', + cancelText: 'Cancel', + title: 'Remove Notice and Orders Attached', + text: `Removing this notice will also remove all orders attached.` +} diff --git a/ppr-ui/tests/unit/SecuritiesActNoticesPanels.spec.ts b/ppr-ui/tests/unit/SecuritiesActNoticesPanels.spec.ts index c73271754..e5431c833 100644 --- a/ppr-ui/tests/unit/SecuritiesActNoticesPanels.spec.ts +++ b/ppr-ui/tests/unit/SecuritiesActNoticesPanels.spec.ts @@ -5,9 +5,17 @@ import SecuritiesActNoticesPanels from '@/components/registration/securities-act import { beforeEach } from 'vitest' import { createComponent } from './utils' import { SaNoticeTypes } from '@/enums' +import flushPromises from 'flush-promises' +import { AddEditSaNoticeIF } from '@/interfaces' const store = useStore() +const mockNotice: AddEditSaNoticeIF = { + securitiesActNoticeType: SaNoticeTypes.NOTICE_OF_LIEN, + effectiveDate: '2024-01-01', + securitiesActOrders: [] +} + describe('SecuritiesActNoticesPanel.vue', () => { let wrapper beforeEach(async () => { @@ -67,4 +75,27 @@ describe('SecuritiesActNoticesPanel.vue', () => { // Check if the second panel is active and the first active panel was closed expect(wrapper.vm.activePanels).toEqual([1]) }) + + it('renders a notice panel content correctly', async () => { + await store.setSecuritiesActNotices([mockNotice]) + await nextTick() + + expect(wrapper.find('.notice-type-text').text()).toBe('Notice of Lien') + expect(wrapper.find('.security-notice-header-action').exists()).toBe(true) + expect(wrapper.find('.security-notice-btn').exists()).toBe(true) + expect(wrapper.find('#security-notice-menu-btn').exists()).toBe(true) + }) + + it('removes a notice correctly', async () => { + await store.setSecuritiesActNotices([mockNotice]) + await nextTick() + expect(wrapper.find('.notice-type-text').text()).toBe('Notice of Lien') + + await wrapper.findComponent(NoticePanel).vm.removeNotice(true) + await nextTick() + await flushPromises() + + expect(wrapper.find('.notice-type-text').exists()).toBe(false) + expect(wrapper.find('.effective-date-text').exists()).toBe(false) + }) })