test: coverage to 100%

This commit is contained in:
Harttle
2021-12-07 23:34:53 +08:00
committed by Harttle
parent 6c114267a5
commit 69286c6909
6 changed files with 62 additions and 25 deletions
+2 -1
View File
@@ -1,4 +1,5 @@
import strftime, { LiquidDate } from '../../util/strftime'
import strftime from '../../util/strftime'
import { LiquidDate } from '../../util/liquid-date'
import { isString, isNumber } from '../../util/underscore'
import { FilterImpl } from '../../template/filter/filter-impl'
import { TimezoneDate } from '../../util/timezone-date'
+19
View File
@@ -0,0 +1,19 @@
/**
* The date interface LiquidJS uses.
* Basically a subset of JavaScript Date,
* it's defined abstractly here to allow different implementation
*/
export interface LiquidDate {
getTime(): number;
getMilliseconds(): number;
getSeconds(): number;
getMinutes(): number;
getHours(): number;
getDay(): number;
getDate(): number;
getMonth(): number;
getFullYear(): number;
getTimezoneOffset(): number;
toLocaleTimeString(): string;
toLocaleDateString(): string;
}
+1 -15
View File
@@ -1,19 +1,5 @@
import { changeCase, padStart, padEnd } from './underscore'
export interface LiquidDate {
getTime(): number;
getMilliseconds(): number;
getSeconds(): number;
getMinutes(): number;
getHours(): number;
getDay(): number;
getDate(): number;
getMonth(): number;
getFullYear(): number;
getTimezoneOffset(): number;
toLocaleTimeString(): string;
toLocaleDateString(): string;
}
import { LiquidDate } from './liquid-date'
const rFormat = /%([-_0^#:]+)?(\d+)?([EO])?(.)/
const monthNames = [
+9 -9
View File
@@ -1,4 +1,4 @@
import { LiquidDate } from './strftime'
import { LiquidDate } from './liquid-date'
// one minute in milliseconds
const OneMinute = 60000
@@ -13,18 +13,18 @@ const ISO8601_TIMEZONE_PATTERN = /([zZ]|([+-])(\d{2}):(\d{2}))$/
* - rewrite getTimezoneOffset() to trick strftime
*/
export class TimezoneDate implements LiquidDate {
private timezoneOffset?: number
private timezoneOffset: number
private date: Date
constructor (init: string | number | Date | TimezoneDate, timezoneOffset: number) {
const diff = (hostTimezoneOffset - timezoneOffset) * OneMinute
if (init instanceof TimezoneDate) {
this.date = init.date
this.timezoneOffset = init.timezoneOffset
timezoneOffset = init.timezoneOffset
} else {
const diff = (hostTimezoneOffset - timezoneOffset) * OneMinute
const time = new Date(init).getTime() + diff
this.date = new Date(time)
this.timezoneOffset = timezoneOffset
}
this.timezoneOffset = timezoneOffset
}
getTime () {
@@ -55,11 +55,11 @@ export class TimezoneDate implements LiquidDate {
getFullYear () {
return this.date.getFullYear()
}
toLocaleTimeString () {
return this.date.toLocaleTimeString()
toLocaleTimeString (locale?: string) {
return this.date.toLocaleTimeString(locale)
}
toLocaleDateString () {
return this.date.toLocaleDateString()
toLocaleDateString (locale?: string) {
return this.date.toLocaleDateString(locale)
}
getTimezoneOffset () {
return this.timezoneOffset!