From a84df34b554d2b722638447f614c03986e98acd5 Mon Sep 17 00:00:00 2001 From: Eric Hulburd Date: Fri, 19 Feb 2016 15:42:10 -0600 Subject: [PATCH] refactor client models to use lokijs --- client/lib/databasable.js | 30 +++- client/models/energy_datum.js | 20 +-- client/models/house.js | 152 +++++++--------- client/models/power_datum.js | 21 +-- shared/utils/{date.js => date_range.js} | 10 +- .../date.test.js => utils/date_range.test.js} | 166 ++++++++---------- 6 files changed, 172 insertions(+), 227 deletions(-) rename shared/utils/{date.js => date_range.js} (96%) rename spec/shared/{util/date.test.js => utils/date_range.test.js} (71%) diff --git a/client/lib/databasable.js b/client/lib/databasable.js index 673d0cb..d42932f 100644 --- a/client/lib/databasable.js +++ b/client/lib/databasable.js @@ -1,12 +1,18 @@ +import Loki from 'lokijs'; +import LokiIndexedAdapter from 'loki/loki-indexed-adapter'; + const DEFAULTS = { - adapter: '' + autosave: false }; var databasable = { accessDb: function(db_name, opts){ var databasable = this; - opts = Object.assign(Object.assign({}, DEFAULTS), opts || {}); + opts = Object.assign(Object.assign({ + persistenceMethod: 'adapter', + persistenceAdapter: new LokiIndexedAdapter(db_name) + }, DEFAULTS), opts || {}); return new Promise((fnResolve, fnReject){ if (!databasable.db) { databasable.db = new Loki(db_name, opts); @@ -26,9 +32,9 @@ var databasable = { } }, - collection(collection_name, options){ + collection: function(collection_name, options){ var databasable = this; - databasable.accessDb() + return databasable.accessDb() .then((db)=>{ var collection = db.getCollection(collection_name) if (!collection){ @@ -38,6 +44,22 @@ var databasable = { }); } + rangeToLokiParams: function(attr, range){ + var date_params = {}; + if (range[0] !== undefined && range[0] !== undefined){ + var start_condition = {}, + end_condition = {}; + date_params['$and'] = [start_condition, end_condition]; + start_condition[attr] = {'$lt': range[1]}; + end_condition[attr] = {'$lt': range[1]}; + } else if (range[0] !== undefined) { + date_params[attr] = {'$gt': range[0]} + } else if (range[1] !== undefined) { + date_params[attr] = {'$lt': range[1]} + } + return date_params; + } + }; export default databaseable; diff --git a/client/models/energy_datum.js b/client/models/energy_datum.js index dbc68c6..5347cf1 100644 --- a/client/models/energy_datum.js +++ b/client/models/energy_datum.js @@ -1,6 +1,11 @@ import extend from 'extend'; import moment from 'moment-timezone'; +const NAME = 'EnergyDatum'; +const COLLECTION_DEFAULTS = { + indices: ['day'] +}; + class EnergyDatum { constructor(data, house){ var energy_datum = this; @@ -36,20 +41,9 @@ class EnergyDatum { return Math.round(energy_datum.data.production); } - update(data){ - var energy_datum = this, - house = energy_datum.house; - if (data.day) data.day = moment.tz(data.day, house.data.timezone); - extend(energy_datum.data, data); - } - - static updateOrInitialize(data, house){ - var energy_datum = EnergyDatum.store.get(data.id); - if (energy_datum) energy_datum.update(data); - return energy_datum || new EnergyDatum(data, house) - } } -EnergyDatum.store = new Map(); +EnergyDatum.NAME = NAME; +EnergyDatum.COLLECTION_DEFAULTS = COLLECTION_DEFAULTS; export default EnergyDatum; diff --git a/client/models/house.js b/client/models/house.js index d4bb143..e9855ff 100644 --- a/client/models/house.js +++ b/client/models/house.js @@ -6,8 +6,10 @@ import EnergyDatum from './energy_datum'; import PowerDataApi from './../api/power_data'; import EnergyDataApi from './../api/energy_data'; import HousesApi from './../api/houses'; -import ArrayUtil from './../../shared/utils/array' -import MathUtil from './../../shared/utils/math' +import ArrayUtil from './../../shared/utils/array'; +import MathUtil from './../../shared/utils/math'; +import DateRange from './../../shared/utils/date_range'; +import Databasable from './../lib/databasable'; class House { @@ -27,6 +29,18 @@ class House { return House.collection() .then((house_collection)=>{ return house_collection.update(house.data); + }); + } + + setPowerData(opts){ + var house = this; + return house.ensurePowerData(opts) + .then(()=>{ + return house.collection(PowerDatum.NAME, PowerDatum.COLLECTION_OPTIONS) + .then((power_collection)=>{ + var params = house.rangeToLokiParams('time', [opts.start_date, opts.end_date]); + house.power_data = power_collection.find(params).map((data)=>{ return new PowerDatum(data); }) + }); }) } @@ -36,29 +50,40 @@ class House { end_date: undefined }, opts || {}); var house = this, - query_ranges = DateUtil.dateOverlaps([opts.start_date, opts.end_date], house.data.query_dates]); + query_ranges = DateRange.addRange([opts.start_date, opts.end_date], house.data.power_datum_ranges); - - - house.collection(PowerDatum.name, {}) - .then((power_collection)=>{ - - }) + if (query_ranges.gaps_filled.length > 0){ + house.getPowerData({dates: query_ranges.gaps_filled}) + .then(()=>{ + house.data.power_datum_ranges = query_ranges.new_ranges; + return house.save(); + }); + } else { return Promise.resolve(); } } getPowerData(params){ var house = this; params.house_id = house.data.id; - return PowerDataApi.index(params).then((power_data)=>{ - return power_data.map((power_datum_data)=>{ - // save new power data into db - // update mins and maxes. - var power_datum = PowerDatum.updateOrInitialize(power_datum_data, house); - house.power_data_collection.set(power_datum.data.time, power_datum); - house.power_data.push(power_datum); - return power_datum; - }); - }); + return PowerDataApi.index(params) + .then((power_data)=>{ + return house.collection(PowerDatum.NAME, PowerDatum.COLLECTION_OPTIONS); + .then((power_collection)=>{ + power_collection.insert(power_data); + return house.db.save(); + }); + }) + } + + setEnergyData(opts){ + var house = this; + return house.ensureEnergyData(opts) + .then(()=>{ + return house.collection(EnergyDatum.NAME, EnergyDatum.COLLECTION_OPTIONS) + .then((energy_collection)=>{ + var params = house.rangeToLokiParams('day', [opts.start_date, opts.end_date]); + house.energy_data = energy_collection.find(params).map((data)=>{ return new EnergyDatum(data); }) + }); + }) } ensureEnergyData(opts){ @@ -67,84 +92,28 @@ class House { end_date: undefined }, opts || {}); var house = this, - date_range = Array.from(house.energy_data_store.keys()), - min_date = Math.min(date_range), - max_date = Math.max(date_range), - query_ranges, cache; + query_ranges = DateRange.addRange([opts.start_date, opts.end_date], house.data.energy_datum_ranges); - if (date_range.length === 0) return house.getEnergyData({dates: [[opts.start_date, opts.end_date]]}) - - query_ranges = MathUtil.minusRange([opts.start_date, opts.end_date], [min_date, max_date]); - - if (!query_ranges) return Promise.resolve(house.power_data); - - cache = ArrayUtil.selectMap(date_range, (datum_day)=>{ - return ArrayUtil.all(query_ranges, (query_range)=>{ - return !MathUtil.inRange(datum_day, query_range); - }); - }, (datum_day)=>{ - return house.energy_data_store.get(datum_day); - }); - - if (query_ranges.length > 0){ - return house.getEnergyData({dates: query_ranges}).then((new_energy_data)=>{ - return new_energy_data_store.concat(cache); - }); - } else return Promise.resolve(cache); + if (query_ranges.gaps_filled.length > 0){ + house.getEnergyData({dates: query_ranges.gaps_filled}) + .then(()=>{ + house.data.energy_datum_ranges = query_ranges.new_ranges; + return house.save(); + }); + } else { return Promise.resolve(); } } getEnergyData(params){ var house = this; params.house_id = house.data.id; - return EnergyDataApi.index(params).then((energy_data)=>{ - return energy_data.map((energy_datum_data)=>{ - var energy_datum = EnergyDatum.updateOrInitialize(energy_datum_data, house); - house.energy_data_store.set(energy_datum.day, energy_datum); - house.energy_data.push(energy_datum); - return energy_datum; - }); - }); - } - - update(data){ - var house = this; - extend(house.data, data); - } - - static updateOrInitialize(id, data){ - var house = PowerDatum.store.get(id); - if (house) house.update(data); - return house || new House(data, data) - } - - static accessDb(){ - return new Promise((fnResolve, fnReject){ - if (!House.db) { - House.db = new Loki('houses', adapter: ''); - House.db.loadDatabase({}, ()=>{ - fnResolve(House.db); - }); - } else { fnResolve(House.db); } - }); - } - - static closeDb(){ - if (House.db){ - House.db.save(); - House.db.close(); - House.db = undefined; - } - } - - static collection(){ - return House.accessDb() - .then((db)=>{ - var house_collection = db.getCollection('houses') - if (!house_collection){ - house_collection = db.addCollection('houses', {indices: ['id']}); - } - return house_collection; - }); + return EnergyDataApi.index(params) + .then((energy_data)=>{ + return house.collection(EnergyDatum.NAME, EnergyDatum.COLLECTION_OPTIONS); + .then((energy_collection)=>{ + energy_collection.insert(energy_data); + return house.db.save(); + }); + }) } static ensureHouses(ids){ @@ -178,4 +147,5 @@ class House { } +Object.assign(House, Databasable); export default House; diff --git a/client/models/power_datum.js b/client/models/power_datum.js index c21acfb..f7e1668 100644 --- a/client/models/power_datum.js +++ b/client/models/power_datum.js @@ -1,6 +1,11 @@ import extend from 'extend'; import moment from 'moment-timezone'; +const NAME = 'PowerDatum'; +const COLLECTION_DEFAULTS = { + indices: ['time'] +}; + class PowerDatum { constructor(data, house){ var power_datum = this; @@ -34,21 +39,9 @@ class PowerDatum { return Math.round(power_datum.data.production); } - update(data){ - var power_datum = this, - house = power_datum.house; - if (data.time) data.time = moment.tz(data.time, house.data.timezone); - extend(power_datum.data, data); - } - - static updateOrInitialize(data, house){ - var power_datum = PowerDatum.store.get(data.id); - if (power_datum) power_datum.update(data); - return power_datum || new PowerDatum(data, house) - } - } -PowerDatum.store = new Map(); +PowerDatum.NAME = NAME; +PowerDatum.COLLECTION_DEFAULTS = COLLECTION_DEFAULTS; export default PowerDatum; diff --git a/shared/utils/date.js b/shared/utils/date_range.js similarity index 96% rename from shared/utils/date.js rename to shared/utils/date_range.js index 93b6815..ab80e14 100644 --- a/shared/utils/date.js +++ b/shared/utils/date_range.js @@ -1,4 +1,4 @@ -class DateUtil { +class DateRange { static addRange(new_range, ranges){ var gaps_filled = [], new_ranges = [], @@ -49,14 +49,6 @@ class DateUtil { return { gaps_filled: gaps_filled, new_ranges: new_ranges } } - static min(date1, date2){ - - } - - static max(date1, date2){ - - } - static gte(date1, date2){ return (date1 === undefined || (date2 !== undefined && date1 >= date2)); } diff --git a/spec/shared/util/date.test.js b/spec/shared/utils/date_range.test.js similarity index 71% rename from spec/shared/util/date.test.js rename to spec/shared/utils/date_range.test.js index 8daa3d9..cbe3dea 100644 --- a/spec/shared/util/date.test.js +++ b/spec/shared/utils/date_range.test.js @@ -1,89 +1,63 @@ "use strict"; -import DateUtil from './../../../shared/utils/date.js'; +import DateRange from './../../../shared/utils/date_range.js'; -function rangeEquivalent(range1, range2){ - if (range1 && !range2 || !range1 && range2) return false - var equivalent = true - if (range1[0] && range2[0]) { - equivalent = range1[0].getTime() === range2[0].getTime(); - } else { - equivalent = range1[0] === range2[0]; - } - if (!equivalent) return false; - if (range1[1] && range2[1]) { - equivalent = range1[1].getTime() === range2[1].getTime(); - } else { - equivalent = range1[1] === range2[1]; - } - return equivalent -} -function rangesEquivalent(a1, a2){ - var match = true; - if (a1.length !== a2.length) return false; - a1.forEach((range, i)=>{ - if (!rangeEquivalent(range, a2[i])) match = false; return false; - }); - return match; -} - - -describe('DateUtil.gte', ()=>{ +describe('DateRange.gte', ()=>{ it('considers undefined as a large date', ()=>{ var date1 = new Date(), date2 = new Date(date1.getTime() + 1000); - expect(DateUtil.gte(undefined, date1)).toEqual(true); - expect(DateUtil.gte(undefined, undefined)).toEqual(true); - expect(DateUtil.gte(date1, undefined)).toEqual(false); - expect(DateUtil.gte(date1, date2)).toEqual(false); - expect(DateUtil.gte(date2, date1)).toEqual(true); + expect(DateRange.gte(undefined, date1)).toEqual(true); + expect(DateRange.gte(undefined, undefined)).toEqual(true); + expect(DateRange.gte(date1, undefined)).toEqual(false); + expect(DateRange.gte(date1, date2)).toEqual(false); + expect(DateRange.gte(date2, date1)).toEqual(true); }); }); -describe('DateUtil.lte', ()=>{ +describe('DateRange.lte', ()=>{ it('considers undefined as a small date', ()=>{ var date1 = new Date(), date2 = new Date(date1.getTime() + 1000); - expect(DateUtil.lte(undefined, date1)).toEqual(true); - expect(DateUtil.lte(undefined, undefined)).toEqual(true); - expect(DateUtil.lte(date1, undefined)).toEqual(false); - expect(DateUtil.lte(date1, date2)).toEqual(true); - expect(DateUtil.lte(date2, date1)).toEqual(false); + expect(DateRange.lte(undefined, date1)).toEqual(true); + expect(DateRange.lte(undefined, undefined)).toEqual(true); + expect(DateRange.lte(date1, undefined)).toEqual(false); + expect(DateRange.lte(date1, date2)).toEqual(true); + expect(DateRange.lte(date2, date1)).toEqual(false); }); }); -describe('DateUtil.addRange', ()=>{ +describe('DateRange.addRange', ()=>{ var date1 = new Date(), - date01 = DateUtil.add(date1, -1000), - date11 = DateUtil.add(date1, 1000), - date2 = DateUtil.add(date1, 2000), - date21 = DateUtil.add(date2, 1000), - date3 = DateUtil.add(date2, 2000), - date31 = DateUtil.add(date3, 1000), - date4 = DateUtil.add(date3, 2000), - date41 = DateUtil.add(date4, 1000), - date5 = DateUtil.add(date4, 2000), - date51 = DateUtil.add(date5, 1000), - date6 = DateUtil.add(date5, 2000), - date61 = DateUtil.add(date6, 1000), - date7 = DateUtil.add(date6, 2000), - date71 = DateUtil.add(date7, 1000); + date01 = DateRange.add(date1, -1000), + date11 = DateRange.add(date1, 1000), + date2 = DateRange.add(date1, 2000), + date21 = DateRange.add(date2, 1000), + date3 = DateRange.add(date2, 2000), + date31 = DateRange.add(date3, 1000), + date4 = DateRange.add(date3, 2000), + date41 = DateRange.add(date4, 1000), + date5 = DateRange.add(date4, 2000), + date51 = DateRange.add(date5, 1000), + date6 = DateRange.add(date5, 2000), + date61 = DateRange.add(date6, 1000), + date7 = DateRange.add(date6, 2000), + date71 = DateRange.add(date7, 1000); describe('no ranges exist', ()=>{ it('returns the new ranges', ()=>{ - var result = DateUtil.addRange([date1, date2], []); - expect(rangesEquivalent(result.gaps_filled, [[date1, date2]])).toBeTruthy(); - expect(rangesEquivalent(result.new_ranges, [[date1, date2]])).toBeTruthy(); + var result = DateRange.addRange([date1, date2], []); + expect(result.gaps_filled).toEqual([[date1, date2]]); + expect(result.new_ranges).toEqual([[date1, date2]]); }); }); describe('infinite range exists', ()=>{ it('returns the infinite range, no gaps filled', ()=>{ - var result = DateUtil.addRange([date1, date2], [[undefined, undefined]]); - expect(rangesEquivalent(result.gaps_filled, [])).toBeTruthy(); - expect(rangesEquivalent(result.new_ranges, [[undefined, undefined]])).toBeTruthy(); + var result = DateRange.addRange([date1, date2], [[undefined, undefined]]); + expect(result.gaps_filled).toEqual([]); + expect(result.new_ranges).toEqual([[undefined, undefined]]); }); }); @@ -94,7 +68,7 @@ describe('DateUtil.addRange', ()=>{ describe('new range low low', ()=>{ var new_range = [undefined, date01]; it('no gaps filled', ()=>{ - var result = DateUtil.addRange(new_range, ranges); + var result = DateRange.addRange(new_range, ranges); expect(result.gaps_filled).toEqual([]) expect(result.new_ranges).toEqual(ranges); }); @@ -103,7 +77,7 @@ describe('DateUtil.addRange', ()=>{ describe('new range low mid', ()=>{ var new_range = [undefined, date31]; it('fills mid gaps', ()=>{ - var result = DateUtil.addRange(new_range, ranges); + var result = DateRange.addRange(new_range, ranges); expect(result.gaps_filled).toEqual([[date1, date2], [date3, date31]]); expect(result.new_ranges).toEqual([[undefined, date31], [date4, date5]]); }); @@ -112,7 +86,7 @@ describe('DateUtil.addRange', ()=>{ describe('new range low high', ()=>{ var new_range = [undefined, date61]; it('fills mid and high gaps', ()=>{ - var result = DateUtil.addRange(new_range, ranges); + var result = DateRange.addRange(new_range, ranges); expect(result.gaps_filled).toEqual([[date1, date2], [date3, date4], [date5, date61]]); expect(result.new_ranges).toEqual([[undefined, date61]]); }); @@ -122,7 +96,7 @@ describe('DateUtil.addRange', ()=>{ describe('new range mid mid', ()=>{ var new_range = [date11, date41]; it('includes gaps', ()=>{ - var result = DateUtil.addRange(new_range, ranges); + var result = DateRange.addRange(new_range, ranges); expect(result.gaps_filled).toEqual([[date11, date2], [date3, date4]]) expect(result.new_ranges).toEqual([[undefined, date1], [date11, date5]]); }); @@ -131,7 +105,7 @@ describe('DateUtil.addRange', ()=>{ describe('new range mid high', ()=>{ var new_range = [date11, date61]; it('includes gaps', ()=>{ - var result = DateUtil.addRange(new_range, ranges); + var result = DateRange.addRange(new_range, ranges); expect(result.gaps_filled).toEqual([[date11, date2], [date3, date4], [date5, date61]]); expect(result.new_ranges).toEqual([[undefined, date1], [date11, date61]]); }); @@ -140,7 +114,7 @@ describe('DateUtil.addRange', ()=>{ describe('new range high high', ()=>{ var new_range = [date5, date61]; it('includes gaps', ()=>{ - var result = DateUtil.addRange(new_range, ranges); + var result = DateRange.addRange(new_range, ranges); expect(result.gaps_filled).toEqual([[date5, date61]]); expect(result.new_ranges).toEqual([[undefined, date1], [date2, date3], [date4, date61]]); }); @@ -154,7 +128,7 @@ describe('DateUtil.addRange', ()=>{ describe('new range low low', ()=>{ var new_range = [undefined, date01]; it('no gaps filled', ()=>{ - var result = DateUtil.addRange(new_range, ranges); + var result = DateRange.addRange(new_range, ranges); expect(result.gaps_filled).toEqual([]) expect(result.new_ranges).toEqual([[undefined, date1]]); }); @@ -163,7 +137,7 @@ describe('DateUtil.addRange', ()=>{ describe('new range low mid', ()=>{ var new_range = [undefined, date1]; it('fills mid gaps', ()=>{ - var result = DateUtil.addRange(new_range, ranges); + var result = DateRange.addRange(new_range, ranges); expect(result.gaps_filled).toEqual([]); expect(result.new_ranges).toEqual([[undefined, date1]]); }); @@ -172,7 +146,7 @@ describe('DateUtil.addRange', ()=>{ describe('new range low high', ()=>{ var new_range = [undefined, date61]; it('fills mid and high gaps', ()=>{ - var result = DateUtil.addRange(new_range, ranges); + var result = DateRange.addRange(new_range, ranges); expect(result.gaps_filled).toEqual([[date1, date61]]); expect(result.new_ranges).toEqual([[undefined, date61]]); }); @@ -182,7 +156,7 @@ describe('DateUtil.addRange', ()=>{ describe('new range mid mid', ()=>{ var new_range = [date01, date1]; it('includes gaps', ()=>{ - var result = DateUtil.addRange(new_range, ranges); + var result = DateRange.addRange(new_range, ranges); expect(result.gaps_filled).toEqual([]) expect(result.new_ranges).toEqual([[undefined, date1]]); }); @@ -191,7 +165,7 @@ describe('DateUtil.addRange', ()=>{ describe('new range mid high', ()=>{ var new_range = [date1, date61]; it('includes gaps', ()=>{ - var result = DateUtil.addRange(new_range, ranges); + var result = DateRange.addRange(new_range, ranges); expect(result.gaps_filled).toEqual([[date1, date61]]); expect(result.new_ranges).toEqual([[undefined, date61]]); }); @@ -200,7 +174,7 @@ describe('DateUtil.addRange', ()=>{ describe('new range high high', ()=>{ var new_range = [date5, date61]; it('includes gaps', ()=>{ - var result = DateUtil.addRange(new_range, ranges); + var result = DateRange.addRange(new_range, ranges); expect(result.gaps_filled).toEqual([[date5, date61]]); expect(result.new_ranges).toEqual([[undefined, date1], [date5, date61]]); }); @@ -215,7 +189,7 @@ describe('DateUtil.addRange', ()=>{ describe('new range low low', ()=>{ var new_range = [undefined, date01]; it('no gaps filled', ()=>{ - var result = DateUtil.addRange(new_range, ranges); + var result = DateRange.addRange(new_range, ranges); expect(result.gaps_filled).toEqual([[undefined, date01]]); expect(result.new_ranges).toEqual([[undefined, date01], [date1, date2], [date3, date4], [date5, undefined]]); }); @@ -224,7 +198,7 @@ describe('DateUtil.addRange', ()=>{ describe('new range low mid', ()=>{ var new_range = [undefined, date3]; it('fills mid gaps', ()=>{ - var result = DateUtil.addRange(new_range, ranges); + var result = DateRange.addRange(new_range, ranges); expect(result.gaps_filled).toEqual([[undefined, date1], [date2, date3]]); expect(result.new_ranges).toEqual([[undefined, date4], [date5, undefined]]); }); @@ -233,7 +207,7 @@ describe('DateUtil.addRange', ()=>{ describe('new range low high', ()=>{ var new_range = [undefined, date61]; it('fills mid and high gaps', ()=>{ - var result = DateUtil.addRange(new_range, ranges); + var result = DateRange.addRange(new_range, ranges); expect(result.gaps_filled).toEqual([[undefined, date1], [date2, date3], [date4, date5]]); expect(result.new_ranges).toEqual([[undefined, undefined]]); }); @@ -242,7 +216,7 @@ describe('DateUtil.addRange', ()=>{ describe('new range mid mid', ()=>{ var new_range = [date1, date41]; it('includes gaps', ()=>{ - var result = DateUtil.addRange(new_range, ranges); + var result = DateRange.addRange(new_range, ranges); expect(result.gaps_filled).toEqual([[date2, date3], [date4, date41]]); expect(result.new_ranges).toEqual([[date1, date41], [date5, undefined]]); }); @@ -251,7 +225,7 @@ describe('DateUtil.addRange', ()=>{ describe('new range mid high', ()=>{ var new_range = [date31, date61]; it('includes gaps', ()=>{ - var result = DateUtil.addRange(new_range, ranges); + var result = DateRange.addRange(new_range, ranges); expect(result.gaps_filled).toEqual([[date4, date5]]); expect(result.new_ranges).toEqual([[date1, date2], [date3, undefined]]); }); @@ -260,7 +234,7 @@ describe('DateUtil.addRange', ()=>{ describe('new range high high', ()=>{ var new_range = [date5, date61]; it('includes gaps', ()=>{ - var result = DateUtil.addRange(new_range, ranges); + var result = DateRange.addRange(new_range, ranges); expect(result.gaps_filled).toEqual([]); expect(result.new_ranges).toEqual([[date1, date2], [date3, date4], [date5, undefined]]); }); @@ -273,7 +247,7 @@ describe('DateUtil.addRange', ()=>{ describe('new range low low', ()=>{ var new_range = [undefined, date01]; it('no gaps filled', ()=>{ - var result = DateUtil.addRange(new_range, ranges); + var result = DateRange.addRange(new_range, ranges); expect(result.gaps_filled).toEqual([[undefined, date01]]); expect(result.new_ranges).toEqual([[undefined, date01], [date1, undefined]]); }); @@ -282,7 +256,7 @@ describe('DateUtil.addRange', ()=>{ describe('new range low mid', ()=>{ var new_range = [undefined, date1]; it('fills mid gaps', ()=>{ - var result = DateUtil.addRange(new_range, ranges); + var result = DateRange.addRange(new_range, ranges); expect(result.gaps_filled).toEqual([[undefined, date1]]); expect(result.new_ranges).toEqual([[undefined, undefined]]); }); @@ -291,7 +265,7 @@ describe('DateUtil.addRange', ()=>{ describe('new range low high', ()=>{ var new_range = [undefined, date61]; it('fills mid and high gaps', ()=>{ - var result = DateUtil.addRange(new_range, ranges); + var result = DateRange.addRange(new_range, ranges); expect(result.gaps_filled).toEqual([[undefined, date1]]); expect(result.new_ranges).toEqual([[undefined, undefined]]); }); @@ -300,7 +274,7 @@ describe('DateUtil.addRange', ()=>{ describe('new range mid mid', ()=>{ var new_range = [date1, date1]; it('includes gaps', ()=>{ - var result = DateUtil.addRange(new_range, ranges); + var result = DateRange.addRange(new_range, ranges); expect(result.gaps_filled).toEqual([]); expect(result.new_ranges).toEqual([[date1, undefined]]); }); @@ -309,7 +283,7 @@ describe('DateUtil.addRange', ()=>{ describe('new range mid high', ()=>{ var new_range = [date1, undefined]; it('includes gaps', ()=>{ - var result = DateUtil.addRange(new_range, ranges); + var result = DateRange.addRange(new_range, ranges); expect(result.gaps_filled).toEqual([]); expect(result.new_ranges).toEqual([[date1, undefined]]); }); @@ -318,7 +292,7 @@ describe('DateUtil.addRange', ()=>{ describe('new range high high', ()=>{ var new_range = [date5, undefined]; it('includes gaps', ()=>{ - var result = DateUtil.addRange(new_range, ranges); + var result = DateRange.addRange(new_range, ranges); expect(result.gaps_filled).toEqual([]); expect(result.new_ranges).toEqual([[date1, undefined]]); }); @@ -334,7 +308,7 @@ describe('DateUtil.addRange', ()=>{ describe('new range low low', ()=>{ var new_range = [undefined, date01]; it('no gaps filled', ()=>{ - var result = DateUtil.addRange(new_range, ranges); + var result = DateRange.addRange(new_range, ranges); expect(result.gaps_filled).toEqual([[undefined, date01]]); expect(result.new_ranges).toEqual([[undefined, date01], [date1, date2], [date3, date4], [date5, date6]]); }); @@ -343,7 +317,7 @@ describe('DateUtil.addRange', ()=>{ describe('new range low mid', ()=>{ var new_range = [undefined, date41]; it('fills mid gaps', ()=>{ - var result = DateUtil.addRange(new_range, ranges); + var result = DateRange.addRange(new_range, ranges); expect(result.gaps_filled).toEqual([[undefined, date1], [date2, date3], [date4, date41]]); expect(result.new_ranges).toEqual([[undefined, date41], [date5, date6]]); }); @@ -352,7 +326,7 @@ describe('DateUtil.addRange', ()=>{ describe('new range low high', ()=>{ var new_range = [undefined, date61]; it('fills mid and high gaps', ()=>{ - var result = DateUtil.addRange(new_range, ranges); + var result = DateRange.addRange(new_range, ranges); expect(result.gaps_filled).toEqual([[undefined, date1], [date2, date3], [date4, date5], [date6, date61]]); expect(result.new_ranges).toEqual([[undefined, date61]]); }); @@ -361,7 +335,7 @@ describe('DateUtil.addRange', ()=>{ describe('new range mid mid', ()=>{ var new_range = [date11, date41]; it('includes gaps', ()=>{ - var result = DateUtil.addRange(new_range, ranges); + var result = DateRange.addRange(new_range, ranges); expect(result.gaps_filled).toEqual([[date2, date3], [date4, date41]]); expect(result.new_ranges).toEqual([[date1, date41], [date5, date6]]); }); @@ -370,7 +344,7 @@ describe('DateUtil.addRange', ()=>{ describe('new range mid high', ()=>{ var new_range = [date31, undefined]; it('includes gaps', ()=>{ - var result = DateUtil.addRange(new_range, ranges); + var result = DateRange.addRange(new_range, ranges); expect(result.gaps_filled).toEqual([[date4, date5], [date6, undefined]]); expect(result.new_ranges).toEqual([[date1, date2], [date3, undefined]]); }); @@ -379,7 +353,7 @@ describe('DateUtil.addRange', ()=>{ describe('new range high high', ()=>{ var new_range = [date61, undefined]; it('includes gaps', ()=>{ - var result = DateUtil.addRange(new_range, ranges); + var result = DateRange.addRange(new_range, ranges); expect(result.gaps_filled).toEqual([[date61, undefined]]); expect(result.new_ranges).toEqual([[date1, date2], [date3, date4], [date5, date6], [date61, undefined]]); }); @@ -393,7 +367,7 @@ describe('DateUtil.addRange', ()=>{ describe('new range low low', ()=>{ var new_range = [undefined, date01]; it('no gaps filled', ()=>{ - var result = DateUtil.addRange(new_range, ranges); + var result = DateRange.addRange(new_range, ranges); expect(result.gaps_filled).toEqual([[undefined, date01]]); expect(result.new_ranges).toEqual([[undefined, date01], [date1, date2]]); }); @@ -402,7 +376,7 @@ describe('DateUtil.addRange', ()=>{ describe('new range low mid', ()=>{ var new_range = [undefined, date11]; it('fills mid gaps', ()=>{ - var result = DateUtil.addRange(new_range, ranges); + var result = DateRange.addRange(new_range, ranges); expect(result.gaps_filled).toEqual([[undefined, date1]]); expect(result.new_ranges).toEqual([[undefined, date2]]); }); @@ -411,7 +385,7 @@ describe('DateUtil.addRange', ()=>{ describe('new range low high', ()=>{ var new_range = [undefined, date61]; it('fills mid and high gaps', ()=>{ - var result = DateUtil.addRange(new_range, ranges); + var result = DateRange.addRange(new_range, ranges); expect(result.gaps_filled).toEqual([[undefined, date1], [date2, date61]]); expect(result.new_ranges).toEqual([[undefined, date61]]); }); @@ -420,7 +394,7 @@ describe('DateUtil.addRange', ()=>{ describe('new range mid mid', ()=>{ var new_range = [date11, date2]; it('includes gaps', ()=>{ - var result = DateUtil.addRange(new_range, ranges); + var result = DateRange.addRange(new_range, ranges); expect(result.gaps_filled).toEqual([]); expect(result.new_ranges).toEqual([[date1, date2]]); }); @@ -429,7 +403,7 @@ describe('DateUtil.addRange', ()=>{ describe('new range mid high', ()=>{ var new_range = [date11, undefined]; it('includes gaps', ()=>{ - var result = DateUtil.addRange(new_range, ranges); + var result = DateRange.addRange(new_range, ranges); expect(result.gaps_filled).toEqual([[date2, undefined]]); expect(result.new_ranges).toEqual([[date1, undefined]]); }); @@ -438,7 +412,7 @@ describe('DateUtil.addRange', ()=>{ describe('new range high high', ()=>{ var new_range = [date61, undefined]; it('includes gaps', ()=>{ - var result = DateUtil.addRange(new_range, ranges); + var result = DateRange.addRange(new_range, ranges); expect(result.gaps_filled).toEqual([[date61, undefined]]); expect(result.new_ranges).toEqual([[date1, date2], [date61, undefined]]); });