changeset 124:5745b0703d35

Rework filters module Filters now register themselves directly on the filters module, rather than the filters module iterating over the filesystem and registering the filters on their behalf. Reviewed-by: almac Review-thread: http://icedtea.classpath.org/pipermail/thermostat/2017-July/024083.html
author Andrew Azores <aazores@redhat.com>
date Wed, 12 Jul 2017 10:33:54 -0400
parents f1079500a01f
children 44578f20a2d8
files src/app/shared/filters/big-int-to-string.filter.js src/app/shared/filters/extract-class.filter.js src/app/shared/filters/filters.module.js src/app/shared/filters/metric-to-big-int.filter.js src/app/shared/filters/metric-to-big-int.filter.spec.js src/app/shared/filters/metric-to-number.filter.js src/app/shared/filters/metric-to-number.filter.spec.js src/app/shared/filters/string-to-number.filter.js src/app/shared/filters/timestamp-to-date.filter.js src/app/shared/filters/timestamp-to-date.filter.spec.js src/app/shared/filters/unix-to-date.filter.js src/app/shared/filters/unix-to-date.filter.spec.js
diffstat 12 files changed, 96 insertions(+), 73 deletions(-) [+]
line wrap: on
line diff
--- a/src/app/shared/filters/big-int-to-string.filter.js	Wed Jul 12 09:30:38 2017 -0400
+++ b/src/app/shared/filters/big-int-to-string.filter.js	Wed Jul 12 10:33:54 2017 -0400
@@ -25,13 +25,16 @@
  * exception statement from your version.
  */
 
-export default function filterProvider () {
+import filterModule from './filters.module.js';
+
+function filterProvider () {
   return val => {
     val = val || 0;
     return val.toFixed();
   };
 }
 
-const filterName = 'bigIntToString';
-
-export { filterName };
+export default angular
+  .module(filterModule)
+  .filter('bigIntToString', filterProvider)
+  .name;
--- a/src/app/shared/filters/extract-class.filter.js	Wed Jul 12 09:30:38 2017 -0400
+++ b/src/app/shared/filters/extract-class.filter.js	Wed Jul 12 10:33:54 2017 -0400
@@ -25,11 +25,14 @@
  * exception statement from your version.
  */
 
-export default function filterProvider (extractClassService) {
+import filterModule from './filters.module.js';
+
+function filterProvider (extractClassService) {
   'ngInject';
   return extractClassService.extract;
 }
 
-const filterName = 'extractClass';
-
-export { filterName };
+export default angular
+  .module(filterModule)
+  .filter('extractClass', filterProvider)
+  .name;
--- a/src/app/shared/filters/filters.module.js	Wed Jul 12 09:30:38 2017 -0400
+++ b/src/app/shared/filters/filters.module.js	Wed Jul 12 10:33:54 2017 -0400
@@ -25,12 +25,11 @@
  * exception statement from your version.
  */
 
-let mod = angular.module('app.filters', ['app.services']);
+import servicesModule from 'shared/services/services.module.js';
+
+export default angular
+  .module('app.filters', [servicesModule])
+  .name;
 
 let req = require.context('./', true, /\.filter\.js/);
-req.keys().map(v => {
-  let f = req(v);
-  mod.filter(f.filterName, f.default);
-});
-
-export default mod.name;
+req.keys().map(req);
--- a/src/app/shared/filters/metric-to-big-int.filter.js	Wed Jul 12 09:30:38 2017 -0400
+++ b/src/app/shared/filters/metric-to-big-int.filter.js	Wed Jul 12 10:33:54 2017 -0400
@@ -25,7 +25,9 @@
  * exception statement from your version.
  */
 
-export default function filterProvider (metricToBigIntService) {
+import filterModule from './filters.module.js';
+
+function filterProvider (metricToBigIntService) {
   'ngInject';
   return (val, scale = 1) => {
     // in case the filter is invoked on asynchronously loaded data and
@@ -42,6 +44,7 @@
   };
 }
 
-const filterName = 'metricToBigInt';
-
-export { filterName };
+export default angular
+  .module(filterModule)
+  .filter('metricToBigInt', filterProvider)
+  .name;
--- a/src/app/shared/filters/metric-to-big-int.filter.spec.js	Wed Jul 12 09:30:38 2017 -0400
+++ b/src/app/shared/filters/metric-to-big-int.filter.spec.js	Wed Jul 12 10:33:54 2017 -0400
@@ -29,13 +29,14 @@
 
 describe('metricToBigInt filter', () => {
 
-  beforeEach(angular.mock.module('app.filters'));
-
   let fn;
-  beforeEach(angular.mock.inject(metricToBigIntFilter => {
-    'ngInject';
-    fn = metricToBigIntFilter;
-  }));
+  beforeEach(() => {
+    angular.mock.module('app.filters');
+    angular.mock.inject(metricToBigIntFilter => {
+      'ngInject';
+      fn = metricToBigIntFilter;
+    });
+  });
 
   it('should return the inner $numberLong property value', () => {
     fn({ $numberLong: '100' }).should.deepEqual(big('100'));
--- a/src/app/shared/filters/metric-to-number.filter.js	Wed Jul 12 09:30:38 2017 -0400
+++ b/src/app/shared/filters/metric-to-number.filter.js	Wed Jul 12 10:33:54 2017 -0400
@@ -25,7 +25,9 @@
  * exception statement from your version.
  */
 
-export default function filterProvider (
+import filterModule from './filters.module.js';
+
+function filterProvider (
   metricToBigIntFilter, bigIntToStringFilter, stringToNumberFilter) {
   'ngInject';
   return (metric, scale = 1) => {
@@ -35,6 +37,7 @@
   }
 }
 
-const filterName = 'metricToNumber';
-
-export { filterName };
+export default angular
+  .module(filterModule)
+  .filter('metricToNumber', filterProvider)
+  .name;
--- a/src/app/shared/filters/metric-to-number.filter.spec.js	Wed Jul 12 09:30:38 2017 -0400
+++ b/src/app/shared/filters/metric-to-number.filter.spec.js	Wed Jul 12 10:33:54 2017 -0400
@@ -25,21 +25,25 @@
  * exception statement from your version.
  */
 
-import metricToNumberProvider from './metric-to-number.filter.js';
-import { filterName } from './metric-to-number.filter.js';
-
-describe('metricToString filter', () => {
+describe('metricToNumber filter', () => {
   let metricToBigIntStub = sinon.stub().returns('a');
   let bigIntToStringStub = sinon.stub().returns('b');
   let stringToNumberStub = sinon.stub().returns('c');
-  let fn = metricToNumberProvider(metricToBigIntStub, bigIntToStringStub, stringToNumberStub);
+  let fn;
 
-  it('should be exported', () => {
-    should.exist(metricToNumberProvider);
-  });
+  beforeEach(() => {
+    angular.mock.module('app.filters');
+    angular.mock.module('app.filters', $provide => {
+      'ngInject';
+      $provide.value('metricToBigIntFilter', metricToBigIntStub);
+      $provide.value('bigIntToStringFilter', bigIntToStringStub);
+      $provide.value('stringToNumberFilter', stringToNumberStub);
+    });
 
-  it('should name itself', () => {
-    filterName.should.equal('metricToNumber');
+    angular.mock.inject(metricToNumberFilter => {
+      'ngInject';
+      fn = metricToNumberFilter;
+    });
   });
 
   it ('should recognize one parameter and apply default', () => {
--- a/src/app/shared/filters/string-to-number.filter.js	Wed Jul 12 09:30:38 2017 -0400
+++ b/src/app/shared/filters/string-to-number.filter.js	Wed Jul 12 10:33:54 2017 -0400
@@ -25,10 +25,13 @@
  * exception statement from your version.
  */
 
-export default function filterProvider () {
+import filterModule from './filters.module.js';
+
+function filterProvider () {
   return val => parseInt(val);
 }
 
-const filterName = 'stringToNumber';
-
-export { filterName };
+export default angular
+  .module(filterModule)
+  .filter('stringToNumber', filterProvider)
+  .name;
--- a/src/app/shared/filters/timestamp-to-date.filter.js	Wed Jul 12 09:30:38 2017 -0400
+++ b/src/app/shared/filters/timestamp-to-date.filter.js	Wed Jul 12 10:33:54 2017 -0400
@@ -25,7 +25,9 @@
  * exception statement from your version.
  */
 
-export default function filterProvider (
+import filterModule from './filters.module.js';
+
+function filterProvider (
   metricToBigIntFilter, bigIntToStringFilter, stringToNumberFilter,
   unixToDateFilter) {
   'ngInject';
@@ -37,7 +39,7 @@
   };
 }
 
-const filterName = 'timeStampToDate';
-
-export { filterName };
-
+export default angular
+  .module(filterModule)
+  .filter('timeStampToDate', filterProvider)
+  .name;
--- a/src/app/shared/filters/timestamp-to-date.filter.spec.js	Wed Jul 12 09:30:38 2017 -0400
+++ b/src/app/shared/filters/timestamp-to-date.filter.spec.js	Wed Jul 12 10:33:54 2017 -0400
@@ -25,27 +25,30 @@
  * exception statement from your version.
  */
 
-import timeStampToDateProvider from './timestamp-to-date.filter.js';
-import { filterName } from './timestamp-to-date.filter.js';
-
 describe('timeStampToDate filter', () => {
   let metricToBigIntStub = sinon.stub().returns('a');
   let bigIntToStringStub = sinon.stub().returns('b');
   let stringToNumberStub = sinon.stub().returns('c');
   let unixToDateStub = sinon.stub().returns('Dec 31, 1969 7:00 PM');
+  let fn;
 
-  it('should be exported', () => {
-    should.exist(timeStampToDateProvider);
-  });
+  beforeEach(() => {
+    angular.mock.module('app.filters');
+    angular.mock.module('app.filters', $provide => {
+      'ngInject';
+      $provide.value('metricToBigIntFilter', metricToBigIntStub);
+      $provide.value('bigIntToStringFilter', bigIntToStringStub);
+      $provide.value('stringToNumberFilter', stringToNumberStub);
+      $provide.value('unixToDateFilter', unixToDateStub);
+    });
 
-  it('should name itself', () => {
-    filterName.should.equal('timeStampToDate');
+    angular.mock.inject(timeStampToDateFilter => {
+      'ngInject';
+      fn = timeStampToDateFilter;
+    });
   });
 
   it('should follow the pipeline', () => {
-    let fn = timeStampToDateProvider(
-      metricToBigIntStub, bigIntToStringStub, stringToNumberStub, unixToDateStub);
-
     let timestamp = 1497624324;
     fn(timestamp).should.equal('Dec 31, 1969 7:00 PM');
     metricToBigIntStub.should.be.calledWith(timestamp);
--- a/src/app/shared/filters/unix-to-date.filter.js	Wed Jul 12 09:30:38 2017 -0400
+++ b/src/app/shared/filters/unix-to-date.filter.js	Wed Jul 12 10:33:54 2017 -0400
@@ -25,14 +25,18 @@
  * exception statement from your version.
  */
 
+import filterModule from './filters.module.js';
 import moment from 'moment';
 
-export default function filterProvider (formatter = moment) {
+function filterProvider (formatter = moment) {
   return (timestamp, format = 'lll') => {
     return formatter(timestamp).format(format);
   };
 }
 
-const filterName = 'unixToDate';
+export {filterProvider};
 
-export { filterName };
+export default angular
+  .module(filterModule)
+  .filter('unixToDate', filterProvider)
+  .name;
--- a/src/app/shared/filters/unix-to-date.filter.spec.js	Wed Jul 12 09:30:38 2017 -0400
+++ b/src/app/shared/filters/unix-to-date.filter.spec.js	Wed Jul 12 10:33:54 2017 -0400
@@ -25,30 +25,25 @@
  * exception statement from your version.
  */
 
-import unixToDateProvider from './unix-to-date.filter.js';
-import { filterName } from './unix-to-date.filter.js';
+import {filterProvider} from './unix-to-date.filter.js';
 
 describe('unixToDate filter', () => {
   let formatSpy = sinon.spy();
   let momentStub = sinon.stub().returns({ format: formatSpy });
 
   it('should be exported', () => {
-    should.exist(unixToDateProvider);
-  });
-
-  it('should name itself', () => {
-    filterName.should.equal('unixToDate');
+    should.exist(filterProvider);
   });
 
   it('should provide a timestamp formatting function', () => {
-    let fn = unixToDateProvider();
+    let fn = filterProvider();
     should.exist(fn);
     fn.should.be.a.Function();
   });
 
   it('should use the provided \'moment\' & format', () => {
     let timestamp = 450000;
-    let fn = unixToDateProvider(momentStub);
+    let fn = filterProvider(momentStub);
     fn(timestamp);
 
     momentStub.should.be.calledWith(timestamp);
@@ -57,13 +52,13 @@
 
   it('should accept alternate time formats', () => {
     let timestamp = 450000;
-    let fn = unixToDateProvider(momentStub);
+    let fn = filterProvider(momentStub);
     fn(timestamp, 'LTS');
     formatSpy.should.be.calledWith('LTS');
   });
 
   it('should allow caller to supply format', () => {
-    let fn = unixToDateProvider(momentStub);
+    let fn = filterProvider(momentStub);
     fn(100, 'fooFormat');
     momentStub.should.be.calledWith(100);
     formatSpy.should.be.calledWith('fooFormat');