/* Copyright (c) 2022 Betim Beja and Shko Online LLC Licensed under the MIT license. */ import { stub } from 'sinon'; import type { SinonStub } from 'sinon'; export class UserSettingsMock implements ComponentFramework.UserSettings { dateFormattingInfo: ComponentFramework.UserSettingApi.DateFormattingInfo; isRTL: boolean; languageId: number; numberFormattingInfo: ComponentFramework.UserSettingApi.NumberFormattingInfo; securityRoles: string[]; userId: string; userName: string; getTimeZoneOffsetMinutes: SinonStub<[date?: Date], number>; constructor() { this.dateFormattingInfo = { amDesignator: 'AM', abbreviatedDayNames: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], abbreviatedMonthGenitiveNames: [ 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec', '', ], abbreviatedMonthNames: [ 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec', '', ], calendarWeekRule: 0, calendar: { minSupportedDateTime: new Date(1753, 0, 1), maxSupportedDateTime: new Date(9999, 11, 31), algorithmType: 1, calendarType: 1, twoDigitYearMax: 2029, }, dateSeparator: '/', dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], firstDayOfWeek: 0, fullDateTimePattern: 'dddd, MMMM d, yyyy h:mm:ss tt', longDatePattern: 'dddd, MMMM d, yyyy', longTimePattern: 'hh:mm:ss tt', monthDayPattern: 'MMMM dd', monthGenitiveNames: [ 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December', '', ], monthNames: [ 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December', '', ], pmDesignator: 'PM', shortDatePattern: 'M/d/yyyy', shortTimePattern: 'h:mm tt', shortestDayNames: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'], sortableDateTimePattern: "yyyy'-'MM'-'dd'T'HH':'mm':'ss", timeSeparator: ':', universalSortableDateTimePattern: "yyyy'-'MM'-'dd HH':'mm':'ss'Z'", yearMonthPattern: 'MMMM yyyy', }; this.isRTL = true; this.languageId = 1033; this.numberFormattingInfo = { currencyDecimalDigits: 5, currencyDecimalSeparator: '.', currencyGroupSeparator: ',', currencyGroupSizes: [3], currencyNegativePattern: 0, currencyPositivePattern: 0, currencySymbol: '$', nanSymbol: 'NaN', nativeDigits: ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'], negativeInfinitySymbol: '-Infinity', negativeSign: '-', numberDecimalDigits: 2, numberDecimalSeparator: '.', numberGroupSeparator: ',', numberGroupSizes: [3], numberNegativePattern: 1, perMilleSymbol: '', percentDecimalDigits: 2, percentDecimalSeparator: '.', percentGroupSeparator: ',', percentGroupSizes: [3], percentNegativePattern: 0, percentPositivePattern: 0, percentSymbol: '%', positiveInfinitySymbol: 'Infinity', positiveSign: '+', }; this.securityRoles = []; this.userId = ''; this.userName = ''; this.getTimeZoneOffsetMinutes = stub(); } }