diff --git a/spec/selenium/calendar/calendar2_event_create_spec.rb b/spec/selenium/calendar/calendar2_event_create_spec.rb index fcffc3f087c..fc73dfb4c90 100644 --- a/spec/selenium/calendar/calendar2_event_create_spec.rb +++ b/spec/selenium/calendar/calendar2_event_create_spec.rb @@ -527,6 +527,19 @@ describe "calendar2" do expect(child_event.reload.end_at).to eq(end_at) end end + + it "updates the event to the correct time when saving across DST window" do + @user.time_zone = "America/Denver" + @user.save! + start_at = DateTime.parse("2022-03-01 1:00pm -0600") + event = CalendarEvent.create!(context: @course, start_at: start_at) + get "/courses/#{@course.id}/calendar_events/#{event.id}/edit" + expect(f("#more_options_start_time").attribute(:value)).to eq("12:00pm") + replace_content(f("[name=\"start_date\"]"), "2022-03-14") + wait_for_new_page_load { more_options_submit_button.click } + get "/courses/#{@course.id}/calendar_events/#{event.id}/edit" + expect(f("#more_options_start_time").attribute(:value)).to eq("12:00pm") + end end context "assignment creation" do diff --git a/ui/features/edit_calendar_event/backbone/views/EditEventView.js b/ui/features/edit_calendar_event/backbone/views/EditEventView.js index 01cff0780e1..8ed1d6d7e8d 100644 --- a/ui/features/edit_calendar_event/backbone/views/EditEventView.js +++ b/ui/features/edit_calendar_event/backbone/views/EditEventView.js @@ -444,9 +444,9 @@ export default class EditCalendarEventView extends Backbone.View { const start_at_key = start_date_key.replace(/start_date/, 'start_at') const end_at_key = start_date_key.replace(/start_date/, 'end_at') - const start_date = this.$el.find(`[name='${start_date_key}']`).data('date') - const start_time = this.$el.find(`[name='${start_time_key}']`).data('date') - const end_time = this.$el.find(`[name='${end_time_key}']`).data('date') + const start_date = this.$el.find(`[name='${start_date_key}']`).change().data('date') + const start_time = this.$el.find(`[name='${start_time_key}']`).change().data('date') + const end_time = this.$el.find(`[name='${end_time_key}']`).change().data('date') if (!start_date) return data = _.omit(data, start_date_key, start_time_key, end_time_key)