diff --git a/package-lock.json b/package-lock.json index bd51c8acb..3d2bfdf13 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "business-edit-ui", - "version": "3.7.0", + "version": "3.7.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "business-edit-ui", - "version": "3.7.0", + "version": "3.7.1", "dependencies": { "@babel/compat-data": "^7.11.0", "@bcrs-shared-components/action-chip": "1.0.28", diff --git a/package.json b/package.json index 3e5ceb0da..f3f331839 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "business-edit-ui", - "version": "3.7.0", + "version": "3.7.1", "private": true, "appName": "Edit UI", "sbcName": "SBC Common Components", diff --git a/src/components/Alteration/Articles/Articles.vue b/src/components/Alteration/Articles/Articles.vue index 52a221a01..fd1a74a21 100644 --- a/src/components/Alteration/Articles/Articles.vue +++ b/src/components/Alteration/Articles/Articles.vue @@ -7,7 +7,7 @@
- CHANGED + {{ editedLabel }} diff --git a/src/components/Alteration/Articles/ResolutionDates.vue b/src/components/Alteration/Articles/ResolutionDates.vue index b4d16027b..301cc2321 100644 --- a/src/components/Alteration/Articles/ResolutionDates.vue +++ b/src/components/Alteration/Articles/ResolutionDates.vue @@ -6,6 +6,15 @@ + + Corrected + @@ -25,20 +34,20 @@ - mdi-plus - Add + {{ addBtnIcon }} + {{ addBtnLabel }} mdi-close Cancel @@ -52,17 +61,17 @@
  • {{date}} - mdi-delete - Remove + {{ removeBtnIcon }} + {{ removeBtnLabel }}
@@ -140,10 +149,10 @@ export default class ResolutionDates extends Mixins(CommonMixin) { // Global getters @Getter getBusinessFoundingDate!: string @Getter getCurrentDate!: string - @Getter hasShareStructureChanged!: boolean - @Getter getHasOriginalRightsOrRestrictions!: boolean + @Getter haveNewResolutionDates!: boolean @Getter getIsResolutionDatesValid!: boolean @Getter isSummaryMode!: boolean + @Getter isBenCorrectionFiling!: boolean // Global setter @Action setValidComponent!: ActionBindingIF @@ -160,6 +169,22 @@ export default class ResolutionDates extends Mixins(CommonMixin) { return (this.previousDates?.length > 0) } + get addBtnIcon (): string { + return this.isBenCorrectionFiling ? 'mdi-pencil' : 'mdi-plus' + } + + get addBtnLabel (): string { + return this.isBenCorrectionFiling ? 'Correct' : 'Add' + } + + get removeBtnIcon (): string { + return this.isBenCorrectionFiling ? 'mdi-undo' : 'mdi-delete' + } + + get removeBtnLabel (): string { + return this.isBenCorrectionFiling ? 'Undo' : 'Remove' + } + /** Called to add a new date. */ onDateEmitted (date: string): void { if (date) { diff --git a/src/interfaces/store-interfaces/state-interfaces/correction-information-interface.ts b/src/interfaces/store-interfaces/state-interfaces/correction-information-interface.ts index afeda2db0..4349bf233 100644 --- a/src/interfaces/store-interfaces/state-interfaces/correction-information-interface.ts +++ b/src/interfaces/store-interfaces/state-interfaces/correction-information-interface.ts @@ -39,4 +39,5 @@ export interface CorrectionInformationIF { resolutionDates?: string[] } startDate?: string // YYYY-MM-DD + provisionsRemoved?: boolean } diff --git a/src/mixins/filing-template-mixin.ts b/src/mixins/filing-template-mixin.ts index 54b145491..7ed4f8e28 100644 --- a/src/mixins/filing-template-mixin.ts +++ b/src/mixins/filing-template-mixin.ts @@ -161,8 +161,10 @@ export default class FilingTemplateMixin extends Mixins(DateMixin, EnumMixin) { if (this.isBenCorrectionFiling) { filing.correction.nameTranslations = isDraft ? this.getNameTranslations : this.prepareNameTranslations() filing.correction.shareStructure = { - shareClasses: isDraft ? this.getShareClasses : this.prepareShareClasses() + shareClasses: isDraft ? this.getShareClasses : this.prepareShareClasses(), + resolutionDates: this.getNewResolutionDates } + filing.correction.provisionsRemoved = this.areProvisionsRemoved } // add in data specific to firm corrections @@ -592,6 +594,8 @@ export default class FilingTemplateMixin extends Mixins(DateMixin, EnumMixin) { this.setNewResolutionDates(cloneDeep( filing.correction.shareStructure?.resolutionDates || [] )) + // store Provisions Removed + this.setProvisionsRemoved(filing.correction.provisionsRemoved || false) } // store Certify State diff --git a/src/store/getters/state-getters.ts b/src/store/getters/state-getters.ts index 44b6f955a..ccf02e8ba 100644 --- a/src/store/getters/state-getters.ts +++ b/src/store/getters/state-getters.ts @@ -379,7 +379,9 @@ export const hasCorrectionDataChanged = (state: StateIF): boolean => { haveNameTranslationsChanged(state) || haveOfficeAddressesChanged(state) || havePeopleAndRolesChanged(state) || - hasShareStructureChanged(state) + hasShareStructureChanged(state) || + areProvisionsRemoved(state) || + haveNewResolutionDates(state) ) } diff --git a/src/views/Correction/BenCorrection.vue b/src/views/Correction/BenCorrection.vue index e37871bfa..c0460fcb3 100644 --- a/src/views/Correction/BenCorrection.vue +++ b/src/views/Correction/BenCorrection.vue @@ -25,6 +25,8 @@ + + import { Component, Emit, Mixins, Prop, Watch } from 'vue-property-decorator' import { Action } from 'vuex-class' +import { Articles } from '@/components/Alteration/' import { CertifySection, Detail, PeopleAndRoles, ShareStructures, StaffPayment, YourCompany } from '@/components/common/' import { CommonMixin, DateMixin, FeeMixin, FilingTemplateMixin } from '@/mixins/' @@ -62,7 +65,8 @@ import { BenefitCompanyStatementResource } from '@/resources/Correction/' PeopleAndRoles, ShareStructures, StaffPayment, - YourCompany + YourCompany, + Articles } }) export default class BenCorrection extends Mixins(CommonMixin, DateMixin, FeeMixin, FilingTemplateMixin) { diff --git a/tests/unit/Articles.spec.ts b/tests/unit/Articles.spec.ts index 9e4e8a9be..99081dbc4 100644 --- a/tests/unit/Articles.spec.ts +++ b/tests/unit/Articles.spec.ts @@ -25,6 +25,11 @@ const changeCompanyProvisionsButton = '#change-company-provisions' const undoCompanyProvisions = '#undo-company-provisions' const companyProvisionsCheckbox = '#cp-checkbox' const companyProvisionDoneButton = '#company-provisions-done' +const resolutionDatesSection = '#resolution-dates' +const resolutionDatesAddButtonn = '#add-resolution-date' +const resolutionDatesCloseButton = '#close-resolution-date' +const resolutionDatesRemoveButton = '#remove-resolution-date' +const resolutionDatesTextsList = '.resolution-date-list' describe('Articles component', () => { it('displays the correct sections', () => { @@ -38,6 +43,7 @@ describe('Articles component', () => { expect(wrapper.find(articlesHeaderIcon).exists()).toBe(true) expect(wrapper.find(articlesHeaderLabel).text()).toBe('Articles') expect(wrapper.find(companyProvisionsSection).exists()).toBe(true) + expect(wrapper.find(resolutionDatesSection).exists()).toBe(true) wrapper.destroy() }) @@ -150,4 +156,46 @@ describe('Articles component', () => { wrapper.destroy() }) + + it('shows only Add button when list for the initial state', () => { + const router = mockRouter.mock() + router.push({ name: alterationRoute }) + store.state.stateModel.shareStructureStep.resolutionDates = [] + const wrapper = mount(Articles, { router, store, vuetify }) + + expect(wrapper.find(articlesTitle).exists()).toBe(true) + expect(wrapper.find(resolutionDatesAddButtonn).exists()).toBe(true) + + wrapper.destroy() + }) + + it('shows only Close button when Add button is clicked', async () => { + const router = mockRouter.mock() + router.push({ name: alterationRoute }) + store.state.stateModel.shareStructureStep.resolutionDates = [] + const wrapper = mount(Articles, { router, store, vuetify }) + + expect(wrapper.find(articlesTitle).exists()).toBe(true) + const addBtn = wrapper.find(resolutionDatesAddButtonn) + await addBtn.trigger('click') + + expect(wrapper.find(resolutionDatesCloseButton).exists()).toBe(true) + + wrapper.destroy() + }) + + it('shows only Remove button when the list is not empty', () => { + const router = mockRouter.mock() + router.push({ name: alterationRoute }) + store.state.stateModel.shareStructureStep.resolutionDates = ['2022-08-31'] + const wrapper = mount(Articles, { router, store, vuetify }) + + expect(wrapper.find(articlesTitle).exists()).toBe(true) + expect(wrapper.find(resolutionDatesRemoveButton).exists()).toBe(true) + const dates = wrapper.findAll(resolutionDatesTextsList) + expect(dates.exists()).toBe(true) + expect(dates.length).toBe(1) + expect(dates.at(0).text()).toContain('2022-08-31') + wrapper.destroy() + }) }) diff --git a/tests/unit/BenCorrection.spec.ts b/tests/unit/BenCorrection.spec.ts index 83de71d3c..c84ebd133 100644 --- a/tests/unit/BenCorrection.spec.ts +++ b/tests/unit/BenCorrection.spec.ts @@ -6,6 +6,9 @@ import sinon from 'sinon' import { getVuexStore } from '@/store/' import { shallowMount, createLocalVue } from '@vue/test-utils' import { axios } from '@/utils/' +import { Articles } from '@/components/Alteration/' +import { CertifySection, Detail, PeopleAndRoles, ShareStructures, StaffPayment, YourCompany } + from '@/components/common/' import BenCorrection from '@/views/Correction/BenCorrection.vue' import mockRouter from './MockRouter' @@ -156,6 +159,16 @@ describe('Benefit Company Correction component', () => { expect(wrapper.findComponent(BenCorrection).exists()).toBe(true) }) + it('loads each component', async () => { + expect(wrapper.findComponent(YourCompany).exists()).toBe(true) + expect(wrapper.findComponent(PeopleAndRoles).exists()).toBe(true) + expect(wrapper.findComponent(ShareStructures).exists()).toBe(true) + expect(wrapper.findComponent(Articles).exists()).toBe(true) + expect(wrapper.findComponent(Detail).exists()).toBe(true) + expect(wrapper.findComponent(CertifySection).exists()).toBe(true) + expect(wrapper.findComponent(StaffPayment).exists()).toBe(true) + }) + // FUTURE xit('loads the entity snapshot into the store', async () => { await wrapper.setProps({ appReady: true }) diff --git a/tests/unit/CompanyProvisions.spec.ts b/tests/unit/CompanyProvisions.spec.ts index eb0f549c2..b6504c703 100644 --- a/tests/unit/CompanyProvisions.spec.ts +++ b/tests/unit/CompanyProvisions.spec.ts @@ -175,4 +175,26 @@ describe('company provisions', () => { wrapper.destroy() }) + + it('displays the Correct button for correction filings', () => { + store.state.stateModel.tombstone.entityType = 'BEN' + store.state.stateModel.tombstone.filingType = 'correction' + + const router = mockRouter.mock() + router.push({ name: alterationRouterName }) + const wrapper = mount(CompanyProvisions, + { + router, + vuetify, + store, + propsData: { provisionsRemoved: false } + }) + + const addBtn = wrapper.find('#change-company-provisions') + expect(addBtn.exists()).toBe(true) + expect(addBtn.text()).toBe('Correct') + expect(addBtn.find('.v-icon.mdi-pencil').exists()).toBe(true) + + wrapper.destroy() + }) }) diff --git a/tests/unit/ResolutionDates.spec.ts b/tests/unit/ResolutionDates.spec.ts index 99760774b..78a2a6740 100644 --- a/tests/unit/ResolutionDates.spec.ts +++ b/tests/unit/ResolutionDates.spec.ts @@ -300,6 +300,38 @@ describe('Resolution Dates component - edit mode', () => { wrapper.destroy() }) + + it('displays the Correct button for correction filings', () => { + store.state.stateModel.tombstone.entityType = 'BEN' + store.state.stateModel.tombstone.filingType = 'correction' + store.state.stateModel.shareStructureStep.shareClasses = shareClasses + store.state.stateModel.shareStructureStep.resolutionDates = addedDates + + const wrapper = wrapperFactory() + + const addBtn = wrapper.find('#add-resolution-date') + expect(addBtn.exists()).toBe(true) + expect(addBtn.text()).toBe('Correct') + expect(addBtn.find('.v-icon.mdi-pencil').exists()).toBe(true) + + wrapper.destroy() + }) + + it('displays the Undo button for correction filings', async () => { + store.state.stateModel.tombstone.entityType = 'BEN' + store.state.stateModel.tombstone.filingType = 'correction' + store.state.stateModel.shareStructureStep.shareClasses = shareClasses + store.state.stateModel.shareStructureStep.resolutionDates = addedDates + + const wrapper = wrapperFactory({ addedDates: ['2021-03-17'] }) + + const removeBtn = wrapper.find('#remove-resolution-date') + expect(removeBtn.exists()).toBe(true) + expect(removeBtn.text()).toBe('Undo') + expect(removeBtn.find('.v-icon.mdi-undo').exists()).toBe(true) + + wrapper.destroy() + }) }) describe('Resolution Dates component - review mode', () => {