diff --git a/app/javascript/v3/helpers/OnboardingHelper.js b/app/javascript/v3/helpers/OnboardingHelper.js index 6192cbea1..1c1614c27 100644 --- a/app/javascript/v3/helpers/OnboardingHelper.js +++ b/app/javascript/v3/helpers/OnboardingHelper.js @@ -4,3 +4,37 @@ export const findMatchingOption = (value, options, defaultValue) => { ); return match ? match.value || match : defaultValue; }; + +export const findIndustryOptions = subIndustry => { + const industryMap = { + 'Information Technology': [ + 'Semiconductors & Semiconductor Equipment', + 'Internet Software & Services', + 'IT Services', + 'Software', + 'Communications Equipment', + 'Electronic Equipment, Instruments & Components', + 'Technology Hardware, Storage & Peripherals', + ], + Financials: [ + 'Banks', + 'Diversified Financial Services', + 'Capital Markets', + 'Insurance', + ], + 'Health & Medicine': [ + 'Health Care Equipment & Supplies', + 'Health Care Providers & Services', + 'Biotechnology', + 'Life Sciences Tools & Services', + 'Pharmaceuticals', + ], + Education: ['Education Services'], + }; + + const industry = Object.entries(industryMap).find(([, value]) => + value.includes(subIndustry) + ); + + return industry ? industry[0] : 'Other'; +}; diff --git a/app/javascript/v3/helpers/specs/OnboardingHelper.spec.js b/app/javascript/v3/helpers/specs/OnboardingHelper.spec.js index 7467d3227..c9c16bf63 100644 --- a/app/javascript/v3/helpers/specs/OnboardingHelper.spec.js +++ b/app/javascript/v3/helpers/specs/OnboardingHelper.spec.js @@ -1,4 +1,4 @@ -import { findMatchingOption } from '../OnboardingHelper'; +import { findMatchingOption, findIndustryOptions } from '../OnboardingHelper'; describe('findMatchingOption', () => { const options = [{ value: 'option1' }, { value: 'option2' }]; @@ -13,3 +13,28 @@ describe('findMatchingOption', () => { ); }); }); + +describe('findIndustryOptions', () => { + it('should return the correct industry for a given sub-industry', () => { + expect( + findIndustryOptions('Semiconductors & Semiconductor Equipment') + ).toBe('Information Technology'); + expect(findIndustryOptions('Banks')).toBe('Financials'); + expect(findIndustryOptions('Health Care Equipment & Supplies')).toBe( + 'Health & Medicine' + ); + expect(findIndustryOptions('Education Services')).toBe('Education'); + }); + + it('should return "Other" for a sub-industry not in the map', () => { + expect(findIndustryOptions('Non-existing Sub-industry')).toBe('Other'); + }); + + it('should return "Other" for an empty string', () => { + expect(findIndustryOptions('')).toBe('Other'); + }); + + it('should return "Other" for a null value', () => { + expect(findIndustryOptions(null)).toBe('Other'); + }); +}); diff --git a/app/javascript/v3/views/onboarding/SetupCompany.vue b/app/javascript/v3/views/onboarding/SetupCompany.vue index 1d940eb90..b04476ef7 100644 --- a/app/javascript/v3/views/onboarding/SetupCompany.vue +++ b/app/javascript/v3/views/onboarding/SetupCompany.vue @@ -94,7 +94,10 @@ import { ONBOARDING_STEP_NAMES } from 'dashboard/constants/globals'; import SubmitButton from 'dashboard/components/buttons/FormSubmitButton.vue'; import { timeZoneOptions } from 'dashboard/routes/dashboard/settings/inbox/helpers/businessHour.js'; import { getBrowserTimezone, getBrowserLocale } from 'v3/helpers/BrowserHelper'; -import { findMatchingOption } from 'v3/helpers/OnboardingHelper'; +import { + findMatchingOption, + findIndustryOptions, +} from 'v3/helpers/OnboardingHelper'; import alertMixin from 'shared/mixins/alertMixin'; import configMixin from 'shared/mixins/configMixin'; export default { @@ -120,11 +123,12 @@ export default { { value: '1001+', label: 'Over 1000' }, ], industryOptions: [ - { value: 'information_technology', label: 'Information technology' }, - { value: 'finance', label: 'Finance' }, - { value: 'health_medicine', label: 'Health & Medicine' }, - { value: 'education', label: 'Education' }, - { value: 'other', label: 'Other' }, + { value: 'Information Technology', label: 'Information technology' }, + { value: 'Finance', label: 'Finance' }, + { value: 'Health & Medicine', label: 'Health & Medicine' }, + { value: 'Education', label: 'Education' }, + { value: 'E Commerce', label: 'E Commerce' }, + { value: 'Other', label: 'Other' }, ], }; }, @@ -227,11 +231,7 @@ export default { this.accountAttributes; this.companyName = companyName; - this.industry = findMatchingOption( - industry, - this.industryOptions, - 'other' - ); + this.industry = findIndustryOptions(industry); this.companySize = companySize; this.timezone = findMatchingOption( timezone,