diff --git a/__tests__/lang/an.spec.ts b/__tests__/lang/an.spec.ts new file mode 100644 index 0000000..521f1cf --- /dev/null +++ b/__tests__/lang/an.spec.ts @@ -0,0 +1,103 @@ +import { advanceTo, clear } from 'jest-date-mock'; +import { register, format } from '../../src'; +import an from '../../src/lang/an'; + +register('an', an); + +let date = new Date(); + +beforeEach(() => { + advanceTo(0); + date = new Date(); +}); +afterEach(() => { + clear(); +}); +describe('an', () => { + test('time ago', () => { + advanceTo(9 * 1000); + expect(format(date, 'an')).toEqual('fa un momento'); + + advanceTo(30 * 1000); + expect(format(date, 'an')).toEqual('fa 30 segundos'); + + advanceTo(1000 * 60); + expect(format(date, 'an')).toEqual('fa 1 minuto'); + + advanceTo(1000 * 60 * 30); + expect(format(date, 'an')).toEqual('fa 30 minutos'); + + advanceTo(1000 * 60 * 60); + expect(format(date, 'an')).toEqual('fa 1 hora'); + + advanceTo(1000 * 60 * 60 * 8); + expect(format(date, 'an')).toEqual('fa 8 horas'); + + advanceTo(1000 * 60 * 60 * 24); + expect(format(date, 'an')).toEqual('fa 1 día'); + + advanceTo(1000 * 60 * 60 * 24 * 3); + expect(format(date, 'an')).toEqual('fa 3 días'); + + advanceTo(1000 * 60 * 60 * 24 * 7); + expect(format(date, 'an')).toEqual('fa 1 semana'); + + advanceTo(1000 * 60 * 60 * 24 * 7 * 3); + expect(format(date, 'an')).toEqual('fa 3 semanas'); + + advanceTo(1000 * 60 * 60 * 24 * 31); + expect(format(date, 'an')).toEqual('fa 1 mes'); + + advanceTo(1000 * 60 * 60 * 24 * 31 * 4); + expect(format(date, 'an')).toEqual('fa 4 meses'); + + advanceTo(1000 * 60 * 60 * 24 * 366); + expect(format(date, 'an')).toEqual('fa 1 anyo'); + + advanceTo(1000 * 60 * 60 * 24 * 366 * 10); + expect(format(date, 'an')).toEqual('fa 10 anyos'); + }); + test('time in', () => { + advanceTo(-9 * 1000); + expect(format(date, 'an')).toEqual("d'aquí a un momento"); + + advanceTo(-30 * 1000); + expect(format(date, 'an')).toEqual("d'aquí a 30 segundos"); + + advanceTo(-1000 * 60); + expect(format(date, 'an')).toEqual("d'aquí a 1 minuto"); + + advanceTo(-1000 * 60 * 30); + expect(format(date, 'an')).toEqual("d'aquí a 30 minutos"); + + advanceTo(-1000 * 60 * 60); + expect(format(date, 'an')).toEqual("d'aquí a 1 hora"); + + advanceTo(-1000 * 60 * 60 * 8); + expect(format(date, 'an')).toEqual("d'aquí a 8 horas"); + + advanceTo(-1000 * 60 * 60 * 24); + expect(format(date, 'an')).toEqual("d'aquí a 1 día"); + + advanceTo(-1000 * 60 * 60 * 24 * 3); + expect(format(date, 'an')).toEqual("d'aquí a 3 días"); + + advanceTo(-1000 * 60 * 60 * 24 * 7); + expect(format(date, 'an')).toEqual("d'aquí a 1 semana"); + + advanceTo(-1000 * 60 * 60 * 24 * 7 * 3); + expect(format(date, 'an')).toEqual("d'aquí a 3 semanas"); + + advanceTo(-1000 * 60 * 60 * 24 * 31); + expect(format(date, 'an')).toEqual("d'aquí a 1 mes"); + + advanceTo(-1000 * 60 * 60 * 24 * 31 * 4); + expect(format(date, 'an')).toEqual("d'aquí a 4 meses"); + + advanceTo(-1000 * 60 * 60 * 24 * 366); + expect(format(date, 'an')).toEqual("d'aquí a 1 anyo"); + + advanceTo(-1000 * 60 * 60 * 24 * 366 * 10); + expect(format(date, 'an')).toEqual("d'aquí a 10 anyos"); + }); +}); diff --git a/src/lang/an.ts b/src/lang/an.ts new file mode 100644 index 0000000..85fa185 --- /dev/null +++ b/src/lang/an.ts @@ -0,0 +1,18 @@ +export default function(number: number, index: number): [string, string] { + return [ + ['fa un momento', "d'aquí a un momento"], + ['fa %s segundos', "d'aquí a %s segundos"], + ['fa 1 minuto', "d'aquí a 1 minuto"], + ['fa %s minutos', "d'aquí a %s minutos"], + ['fa 1 hora', "d'aquí a 1 hora"], + ['fa %s horas', "d'aquí a %s horas"], + ['fa 1 día', "d'aquí a 1 día"], + ['fa %s días', "d'aquí a %s días"], + ['fa 1 semana', "d'aquí a 1 semana"], + ['fa %s semanas', "d'aquí a %s semanas"], + ['fa 1 mes', "d'aquí a 1 mes"], + ['fa %s meses', "d'aquí a %s meses"], + ['fa 1 anyo', "d'aquí a 1 anyo"], + ['fa %s anyos', "d'aquí a %s anyos"], + ][index] as [string, string]; +}