diff --git a/app/javascript/dashboard/routes/dashboard/settings/inbox/components/AccountHealth.vue b/app/javascript/dashboard/routes/dashboard/settings/inbox/components/AccountHealth.vue index 2eddb7f6b..a6ef33e5f 100644 --- a/app/javascript/dashboard/routes/dashboard/settings/inbox/components/AccountHealth.vue +++ b/app/javascript/dashboard/routes/dashboard/settings/inbox/components/AccountHealth.vue @@ -2,6 +2,7 @@ import { computed } from 'vue'; import { useI18n } from 'vue-i18n'; import { copyTextToClipboard } from 'shared/helpers/clipboard'; +import { useLocale } from 'shared/composables/useLocale'; import ButtonV4 from 'next/button/Button.vue'; import Icon from 'dashboard/components-next/icon/Icon.vue'; @@ -28,7 +29,8 @@ const props = defineProps({ const emit = defineEmits(['registerWebhook', 'goToConfiguration']); -const { t, te, locale } = useI18n(); +const { t, te } = useI18n(); +const { resolvedLocale } = useLocale(); const QUALITY_COLORS = { GREEN: 'text-n-teal-11', @@ -77,7 +79,7 @@ const formatDateTime = value => { const date = new Date(value); if (Number.isNaN(date.getTime())) return value; - return new Intl.DateTimeFormat(locale.value, { + return new Intl.DateTimeFormat(resolvedLocale.value, { dateStyle: 'medium', timeStyle: 'short', }).format(date); diff --git a/app/javascript/dashboard/routes/dashboard/settings/inbox/components/specs/AccountHealth.spec.js b/app/javascript/dashboard/routes/dashboard/settings/inbox/components/specs/AccountHealth.spec.js index cca7bfbb5..ef45cb4a8 100644 --- a/app/javascript/dashboard/routes/dashboard/settings/inbox/components/specs/AccountHealth.spec.js +++ b/app/javascript/dashboard/routes/dashboard/settings/inbox/components/specs/AccountHealth.spec.js @@ -2,11 +2,13 @@ import { shallowMount } from '@vue/test-utils'; import ButtonV4 from 'next/button/Button.vue'; import AccountHealth from '../AccountHealth.vue'; +const { locale } = vi.hoisted(() => ({ locale: { value: 'en' } })); + vi.mock('vue-i18n', () => ({ useI18n: () => ({ t: key => key, te: () => false, - locale: { value: 'en' }, + locale, }), })); @@ -17,6 +19,7 @@ describe('AccountHealth', () => { }); beforeEach(() => { + locale.value = 'en'; vi.spyOn(window, 'open').mockImplementation(() => {}); }); @@ -67,6 +70,16 @@ describe('AccountHealth', () => { ); }); + it('formats dates for underscore-based locales', () => { + locale.value = 'pt_BR'; + + const wrapper = mountComponent({ + last_onboarded_time: '2026-05-29T20:11:58+0000', + }); + + expect(wrapper.text()).toContain('2026'); + }); + it('shows the current error instead of stale health data', () => { const wrapper = mountComponent( { verified_name: 'Stale Business Name' },