From 80dacf519c6c6cb8c7c2f9798104f9e83514a10f Mon Sep 17 00:00:00 2001 From: Artur Fedorov <afedorov@gitlab.com> Date: Thu, 6 Mar 2025 11:49:43 +0100 Subject: [PATCH] Add check for nullability for compliance framework Changelog: fixed EE: true --- .../scope/compliance_framework_dropdown.vue | 8 ++++---- .../compliance_framework_dropdown_spec.js | 19 +++++++++++++++++++ 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/ee/app/assets/javascripts/security_orchestration/components/policy_editor/scope/compliance_framework_dropdown.vue b/ee/app/assets/javascripts/security_orchestration/components/policy_editor/scope/compliance_framework_dropdown.vue index c9f87005cb48c..f232928f537d2 100644 --- a/ee/app/assets/javascripts/security_orchestration/components/policy_editor/scope/compliance_framework_dropdown.vue +++ b/ee/app/assets/javascripts/security_orchestration/components/policy_editor/scope/compliance_framework_dropdown.vue @@ -43,13 +43,13 @@ export default { }; }, update(data) { - return this.getUniqueFrameworks(data.namespace?.complianceFrameworks.nodes); + return this.getUniqueFrameworks(data.namespace?.complianceFrameworks?.nodes); }, result({ data }) { this.pageInfo = data?.namespace?.complianceFrameworks?.pageInfo || {}; if (this.selectedButNotLoadedComplianceIds.length > 0) { - this.fetchComplianceFramoworksByIds(); + this.fetchComplianceFrameworksByIds(); } }, error() { @@ -179,7 +179,7 @@ export default { this.debouncedSearch.cancel(); }, methods: { - async fetchComplianceFramoworksByIds() { + async fetchComplianceFrameworksByIds() { try { const { data } = await this.$apollo.query({ query: getComplianceFrameworkQuery, @@ -190,7 +190,7 @@ export default { }); this.complianceFrameworks = this.getUniqueFrameworks( - data?.namespace?.complianceFrameworks.nodes, + data?.namespace?.complianceFrameworks?.nodes, ); } catch { this.emitError(); diff --git a/ee/spec/frontend/security_orchestration/components/policy_editor/scope/compliance_framework_dropdown_spec.js b/ee/spec/frontend/security_orchestration/components/policy_editor/scope/compliance_framework_dropdown_spec.js index 6dbcfd18328d3..fee87d2529193 100644 --- a/ee/spec/frontend/security_orchestration/components/policy_editor/scope/compliance_framework_dropdown_spec.js +++ b/ee/spec/frontend/security_orchestration/components/policy_editor/scope/compliance_framework_dropdown_spec.js @@ -360,6 +360,25 @@ describe('ComplianceFrameworkDropdown', () => { }); }); + describe('when query response has no frameworks', () => { + it('emits error when query does not return frameworks', async () => { + createComponent({ + handlers: { + complianceFrameworks: jest.fn().mockResolvedValue({ + data: { + namespace: { + id: 1, + name: 'name', + }, + }, + }), + }, + }); + await waitForPromises(); + expect(wrapper.emitted('framework-query-error')).toHaveLength(1); + }); + }); + describe('error state', () => { it.each` showError | variant | category | groupErrorAttribute -- GitLab