From 88a19ea0663f58aa806110b438ef3c2cc244e8f6 Mon Sep 17 00:00:00 2001 From: Dani Palou Date: Wed, 27 Jul 2022 08:45:51 +0200 Subject: [PATCH] MOBILE-4116 moment: Force timezone for moment in behat tests --- package-lock.json | 8 ++++++++ package.json | 1 + src/addons/block/timeline/services/timeline.ts | 2 +- .../calendar/components/calendar/calendar.ts | 2 +- src/addons/calendar/pages/day/day.page.ts | 2 +- src/addons/calendar/services/calendar-helper.ts | 2 +- src/addons/calendar/services/calendar-sync.ts | 2 +- src/addons/calendar/services/calendar.ts | 2 +- .../messages/pages/discussion/discussion.page.ts | 2 +- .../mod/assign/tests/behat/basic_usage-310.feature | 4 ++-- .../mod/assign/tests/behat/basic_usage.feature | 4 ++-- src/addons/mod/chat/services/chat-helper.ts | 2 +- .../features/comments/pages/viewer/viewer.page.ts | 2 +- src/core/features/compile/services/compile.ts | 2 +- src/core/features/course/services/course-helper.ts | 2 +- .../features/courses/services/courses-helper.ts | 2 +- src/core/pipes/date-day-or-time.ts | 2 +- src/core/pipes/time-ago.ts | 2 +- src/core/services/lang.ts | 2 +- src/core/services/utils/time.ts | 2 +- src/core/singletons/logger.ts | 2 +- src/testing/testing.module.ts | 14 ++++++++++++-- 22 files changed, 42 insertions(+), 23 deletions(-) diff --git a/package-lock.json b/package-lock.json index 635045583..f55d7a84e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23663,6 +23663,14 @@ "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.2.tgz", "integrity": "sha512-UgzG4rvxYpN15jgCmVJwac49h9ly9NurikMWGPdVxm8GZD6XjkKPxDTjQQ43gtGgnV3X0cAyWDdP2Wexoquifg==" }, + "moment-timezone": { + "version": "0.5.34", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.34.tgz", + "integrity": "sha512-3zAEHh2hKUs3EXLESx/wsgw6IQdusOT8Bxm3D9UrHPQR7zlMmzwybC8zHEM1tQ4LJwP7fcxrWr8tuBg05fFCbg==", + "requires": { + "moment": ">= 2.9.0" + } + }, "move-concurrently": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", diff --git a/package.json b/package.json index ea93e1d63..609ca4529 100644 --- a/package.json +++ b/package.json @@ -119,6 +119,7 @@ "jszip": "^3.7.1", "mathjax": "2.7.7", "moment": "^2.29.2", + "moment-timezone": "^0.5.34", "nl.kingsquare.cordova.background-audio": "^1.0.1", "rxjs": "~6.5.5", "ts-md5": "^1.2.7", diff --git a/src/addons/block/timeline/services/timeline.ts b/src/addons/block/timeline/services/timeline.ts index 8b7f41bd7..144aa8fe9 100644 --- a/src/addons/block/timeline/services/timeline.ts +++ b/src/addons/block/timeline/services/timeline.ts @@ -22,7 +22,7 @@ import { AddonCalendarGetActionEventsByTimesortWSParams, AddonCalendarGetActionEventsByCoursesWSParams, } from '@addons/calendar/services/calendar'; -import moment from 'moment'; +import moment from 'moment-timezone'; import { makeSingleton } from '@singletons'; import { CoreSiteWSPreSets } from '@classes/site'; diff --git a/src/addons/calendar/components/calendar/calendar.ts b/src/addons/calendar/components/calendar/calendar.ts index 1ff4753a3..f273bdf41 100644 --- a/src/addons/calendar/components/calendar/calendar.ts +++ b/src/addons/calendar/components/calendar/calendar.ts @@ -48,7 +48,7 @@ import { CoreSwipeSlidesDynamicItemsManagerSource, } from '@classes/items-management/swipe-slides-dynamic-items-manager-source'; import { CoreSwipeSlidesDynamicItemsManager } from '@classes/items-management/swipe-slides-dynamic-items-manager'; -import moment from 'moment'; +import moment from 'moment-timezone'; /** * Component that displays a calendar. diff --git a/src/addons/calendar/pages/day/day.page.ts b/src/addons/calendar/pages/day/day.page.ts index eea350110..839a3a7d5 100644 --- a/src/addons/calendar/pages/day/day.page.ts +++ b/src/addons/calendar/pages/day/day.page.ts @@ -32,7 +32,7 @@ import { AddonCalendarSync, AddonCalendarSyncProvider } from '../../services/cal import { CoreCategoryData, CoreCourses, CoreEnrolledCourseData } from '@features/courses/services/courses'; import { CoreCoursesHelper } from '@features/courses/services/courses-helper'; import { AddonCalendarFilterComponent } from '../../components/filter/filter'; -import moment from 'moment'; +import moment from 'moment-timezone'; import { NgZone } from '@singletons'; import { CoreNavigator } from '@services/navigator'; import { Params } from '@angular/router'; diff --git a/src/addons/calendar/services/calendar-helper.ts b/src/addons/calendar/services/calendar-helper.ts index 26bbe55ea..07201765f 100644 --- a/src/addons/calendar/services/calendar-helper.ts +++ b/src/addons/calendar/services/calendar-helper.ts @@ -31,7 +31,7 @@ import { CoreConfig } from '@services/config'; import { CoreUtils } from '@services/utils/utils'; import { CoreCourse } from '@features/course/services/course'; import { ContextLevel, CoreConstants } from '@/core/constants'; -import moment from 'moment'; +import moment from 'moment-timezone'; import { makeSingleton } from '@singletons'; import { AddonCalendarSyncInvalidateEvent } from './calendar-sync'; import { AddonCalendarOfflineEventDBRecord } from './database/calendar-offline'; diff --git a/src/addons/calendar/services/calendar-sync.ts b/src/addons/calendar/services/calendar-sync.ts index 97bb81eae..47c78cbcd 100644 --- a/src/addons/calendar/services/calendar-sync.ts +++ b/src/addons/calendar/services/calendar-sync.ts @@ -29,7 +29,7 @@ import { AddonCalendarHelper } from './calendar-helper'; import { makeSingleton, Translate } from '@singletons'; import { CoreSync } from '@services/sync'; import { CoreNetworkError } from '@classes/errors/network-error'; -import moment from 'moment'; +import moment from 'moment-timezone'; /** * Service to sync calendar. diff --git a/src/addons/calendar/services/calendar.ts b/src/addons/calendar/services/calendar.ts index 3e20b9706..dc5c47d18 100644 --- a/src/addons/calendar/services/calendar.ts +++ b/src/addons/calendar/services/calendar.ts @@ -27,7 +27,7 @@ import { ILocalNotification } from '@ionic-native/local-notifications'; import { AddonCalendarOffline } from './calendar-offline'; import { CoreUser } from '@features/user/services/user'; import { CoreWSExternalWarning, CoreWSDate } from '@services/ws'; -import moment from 'moment'; +import moment from 'moment-timezone'; import { AddonCalendarEventDBRecord, AddonCalendarReminderDBRecord, EVENTS_TABLE, REMINDERS_TABLE } from './database/calendar'; import { CoreCourses } from '@features/courses/services/courses'; import { ContextLevel, CoreConstants } from '@/core/constants'; diff --git a/src/addons/messages/pages/discussion/discussion.page.ts b/src/addons/messages/pages/discussion/discussion.page.ts index 17cca33e9..f1ad3d33b 100644 --- a/src/addons/messages/pages/discussion/discussion.page.ts +++ b/src/addons/messages/pages/discussion/discussion.page.ts @@ -36,7 +36,7 @@ import { CoreLogger } from '@singletons/logger'; import { CoreApp } from '@services/app'; import { CoreInfiniteLoadingComponent } from '@components/infinite-loading/infinite-loading'; import { Md5 } from 'ts-md5/dist/md5'; -import moment from 'moment'; +import moment from 'moment-timezone'; import { CoreError } from '@classes/errors/error'; import { Translate } from '@singletons'; import { CoreNavigator } from '@services/navigator'; diff --git a/src/addons/mod/assign/tests/behat/basic_usage-310.feature b/src/addons/mod/assign/tests/behat/basic_usage-310.feature index 532f7a134..4b89fe7e6 100755 --- a/src/addons/mod/assign/tests/behat/basic_usage-310.feature +++ b/src/addons/mod/assign/tests/behat/basic_usage-310.feature @@ -16,8 +16,8 @@ Feature: Test basic usage of assignment activity in app | teacher1 | C1 | editingteacher | | student1 | C1 | student | And the following "activities" exist: - | activity | course | idnumber | name | intro | assignsubmission_onlinetext_enabled | duedate | attemptreopenmethod | - | assign | C1 | assign1 | assignment1 | Test assignment description1 | 1 | 1029844800 | manual | + | activity | course | idnumber | name | intro | assignsubmission_onlinetext_enabled | duedate | attemptreopenmethod | + | assign | C1 | assign1 | assignment1 | Test assignment description1 | 1 | ## 20 August 2002 12:00 PM ## | manual | Scenario: View assign description, due date & View list of student submissions (as teacher) & View own submission or student submission # Create, edit and submit as a student diff --git a/src/addons/mod/assign/tests/behat/basic_usage.feature b/src/addons/mod/assign/tests/behat/basic_usage.feature index 67e535139..f89f072a3 100755 --- a/src/addons/mod/assign/tests/behat/basic_usage.feature +++ b/src/addons/mod/assign/tests/behat/basic_usage.feature @@ -16,8 +16,8 @@ Feature: Test basic usage of assignment activity in app | teacher1 | C1 | editingteacher | | student1 | C1 | student | And the following "activities" exist: - | activity | course | idnumber | name | intro | assignsubmission_onlinetext_enabled | duedate | attemptreopenmethod | - | assign | C1 | assign1 | assignment1 | Test assignment description1 | 1 | 1029844800 | manual | + | activity | course | idnumber | name | intro | assignsubmission_onlinetext_enabled | duedate | attemptreopenmethod | + | assign | C1 | assign1 | assignment1 | Test assignment description1 | 1 | ## 20 August 2002 12:00 PM ## | manual | @lms_from3.11 Scenario: View assign description, due date & View list of student submissions (as teacher) & View own submission or student submission diff --git a/src/addons/mod/chat/services/chat-helper.ts b/src/addons/mod/chat/services/chat-helper.ts index 9b2c03d06..2f4f6e02d 100644 --- a/src/addons/mod/chat/services/chat-helper.ts +++ b/src/addons/mod/chat/services/chat-helper.ts @@ -14,7 +14,7 @@ import { Injectable } from '@angular/core'; import { makeSingleton, Translate } from '@singletons'; -import * as moment from 'moment'; +import moment from 'moment-timezone'; import { AddonModChatMessage, AddonModChatSessionMessage } from './chat'; const patternTo = new RegExp(/^To\s([^:]+):(.*)/); diff --git a/src/core/features/comments/pages/viewer/viewer.page.ts b/src/core/features/comments/pages/viewer/viewer.page.ts index 32084a2ac..4d7ddf9b7 100644 --- a/src/core/features/comments/pages/viewer/viewer.page.ts +++ b/src/core/features/comments/pages/viewer/viewer.page.ts @@ -40,7 +40,7 @@ import { CoreCommentsDBRecord } from '@features/comments/services/database/comme import { CoreTimeUtils } from '@services/utils/time'; import { CoreApp } from '@services/app'; import { CoreNetwork } from '@services/network'; -import moment from 'moment'; +import moment from 'moment-timezone'; import { Subscription } from 'rxjs'; import { CoreAnimations } from '@components/animations'; diff --git a/src/core/features/compile/services/compile.ts b/src/core/features/compile/services/compile.ts index 204ec0408..b18fa7a8a 100644 --- a/src/core/features/compile/services/compile.ts +++ b/src/core/features/compile/services/compile.ts @@ -72,7 +72,7 @@ import { DomSanitizer } from '@angular/platform-browser'; import { FormBuilder, Validators } from '@angular/forms'; import { HttpClient } from '@angular/common/http'; import { CoreConstants } from '@/core/constants'; -import moment from 'moment'; +import moment from 'moment-timezone'; import { Md5 } from 'ts-md5/dist/md5'; // Import core classes that can be useful for site plugins. diff --git a/src/core/features/course/services/course-helper.ts b/src/core/features/course/services/course-helper.ts index f4f9703cd..094f08205 100644 --- a/src/core/features/course/services/course-helper.ts +++ b/src/core/features/course/services/course-helper.ts @@ -14,7 +14,7 @@ import { Injectable } from '@angular/core'; import { Params } from '@angular/router'; -import moment from 'moment'; +import moment from 'moment-timezone'; import { CoreSites, CoreSitesReadingStrategy } from '@services/sites'; import { diff --git a/src/core/features/courses/services/courses-helper.ts b/src/core/features/courses/services/courses-helper.ts index 688db4f43..f79686c9c 100644 --- a/src/core/features/courses/services/courses-helper.ts +++ b/src/core/features/courses/services/courses-helper.ts @@ -25,7 +25,7 @@ import { import { makeSingleton, Translate } from '@singletons'; import { CoreWSExternalFile } from '@services/ws'; import { AddonCourseCompletion } from '@addons/coursecompletion/services/coursecompletion'; -import moment from 'moment'; +import moment from 'moment-timezone'; /** * Helper to gather some common courses functions. diff --git a/src/core/pipes/date-day-or-time.ts b/src/core/pipes/date-day-or-time.ts index 504ce72b6..b59784a13 100644 --- a/src/core/pipes/date-day-or-time.ts +++ b/src/core/pipes/date-day-or-time.ts @@ -13,7 +13,7 @@ // limitations under the License. import { Pipe, PipeTransform } from '@angular/core'; -import moment from 'moment'; +import moment from 'moment-timezone'; import { CoreTimeUtils } from '@services/utils/time'; import { Translate } from '@singletons'; diff --git a/src/core/pipes/time-ago.ts b/src/core/pipes/time-ago.ts index ea2657c53..b301c5751 100644 --- a/src/core/pipes/time-ago.ts +++ b/src/core/pipes/time-ago.ts @@ -15,7 +15,7 @@ import { Pipe, PipeTransform } from '@angular/core'; import { Translate } from '@singletons'; import { CoreLogger } from '@singletons/logger'; -import moment from 'moment'; +import moment from 'moment-timezone'; /** * Pipe to turn a UNIX timestamp to "time ago". diff --git a/src/core/services/lang.ts b/src/core/services/lang.ts index 67efec309..b7359f366 100644 --- a/src/core/services/lang.ts +++ b/src/core/services/lang.ts @@ -21,7 +21,7 @@ import { CoreConfig } from '@services/config'; import { CoreSubscriptions } from '@singletons/subscriptions'; import { makeSingleton, Translate, Http } from '@singletons'; -import * as moment from 'moment'; +import moment from 'moment-timezone'; import { CoreSite } from '../classes/site'; import { CorePlatform } from '@services/platform'; diff --git a/src/core/services/utils/time.ts b/src/core/services/utils/time.ts index 446181a79..bbc4a3e19 100644 --- a/src/core/services/utils/time.ts +++ b/src/core/services/utils/time.ts @@ -14,7 +14,7 @@ import { Injectable } from '@angular/core'; -import moment, { LongDateFormatKey } from 'moment'; +import moment, { LongDateFormatKey } from 'moment-timezone'; import { makeSingleton, Translate } from '@singletons'; import { CoreTime } from '@singletons/time'; diff --git a/src/core/singletons/logger.ts b/src/core/singletons/logger.ts index 6d59785b8..727c3f9bf 100644 --- a/src/core/singletons/logger.ts +++ b/src/core/singletons/logger.ts @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -import moment from 'moment'; +import moment from 'moment-timezone'; import { CoreConstants } from '@/core/constants'; diff --git a/src/testing/testing.module.ts b/src/testing/testing.module.ts index 9d78a5aa1..bc9171833 100644 --- a/src/testing/testing.module.ts +++ b/src/testing/testing.module.ts @@ -14,23 +14,33 @@ import { APP_INITIALIZER, NgModule } from '@angular/core'; import { CoreAppProvider } from '@services/app'; +import moment from 'moment-timezone'; import { TestingBehatRuntime, TestingBehatRuntimeService } from './services/behat-runtime'; type AutomatedTestsWindow = Window & { behat?: TestingBehatRuntimeService; }; -function initializeAutomatedTestsWindow(window: AutomatedTestsWindow) { +function initializeAutomatedTests(window: AutomatedTestsWindow) { if (!CoreAppProvider.isAutomated()) { return; } window.behat = TestingBehatRuntime.instance; + + // Force timezone for automated tests. Use the same timezone forced for LMS in tests. + moment.tz.setDefault('Australia/Perth'); } @NgModule({ providers: [ - { provide: APP_INITIALIZER, multi: true, useValue: () => initializeAutomatedTestsWindow(window) }, + { + provide: APP_INITIALIZER, + multi: true, + useValue: () => { + initializeAutomatedTests(window); + }, + }, ], }) export class TestingModule {}