import { expect } from '@open-wc/testing'; import { createWeek } from '../../utils/createWeek.js'; import { createDay } from '../../utils/createDay.js'; /** * @param {import('../../types/day').Week} obj */ function compareWeek(obj) { for (let i = 0; i < 7; i += 1) { // @ts-expect-error since we are converting Date to ISO string, but that's okay for our test Date comparisons // eslint-disable-next-line no-param-reassign obj.days[i].date = obj.days[i].date.toISOString(); } return obj; } describe('createWeek', () => { it('creates week data starting from Sunday by default', () => { // https://www.timeanddate.com/date/weeknumber.html?d1=30&m1=12&y1=2018&w2=&y2=&wncm=1&wncd=1&wncs=4&fdow=7 expect(compareWeek(createWeek(new Date('2018/12/30')))).to.deep.equal( compareWeek({ days: [ createDay(new Date('2018/12/30'), { weekOrder: 0, startOfWeek: true }), createDay(new Date('2018/12/31'), { weekOrder: 1 }), createDay(new Date('2019/01/01'), { weekOrder: 2 }), createDay(new Date('2019/01/02'), { weekOrder: 3 }), createDay(new Date('2019/01/03'), { weekOrder: 4 }), createDay(new Date('2019/01/04'), { weekOrder: 5 }), createDay(new Date('2019/01/05'), { weekOrder: 6 }), ], }), ); }); it('can create week data starting from different day', () => { // https://www.timeanddate.com/date/weeknumber.html?d1=31&m1=12&y1=2018&w2=&y2=&wncm=1&wncd=1&wncs=4&fdow=0 expect(compareWeek(createWeek(new Date('2018/12/31'), { firstDayOfWeek: 1 }))).to.deep.equal( compareWeek({ days: [ createDay(new Date('2018/12/31'), { weekOrder: 0, startOfWeek: true }), createDay(new Date('2019/01/01'), { weekOrder: 1 }), createDay(new Date('2019/01/02'), { weekOrder: 2 }), createDay(new Date('2019/01/03'), { weekOrder: 3 }), createDay(new Date('2019/01/04'), { weekOrder: 4 }), createDay(new Date('2019/01/05'), { weekOrder: 5 }), createDay(new Date('2019/01/06'), { weekOrder: 6 }), ], }), ); }); });