]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/web/js/ui/default/staff/test/unit/egReporter.js
LP1915464 follow-up: use spaces, not tabs; remove extra comma
[Evergreen.git] / Open-ILS / web / js / ui / default / staff / test / unit / egReporter.js
1 'use strict';
2
3 describe('egReporterTest', function() {
4     beforeEach(module('egCoreMod'));
5     beforeEach(module('egReportMod'));
6     beforeEach(module('egReporter'));
7
8     var reportEditCtrl, reportEditScope;
9     beforeEach(inject(function ($rootScope, $controller, $location, egIDL) {
10         egIDL.parseIDL();
11         reportEditScope = $rootScope.$new();
12         reportEditCtrl = $controller('ReporterTemplateEdit', {$scope: reportEditScope});
13     }));
14
15     /** egReportTemplateSvc tests **/
16     describe('egReportTemplateSvcTests', function() {
17
18         it('egReportTemplateSvc should start with empty lists', inject(function(egReportTemplateSvc) {
19             expect(egReportTemplateSvc.display_fields.length).toEqual(0);
20             expect(egReportTemplateSvc.filter_fields.length).toEqual(0);
21         }));
22
23     });
24
25     // test template
26     var display_fields = [{
27         "name": "family_name",
28         "label": "Last Name",
29         "datatype": "text",
30         "index": 0,
31         "path": [
32             {
33             "label": "ILS User",
34             "id": "au",
35             "jtype": "inner",
36             "classname": "au",
37             "struct": {
38                 "name": "au",
39                 "label": "ILS User",
40                 "table": "actor.usr",
41                 "core": true,
42                 "pkey": "id",
43                 "pkey_sequence": "actor.usr_id_seq",
44                 "core_label": "Core sources",
45                 "classname": "au"
46             },
47             "table": "actor.usr"
48             }
49         ],
50         "path_label": "ILS User",
51         "transform": {
52             "transform": "Bare",
53             "label": "Raw Data",
54             "aggregate": false
55         },
56         "doc_text": ""
57         }, {
58         "name": "first_given_name",
59         "label": "First Name",
60         "datatype": "text",
61         "index": 1,
62         "path": [
63             {
64             "label": "ILS User",
65             "id": "au",
66             "jtype": "inner",
67             "classname": "au",
68             "struct": {
69                 "name": "au",
70                 "label": "ILS User",
71                 "table": "actor.usr",
72                 "core": true,
73                 "pkey": "id",
74                 "pkey_sequence": "actor.usr_id_seq",
75                 "core_label": "Core sources",
76                 "classname": "au"
77             },
78             "table": "actor.usr"
79             }
80         ],
81         "path_label": "ILS User",
82         "transform": {
83             "transform": "Bare",
84             "label": "Raw Data",
85             "aggregate": false
86         },
87         "doc_text": ""
88         }, {
89         "name": "value",
90         "label": "Note Content",
91         "datatype": "text",
92         "index": 2,
93         "path": [
94             {
95             "label": "ILS User",
96             "id": "au",
97             "jtype": "inner",
98             "classname": "au",
99             "struct": {
100                 "name": "au",
101                 "label": "ILS User",
102                 "table": "actor.usr",
103                 "core": true,
104                 "pkey": "id",
105                 "pkey_sequence": "actor.usr_id_seq",
106                 "core_label": "Core sources",
107                 "classname": "au"
108             },
109             "table": "actor.usr"
110             },
111             {
112             "label": "User Notes",
113             "from": "au",
114             "link": {
115                 "name": "notes",
116                 "label": "User Notes",
117                 "virtual": true,
118                 "type": "link",
119                 "key": "usr",
120                 "class": "aun",
121                 "reltype": "has_many",
122                 "datatype": "link"
123             },
124             "id": "au.aun",
125             "jtype": "left",
126             "uplink": {
127                 "name": "notes",
128                 "label": "User Notes",
129                 "virtual": true,
130                 "type": "link",
131                 "key": "usr",
132                 "class": "aun",
133                 "reltype": "has_many",
134                 "datatype": "link"
135             },
136             "classname": "aun",
137             "struct": {
138                 "name": "aun",
139                 "label": "User Note",
140                 "table": "actor.usr_note",
141                 "pkey": "id",
142                 "pkey_sequence": "actor.usr_note_id_seq",
143                 "core_label": "Non-core sources",
144                 "classname": "aun"
145             },
146             "table": "actor.usr_note"
147             }
148         ],
149         "path_label": "ILS User -> User Notes (left)",
150         "transform": {
151             "transform": "Bare",
152             "label": "Raw Data",
153             "aggregate": false
154         },
155         "doc_text": ""
156     }];
157
158     describe('egReporterTemplateEditTests', function() {
159         it('initialize and set core source for ReporterTemplateEdit', inject(function(egIDL, egCore) {
160             egIDL.parseIDL();
161
162             // initialize
163             expect(reportEditScope.class_tree.length).toEqual(0);
164             expect(reportEditScope.coreSourceChosen).toEqual(false);
165
166             // set core source
167             reportEditScope.changeCoreSource('au');
168             expect(reportEditScope.coreSourceChosen).toEqual(true);
169             expect(reportEditScope.class_tree.length).toEqual(1);
170
171         }));
172
173         it('LP#1721807: construct join key correctly when using virtual field', function() {
174             var tmpl = reportEditScope._mergePaths(display_fields);
175             expect(tmpl).toBeDefined();
176             expect(Object.keys(tmpl)).toContain('join');
177             expect(Object.keys(tmpl.join).length).toEqual(1);
178             var join_key = Object.keys(tmpl.join)[0];
179             var lcol = join_key.split(/-/)[0];
180             expect(lcol).toEqual('id');
181         });
182
183     });
184
185     /** template conversion tests **/
186     var v4Templates = [
187          '{"version":4,"doc_url":"","core_class":"bre","select":[{"alias":"Title Proper (normalized)","field_doc":"","column":{"colname":"title","transform":"Bare","transform_label":"Raw Data"},"path":"bre-simple_record-rmsr-title","relation":"938089c53626281c03f9f40622093fcc"}],"from":{"path":"bre-simple_record","table":"biblio.record_entry","alias":"a0a5898f5f47b01a3943462dbf1c45ad","join":{"id-mfr-record-a0a5898f5f47b01a3943462dbf1c45ad":{"key":"record","type":"left","path":"bre-full_record_entries-mfr","table":"metabib.full_rec","label":"Bibliographic Record :: Flattened MARC Fields ","alias":"6da08cb48d3b764920485d2d40a4145c","idlclass":"mfr","template_path":"bre-full_record_entries"},"id-rmsr-id-a0a5898f5f47b01a3943462dbf1c45ad":{"key":"id","type":"left","path":"bre-simple_record-rmsr","table":"reporter.materialized_simple_record","label":"Bibliographic Record :: Simple Record Extracts ","alias":"938089c53626281c03f9f40622093fcc","idlclass":"rmsr","template_path":"bre-simple_record"}}},"where":[{"alias":"Tag","field_doc":"","column":{"colname":"tag","transform":"Bare","transform_label":"Raw Data"},"path":"bre-full_record_entries-mfr-tag","relation":"6da08cb48d3b764920485d2d40a4145c","condition":{"ilike":"::P0"}},{"alias":"Subfield","field_doc":"","column":{"colname":"subfield","transform":"Bare","transform_label":"Raw Data"},"path":"bre-full_record_entries-mfr-subfield","relation":"6da08cb48d3b764920485d2d40a4145c","condition":{"ilike":"::P1"}},{"alias":"Normalized Value","field_doc":"","column":{"colname":"value","transform":"Bare","transform_label":"Raw Data"},"path":"bre-full_record_entries-mfr-value","relation":"6da08cb48d3b764920485d2d40a4145c","condition":{"ilike":"::P2"}}],"having":[],"order_by":[],"rel_cache":{"order_by":[{"relation":"938089c53626281c03f9f40622093fcc","field":"title"}],"6da08cb48d3b764920485d2d40a4145c":{"label":"Bibliographic Record :: Flattened MARC Fields ","alias":"6da08cb48d3b764920485d2d40a4145c","path":"bre-full_record_entries","join":"","reltype":"has_many","idlclass":"mfr","table":"metabib.full_rec","fields":{"dis_tab":{},"filter_tab":{"tag":{"colname":"tag","transform":"Bare","aggregate":null,"params":null,"transform_label":"Raw Data","alias":"Tag","field_doc":"","join":"","datatype":"text","op":"ilike","op_label":"Contains Matching substring (ignore case)","op_value":{}},"subfield":{"colname":"subfield","transform":"Bare","aggregate":null,"params":null,"transform_label":"Raw Data","alias":"Subfield","field_doc":"","join":"","datatype":"text","op":"ilike","op_label":"Contains Matching substring (ignore case)","op_value":{}},"value":{"colname":"value","transform":"Bare","aggregate":null,"params":null,"transform_label":"Raw Data","alias":"Normalized Value","field_doc":"","join":"","datatype":"text","op":"ilike","op_label":"Contains Matching substring (ignore case)","op_value":{}}},"aggfilter_tab":{}}},"938089c53626281c03f9f40622093fcc":{"label":"Bibliographic Record :: Simple Record Extracts ","alias":"938089c53626281c03f9f40622093fcc","path":"bre-simple_record","join":"","reltype":"might_have","idlclass":"rmsr","table":"reporter.materialized_simple_record","fields":{"dis_tab":{"title":{"colname":"title","transform":"Bare","aggregate":null,"params":null,"transform_label":"Raw Data","alias":"Title Proper (normalized)","field_doc":"","join":"","datatype":"text","op":"=","op_label":"Equals","op_value":{}}},"filter_tab":{},"aggfilter_tab":{}}}}}'
188     ];
189
190     describe('egReporterTemplateConversionTests', function() {
191         it('initialize for template conversion tests', inject(function(egIDL, egCore) {
192             egIDL.parseIDL();
193         }));
194         it('test template conversion does not crash', inject(function(egIDL) {
195             angular.forEach(v4Templates, function(tmpl, i) {
196                 var rt = new egIDL.rt();
197                 rt.data(tmpl);
198                 rt.name('Test template #' + i);
199                 rt.data = angular.fromJson(rt.data());
200                 expect(rt.data.version).toBeLessThan(5);
201                 reportEditScope.changeCoreSource(rt.data.core_class);
202                 reportEditScope.upgradeTemplate(rt);
203                 expect(rt.data.version).toEqual(5);
204             });
205         }));
206     });
207
208
209 });