1 import {DatePipe, CurrencyPipe} from '@angular/common';
2 import {IdlService} from './idl.service';
3 import {EventService} from './event.service';
4 import {NetService} from './net.service';
5 import {AuthService} from './auth.service';
6 import {PcrudService} from './pcrud.service';
7 import {StoreService} from './store.service';
8 import {OrgService} from './org.service';
9 import {FormatService} from './format.service';
12 describe('FormatService', () => {
14 let currencyPipe: CurrencyPipe;
15 let datePipe: DatePipe;
16 let idlService: IdlService;
17 let netService: NetService;
18 let authService: AuthService;
19 let pcrudService: PcrudService;
20 let orgService: OrgService;
21 let evtService: EventService;
22 let storeService: StoreService;
23 let service: FormatService;
26 currencyPipe = new CurrencyPipe('en');
27 datePipe = new DatePipe('en');
28 idlService = new IdlService();
29 evtService = new EventService();
30 storeService = new StoreService(null /* CookieService */);
31 netService = new NetService(evtService);
32 authService = new AuthService(evtService, netService, storeService);
33 pcrudService = new PcrudService(idlService, netService, authService);
34 orgService = new OrgService(netService, authService, pcrudService);
35 service = new FormatService(
43 const initTestData = () => {
44 idlService.parseIdl();
45 const win: any = window; // trick TS
46 win._eg_mock_data.generateOrgTree(idlService, orgService);
49 it('should format an org unit name', () => {
51 const str = service.transform({
52 value: orgService.root(),
54 orgField: 'shortname' // currently the default
56 expect(str).toBe('ROOT'); // from eg_mock.js
59 it('should format a date', () => {
61 const str = service.transform({
62 value: new Date(2018, 6, 5),
63 datatype: 'timestamp',
65 expect(str).toBe('7/5/18');
68 it('should format a date plus time', () => {
70 const str = service.transform({
71 value: new Date(2018, 6, 5, 12, 30, 1),
72 datatype: 'timestamp',
75 expect(str).toBe('7/5/18, 12:30 PM');
80 it('should format money', () => {
82 const str = service.transform({
86 expect(str).toBe('$12.10');
89 it('should transform M/d/yy, h:mm a Angular format string to a valid MomentJS one', () => {
90 const momentVersion = service['makeFormatParseable']('M/d/yy, h:mm a');
91 expect(momentVersion).toBe('M/D/YY, h:mm a');
93 it('should transform MMM d, y, h:mm:ss a Angular format string to a valid MomentJS one', () => {
94 const momentVersion = service['makeFormatParseable']('MMM d, y, h:mm:ss a');
95 expect(momentVersion).toBe('MMM D, Y, h:mm:ss a');
97 it('should transform MMMM d, y, h:mm:ss a z Angular format strings to a valid MomentJS one', () => {
98 const momentVersion = service['makeFormatParseable']('MMMM d, y, h:mm:ss a z');
99 expect(momentVersion).toBe('MMMM D, Y, h:mm:ss a [GMT]Z');
101 it('should transform full Angular format strings to a valid MomentJS one', () => {
102 const momentVersion = service['makeFormatParseable']('full');
103 expect(momentVersion).toBe('dddd, MMMM D, Y, h:mm:ss a [GMT]Z');
105 it('can create a valid Momentjs object given a valid datetime string and correct format', () => {
106 const moment = service['momentize']('7/3/12, 6:06 PM', 'M/D/YY, h:mm a', 'Africa/Addis_Ababa', false);
107 expect(moment.isValid()).toBe(true);
109 it('can create a valid Momentjs object given a valid datetime string and a dateTimeFormat from org settings', () => {
110 service['dateTimeFormat'] = 'M/D/YY, h:mm a';
111 const moment = service.momentizeDateTimeString('7/3/12, 6:06 PM', 'Africa/Addis_Ababa', false);
112 expect(moment.isValid()).toBe(true);