diff --git a/ui/app/models/config-ui/message.js b/ui/app/models/config-ui/message.js index fdab790b54b5..4dccd5dfbf69 100644 --- a/ui/app/models/config-ui/message.js +++ b/ui/app/models/config-ui/message.js @@ -3,6 +3,7 @@ * SPDX-License-Identifier: BUSL-1.1 */ import Model, { attr } from '@ember-data/model'; +import timestamp from 'core/utils/timestamp'; import lazyCapabilities, { apiPath } from 'vault/macros/lazy-capabilities'; import { isAfter, addDays, startOfDay, parseISO, isBefore } from 'date-fns'; import { withModelValidations } from 'vault/decorators/model-validations'; @@ -109,7 +110,9 @@ export default class MessageModel extends Model { editType: 'dateTimeLocal', label: 'Message starts', subText: 'Defaults to 12:00 a.m. the following day (local timezone).', - defaultValue: addDays(startOfDay(new Date()), 1).toISOString(), + defaultValue() { + return addDays(startOfDay(timestamp.now()), 1).toISOString(); + }, }) startTime; @attr('dateTimeLocal', { editType: 'yield', label: 'Message expires' }) endTime; @@ -126,7 +129,7 @@ export default class MessageModel extends Model { // date helpers get isStartTimeAfterToday() { - return isAfter(parseISO(this.startTime), new Date()); + return isAfter(parseISO(this.startTime), timestamp.now()); } // capabilities diff --git a/ui/lib/config-ui/addon/components/messages/page/create-and-edit.js b/ui/lib/config-ui/addon/components/messages/page/create-and-edit.js index 8ba4c827a75e..d0116a58e942 100644 --- a/ui/lib/config-ui/addon/components/messages/page/create-and-edit.js +++ b/ui/lib/config-ui/addon/components/messages/page/create-and-edit.js @@ -11,6 +11,7 @@ import { service } from '@ember/service'; import { action } from '@ember/object'; import Ember from 'ember'; import { isAfter } from 'date-fns'; +import timestamp from 'core/utils/timestamp'; /** * @module Page::CreateAndEditMessageForm @@ -63,7 +64,7 @@ export default class MessagesList extends Component { const modalMessages = this.args.messages?.filter((message) => message.type === 'modal') || []; const hasExpiredModalMessages = modalMessages.every((message) => { if (!message.endTime) return false; - return isAfter(new Date(), new Date(message.endTime)); + return isAfter(timestamp.now(), new Date(message.endTime)); }); if (!hasExpiredModalMessages && this.args.hasSomeActiveModals && this.args.message.type === 'modal') { diff --git a/ui/tests/integration/components/config-ui/messages/page/create-and-edit-test.js b/ui/tests/integration/components/config-ui/messages/page/create-and-edit-test.js index e08430ed6285..254f3b1ed08f 100644 --- a/ui/tests/integration/components/config-ui/messages/page/create-and-edit-test.js +++ b/ui/tests/integration/components/config-ui/messages/page/create-and-edit-test.js @@ -14,6 +14,7 @@ import { format, addDays, startOfDay } from 'date-fns'; import { CUSTOM_MESSAGES } from 'vault/tests/helpers/config-ui/message-selectors'; import timestamp from 'core/utils/timestamp'; import { GENERAL } from 'vault/tests/helpers/general-selectors'; +import sinon from 'sinon'; module('Integration | Component | messages/page/create-and-edit', function (hooks) { setupRenderingTest(hooks); @@ -21,14 +22,14 @@ module('Integration | Component | messages/page/create-and-edit', function (hook setupMirage(hooks); hooks.beforeEach(function () { + const now = new Date('2023-07-02T00:00:00Z'); // stub "now" for testing + sinon.replace(timestamp, 'now', sinon.fake.returns(now)); this.context = { owner: this.engine }; this.store = this.owner.lookup('service:store'); this.message = this.store.createRecord('config-ui/message'); }); test('it should display all the create form fields and default radio button values', async function (assert) { - assert.expect(17); - await render(hbs``, { owner: this.engine, }); @@ -46,11 +47,14 @@ module('Integration | Component | messages/page/create-and-edit', function (hook assert.dom(CUSTOM_MESSAGES.field('message')).exists(); assert.dom('[data-test-kv-key="0"]').exists(); assert.dom('[data-test-kv-value="0"]').exists(); - assert.dom(CUSTOM_MESSAGES.input('startTime')).exists(); assert .dom(CUSTOM_MESSAGES.input('startTime')) - .hasValue(format(addDays(startOfDay(timestamp.now()), 1), datetimeLocalStringFormat)); - assert.dom(CUSTOM_MESSAGES.input('endTime')).exists(); + .hasValue( + format(addDays(startOfDay(timestamp.now()), 1), datetimeLocalStringFormat), + `message startTime defaults to midnight of following day. test context startTime: ${ + this.message.startTime + }, now: ${timestamp.now().toISOString()}` + ); assert.dom(CUSTOM_MESSAGES.input('endTime')).hasValue(''); });