offline-editor-js/test/spec/OfflineStoreSpec.js

635 lines
24 KiB
JavaScript
Executable File

describe("Initialize Offline Library", function() {
it("validate map", function(){
expect(map.id).toEqual("map");
expect(map).toEqual(jasmine.any(Object));
})
it("get graphics layer by id", function(){
var layer = offlineStore.getGraphicsLayerById(6);
expect(layer).toEqual(jasmine.any(Object));
})
it("provide local storage in MBs", function() {
var mb = offlineStore.getlocalStorageUsed();
expect(mb).toEqual(jasmine.any(Number));
});
it("delete local storage", function() {
var store = offlineStore._deleteTempLocalStore();
expect(store).toEqual(true);
})
it("check add enum", function(){
var add = offlineStore.enum().ADD;
expect(add).toEqual("add");
})
it("check update enum", function(){
var add = offlineStore.enum().UPDATE;
expect(add).toEqual("update");
})
it("check delete enum", function(){
var add = offlineStore.enum().DELETE;
expect(add).toEqual("delete");
})
it("get local storage is null", function() {
var store = offlineStore.getStore();
expect(store).toBeNull();
})
it("delete local storage index", function() {
var index = offlineStore._deleteLocalStoreIndex();
expect(index).toEqual(true);
})
it("get local storage index is null", function() {
var index = offlineStore.getLocalStoreIndex();
expect(index).toBeNull();
})
it("check internet", function() {
var net = offlineStore.getInternet();
expect(net).toEqual(true);
})
it("validate feature layer available", function() {
var layer = offlineStore.layers[0];
expect(layer.type).toEqual("Feature Layer");
})
});
describe("Serialize/Deserialize Graphic - simple Point Graphic", function(){
var jsonFromArr;
it("serialize a graphic", function(){
var json = offlineStore._serializeGraphic(simplePtGraphic,landusePointLayer,offlineStore.enum().ADD);
expect(json).not.toBeUndefined();
})
it("deserialize a graphic", function(){
var json = offlineStore._serializeGraphic(simplePtGraphic,landusePointLayer,offlineStore.enum().ADD);
var portion = json.substring(0, json.length - 3); //remove tokens
var graphic = offlineStore._deserializeGraphic(portion);
expect(graphic.graphic).toEqual(jasmine.any(Object));
expect(graphic.layer).toEqual(jasmine.any(Number));
expect(graphic.enumValue).toEqual(jasmine.any(String));
})
});
describe("Serialize/Deserialize Graphic - complex Point Graphic", function(){
it("serialize a graphic", function(){
var json = offlineStore._serializeGraphic(complexPtGraphic,landusePointLayer,offlineStore.enum().ADD);
expect(json).not.toBeUndefined();
})
it("deserialize a graphic", function(){
var json = offlineStore._serializeGraphic(complexPtGraphic,landusePointLayer,offlineStore.enum().ADD);
var portion = json.substring(0, json.length - 3); //remove tokens
var graphic = offlineStore._deserializeGraphic(portion);
expect(graphic.graphic).toEqual(jasmine.any(Object));
expect(graphic.layer).toEqual(jasmine.any(Number));
expect(graphic.enumValue).toEqual(jasmine.any(String));
})
});
describe("Serialize/Deserialize Graphic - simple Line Graphic", function(){
it("serialize a graphic", function(){
var json = offlineStore._serializeGraphic(simpleLineGraphic,landusePointLayer,offlineStore.enum().ADD);
expect(json).not.toBeUndefined();
})
it("deserialize a graphic", function(){
var json = offlineStore._serializeGraphic(simpleLineGraphic,landusePointLayer,offlineStore.enum().ADD);
var portion = json.substring(0, json.length - 3); //remove tokens
var graphic = offlineStore._deserializeGraphic(portion);
expect(graphic.graphic).toEqual(jasmine.any(Object));
expect(graphic.layer).toEqual(jasmine.any(Number));
expect(graphic.enumValue).toEqual(jasmine.any(String));
})
});
describe("Serialize/Deserialize Graphic - complex Line Graphic", function(){
it("serialize a graphic", function(){
var json = offlineStore._serializeGraphic(complexLineGraphic,landusePointLayer,offlineStore.enum().ADD);
expect(json).not.toBeUndefined();
})
it("deserialize a graphic", function(){
var json = offlineStore._serializeGraphic(complexLineGraphic,landusePointLayer,offlineStore.enum().ADD);
var portion = json.substring(0, json.length - 3); //remove tokens
var graphic = offlineStore._deserializeGraphic(portion);
expect(graphic.graphic).toEqual(jasmine.any(Object));
expect(graphic.layer).toEqual(jasmine.any(Number));
expect(graphic.enumValue).toEqual(jasmine.any(String));
})
});
describe("Serialize/Deserialize Graphic - simple Polygon Graphic", function(){
it("serialize a graphic", function(){
var json = offlineStore._serializeGraphic(simplePolygonGraphic,landusePointLayer,offlineStore.enum().ADD);
expect(json).not.toBeUndefined();
})
it("deserialize a graphic", function(){
var json = offlineStore._serializeGraphic(simplePolygonGraphic,landusePointLayer,offlineStore.enum().ADD);
var portion = json.substring(0, json.length - 3); //remove tokens
var graphic = offlineStore._deserializeGraphic(portion);
expect(graphic.graphic).toEqual(jasmine.any(Object));
expect(graphic.layer).toEqual(jasmine.any(Number));
expect(graphic.enumValue).toEqual(jasmine.any(String));
})
});
describe("Serialize/Deserialize Graphic - complex Polygon Graphic", function(){
it("serialize a graphic", function(){
var json = offlineStore._serializeGraphic(complexPolygonGraphic,landusePointLayer,offlineStore.enum().ADD);
expect(json).not.toBeUndefined();
})
it("deserialize a graphic", function(){
var json = offlineStore._serializeGraphic(complexPolygonGraphic,landusePointLayer,offlineStore.enum().ADD);
var portion = json.substring(0, json.length - 3); //remove tokens
var graphic = offlineStore._deserializeGraphic(portion);
expect(graphic.graphic).toEqual(jasmine.any(Object));
expect(graphic.layer).toEqual(jasmine.any(Number));
expect(graphic.enumValue).toEqual(jasmine.any(String));
})
});
describe("Validate local storage functionality - simple Point Graphic",function(){
it("set item in local storage", function(){
var json = offlineStore._serializeGraphic(simplePtGraphic,landusePointLayer,offlineStore.enum().ADD);
var setItem = offlineStore._setTempLocalStore(json);
expect(setItem).toEqual(true);
})
it("get item directly from local storage", function(){
var data = localStorage.getItem(offlineStore._localEnum().STORAGE_KEY);
expect(data).not.toBeNull();
})
it("get item from local storage using getStore()", function(){
var data = offlineStore.getStore();
var type = Object.prototype.toString.call( data ); // === '[object Array]';
expect(type).toEqual('[object Array]');
})
it("add item to existing local storage - duplicate", function(){
var json = offlineStore._serializeGraphic(simplePtGraphic,landusePointLayer,offlineStore.enum().ADD);
var test = offlineStore._updateExistingLocalStore(json);
expect(test.duplicate).toBe(true);
})
it("add additional item to local storage - not a duplicate", function(){
var json = offlineStore._serializeGraphic(simplePolygonGraphic,landusePointLayer,offlineStore.enum().ADD);
var test = offlineStore._updateExistingLocalStore(json);
expect(test.success).toBe(true);
})
it("get item from local storage using getStore()", function(){
var data = offlineStore.getStore();
var type = Object.prototype.toString.call( data ); // === '[object Array]';
expect(type).toEqual('[object Array]');
})
it("delete local storage", function() {
var store = offlineStore._deleteTempLocalStore();
expect(store).toEqual(true);
})
})
describe("Validate local storage functionality - delete single Point",function(){
var jsonArray;
it("re-serialize a graphics array", function(){
jsonFromArr = offlineStore._reserializeGraphicsArray(serializedGraphicsArr);
expect(jsonFromArr).toEqual(jasmine.any(String));
})
it("set re-serialized graphic in local storage", function(){
var setItem = offlineStore._setTempLocalStore(jsonFromArr);
expect(setItem).toEqual(true);
})
it("get re-serialized graphic from local storage", function(){
var data = localStorage.getItem(offlineStore._localEnum().STORAGE_KEY);
expect(data).not.toBeNull();
})
it("delete one graphic from local storage", function(){
var value = null;
var attempt = offlineStore._deleteObjectIdTempLocalStore("42749",function(evt){
value = evt;
}.bind(this))
expect(value).toEqual(true);
})
it("delete local storage", function(){
var attempt = offlineStore._deleteTempLocalStore();
expect(attempt).toEqual(true);
})
it("re-serialize a graphics array", function(){
jsonFromArr = offlineStore._reserializeGraphicsArray(serializedGraphicsArr);
expect(jsonFromArr).toEqual(jasmine.any(String));
})
it("set re-serialized graphic in local storage", function(){
var setItem = offlineStore._setTempLocalStore(jsonFromArr);
expect(setItem).toEqual(true);
})
it("get re-serialized graphic from local storage", function(){
var data = localStorage.getItem(offlineStore._localEnum().STORAGE_KEY);
expect(data).not.toBeNull();
})
it("delete one graphic from local storage", function(){
var value = null;
offlineStore._deleteItemTempLocalStore(serializedGraphicsArr[0],function(evt){
value = evt;
}.bind(this))
expect(value).toEqual(true);
})
})
describe("Validate local storage functionality - complex Point Graphic",function(){
it("set item in local storage", function(){
var json = offlineStore._serializeGraphic(complexPtGraphic,landusePointLayer,offlineStore.enum().ADD);
var setItem = offlineStore._setTempLocalStore(json);
expect(setItem).toEqual(true);
})
it("get item directly from local storage", function(){
var data = localStorage.getItem(offlineStore._localEnum().STORAGE_KEY);
expect(data).not.toBeNull();
})
it("get item from local storage using getStore()", function(){
var data = offlineStore.getStore();
var type = Object.prototype.toString.call( data ); // === '[object Array]';
expect(type).toEqual('[object Array]');
})
it("add item to existing local storage - duplicate", function(){
var json = offlineStore._serializeGraphic(complexPtGraphic,landusePointLayer,offlineStore.enum().ADD);
var test = offlineStore._updateExistingLocalStore(json);
expect(test.duplicate).toBe(true);
})
it("add additional item to local storage - not a duplicate", function(){
var json = offlineStore._serializeGraphic(simplePolygonGraphic,landusePointLayer,offlineStore.enum().ADD);
var test = offlineStore._updateExistingLocalStore(json);
expect(test.success).toBe(true);
})
it("get item from local storage using getStore()", function(){
var data = offlineStore.getStore();
var type = Object.prototype.toString.call( data ); // === '[object Array]';
expect(type).toEqual('[object Array]');
})
it("delete local storage", function() {
var store = offlineStore._deleteTempLocalStore();
expect(store).toEqual(true);
})
})
describe("Validate local storage functionality - simple Line Graphic",function(){
it("set item in local storage", function(){
var json = offlineStore._serializeGraphic(simpleLineGraphic,landusePointLayer,offlineStore.enum().ADD);
var setItem = offlineStore._setTempLocalStore(json);
expect(setItem).toEqual(true);
})
it("get item directly from local storage", function(){
var data = localStorage.getItem(offlineStore._localEnum().STORAGE_KEY);
expect(data).not.toBeNull();
})
it("get item from local storage using getStore()", function(){
var data = offlineStore.getStore();
var type = Object.prototype.toString.call( data ); // === '[object Array]';
expect(type).toEqual('[object Array]');
})
it("add item to existing local storage - duplicate", function(){
var json = offlineStore._serializeGraphic(simpleLineGraphic,landusePointLayer,offlineStore.enum().ADD);
var test = offlineStore._updateExistingLocalStore(json);
expect(test.duplicate).toBe(true);
})
it("add additional item to local storage - not a duplicate", function(){
var json = offlineStore._serializeGraphic(simplePolygonGraphic,landusePointLayer,offlineStore.enum().ADD);
var test = offlineStore._updateExistingLocalStore(json);
expect(test.success).toBe(true);
})
it("get item from local storage using getStore()", function(){
var data = offlineStore.getStore();
var type = Object.prototype.toString.call( data ); // === '[object Array]';
expect(type).toEqual('[object Array]');
})
it("delete local storage", function() {
var store = offlineStore._deleteTempLocalStore();
expect(store).toEqual(true);
})
})
describe("Validate local storage functionality - complex Line Graphic",function(){
it("set item in local storage", function(){
var json = offlineStore._serializeGraphic(complexLineGraphic,landusePointLayer,offlineStore.enum().ADD);
var setItem = offlineStore._setTempLocalStore(json);
expect(setItem).toEqual(true);
})
it("get item directly from local storage", function(){
var data = localStorage.getItem(offlineStore._localEnum().STORAGE_KEY);
expect(data).not.toBeNull();
})
it("get item from local storage using getStore()", function(){
var data = offlineStore.getStore();
var type = Object.prototype.toString.call( data ); // === '[object Array]';
expect(type).toEqual('[object Array]');
})
it("add item to existing local storage - duplicate", function(){
var json = offlineStore._serializeGraphic(complexLineGraphic,landusePointLayer,offlineStore.enum().ADD);
var test = offlineStore._updateExistingLocalStore(json);
expect(test.duplicate).toBe(true);
})
it("add additional item to local storage - not a duplicate", function(){
var json = offlineStore._serializeGraphic(simplePolygonGraphic,landusePointLayer,offlineStore.enum().ADD);
var test = offlineStore._updateExistingLocalStore(json);
expect(test.success).toBe(true);
})
it("get item from local storage using getStore()", function(){
var data = offlineStore.getStore();
var type = Object.prototype.toString.call( data ); // === '[object Array]';
expect(type).toEqual('[object Array]');
})
it("delete local storage", function() {
var store = offlineStore._deleteTempLocalStore();
expect(store).toEqual(true);
})
})
describe("Validate local storage functionality - simple Polygon Graphic",function(){
it("set item in local storage", function(){
var json = offlineStore._serializeGraphic(simplePolygonGraphic,landusePointLayer,offlineStore.enum().ADD);
var setItem = offlineStore._setTempLocalStore(json);
expect(setItem).toEqual(true);
})
it("get item directly from local storage", function(){
var data = localStorage.getItem(offlineStore._localEnum().STORAGE_KEY);
expect(data).not.toBeNull();
})
it("get item from local storage using getStore()", function(){
var data = offlineStore.getStore();
var type = Object.prototype.toString.call( data ); // === '[object Array]';
expect(type).toEqual('[object Array]');
})
it("add item to existing local storage - duplicate", function(){
var json = offlineStore._serializeGraphic(simplePolygonGraphic,landusePointLayer,offlineStore.enum().ADD);
var test = offlineStore._updateExistingLocalStore(json);
expect(test.duplicate).toBe(true);
})
it("add additional item to local storage - not a duplicate", function(){
var json = offlineStore._serializeGraphic(complexPolygonGraphic,landusePointLayer,offlineStore.enum().ADD);
var test = offlineStore._updateExistingLocalStore(json);
expect(test.success).toBe(true);
})
it("get item from local storage using getStore()", function(){
var data = offlineStore.getStore();
var type = Object.prototype.toString.call( data ); // === '[object Array]';
expect(type).toEqual('[object Array]');
})
it("delete local storage", function() {
var store = offlineStore._deleteTempLocalStore();
expect(store).toEqual(true);
})
})
describe("Validate local storage functionality - complex Polygon Graphic",function(){
it("set item in local storage", function(){
var json = offlineStore._serializeGraphic(complexPolygonGraphic,landusePointLayer,offlineStore.enum().ADD);
var setItem = offlineStore._setTempLocalStore(json);
expect(setItem).toEqual(true);
})
it("get item directly from local storage", function(){
var data = localStorage.getItem(offlineStore._localEnum().STORAGE_KEY);
expect(data).not.toBeNull();
})
it("get item from local storage using getStore()", function(){
var data = offlineStore.getStore();
var type = Object.prototype.toString.call( data ); // === '[object Array]';
expect(type).toEqual('[object Array]');
})
it("add item to existing local storage - duplicate", function(){
var json = offlineStore._serializeGraphic(complexPolygonGraphic,landusePointLayer,offlineStore.enum().ADD);
var test = offlineStore._updateExistingLocalStore(json);
expect(test.duplicate).toBe(true);
})
it("add additional item to local storage - not a duplicate", function(){
var json = offlineStore._serializeGraphic(complexPtGraphic,landusePointLayer,offlineStore.enum().ADD);
var test = offlineStore._updateExistingLocalStore(json);
expect(test.success).toBe(true);
})
it("get item from local storage using getStore()", function(){
var data = offlineStore.getStore();
var type = Object.prototype.toString.call( data ); // === '[object Array]';
expect(type).toEqual('[object Array]');
})
it("delete local storage", function() {
var store = offlineStore._deleteTempLocalStore();
expect(store).toEqual(true);
})
})
describe("Validate local storage index functionality",function(){
it("set item in local storage index", function(){
var indexObject = new offlineStore._indexObject("6","testIdString","testTypeString",true,"polygon","1/20/30")
var item = offlineStore._setItemLocalStoreIndexObject(indexObject);
expect(item).toEqual(true);
})
it("get item from local storage index", function(){
var item = offlineStore._isItemLocalStoreIndex("testIdString");
expect(item).toEqual(true);
})
it("verify Id matches inserted value in storage index", function() {
var item = offlineStore._getItemLocalStoreIndex("testIdString");
expect("testIdString").toEqual(item.id);
})
it("verify layerId matches inserted value in storage index", function() {
var item = offlineStore._getItemLocalStoreIndex("testIdString");
expect("6").toEqual(item.layerId);
})
it("delete local storage index", function() {
var index = offlineStore._deleteLocalStoreIndex();
expect(index).toEqual(true);
})
it("get local storage index is null", function() {
var index = offlineStore.getLocalStoreIndex();
expect(index).toBeNull();
})
it("get item from local storage index (internal) is false", function(){
var item = offlineStore._isItemLocalStoreIndex("testIdString");
expect(item).toEqual(false);
})
})
describe("Reestablish internet", function(){
it("set item in local storage", function(){
offlineStore._deleteLocalStoreIndex();
offlineStore._deleteTempLocalStore();
var json = offlineStore._serializeGraphic(complexPolygonGraphic,landusePointLayer,offlineStore.enum().ADD);
var setItem = offlineStore._setTempLocalStore(json);
expect(setItem).toEqual(true);
})
it("reestablish internet handler with one item in temp store", function(){
var validate = null;
offlineStore._reestablishedInternet();
var item = offlineStore.getLocalStoreIndex();
expect(item).toEqual(null);
})
it("verify temp local storage is empty after successful sync with server", function(){
var data = offlineStore.getStore();
var type = Object.prototype.toString.call( data ); // === '[object Array]';
expect(type).toEqual('[object Array]');
})
})
describe("Test custom event handling", function(){
function testTrue(evt){
validate = evt.detail.message;
document.removeEventListener(offlineStore._localEnum().INTERNET_STATUS_EVENT,testTrue,false);
expect(validate).toEqual(true);
}
function testFalse(evt){
validate = evt.detail.message;
document.removeEventListener(offlineStore._localEnum().INTERNET_STATUS_EVENT,testFalse,false);
expect(validate).toEqual(false);
}
it("send and receive true event", function(){
var validate = null;
document.addEventListener(offlineStore._localEnum().INTERNET_STATUS_EVENT,testTrue,false);
offlineStore._dispatchEvent(true,offlineStore._localEnum().INTERNET_STATUS_EVENT);
})
it("send and receive false event", function(){
var validate = null;
document.addEventListener(offlineStore._localEnum().INTERNET_STATUS_EVENT,testFalse,false);
offlineStore._dispatchEvent(false,offlineStore._localEnum().INTERNET_STATUS_EVENT);
})
})
describe("Test using phonegap device storage", function(){
it("verify if phonegap installed and database available", function(){
var validate = null;
validate = phonegap.getDBVersion();
expect(validate).toBeNull();
})
})
/**
* PROBLEM: This should throw an error BUT it fails silently. Maybe be a bug in the JS API. Needs further investigation.
*/
describe("Apply edits", function(){
var graphicId = null;
it("improper input - null values - delete", function(){
var validate = null;
offlineStore._layerEditManager(null,null,offlineStore.enum().DELETE,offlineStore._localEnum(),function(evt){
validate = evt;
});
expect(validate).toBeNull();
})
// it("Add Point Graphic to local FeatureLayer",function(){
// landusePointLayer.add(simplePtGraphic);
// landusePointLayer.remove(simplePtGraphic);
// })
// it("Add then Delete a Point Graphic to FeatureService", function(){
// var validate = null;
//
// offlineStore._layerEditManager(simplePtGraphic,landusePointLayer,offlineStore.enum().ADD,offlineStore._localEnum(),function(num,success,id){
// graphicId = id;
// if(success == true){
// offlineStore._layerEditManager(simplePtGraphic,landusePointLayer,offlineStore.enum().DELETE,offlineStore._localEnum(),function(num,success,id){
// validate = success;
// }.bind(this));
// }
// });
// expect(validate).toEqual(true);;
// })
//
// it("Delete a Point Graphic to FeatureService", function(){
// var validate = null;
// if(deleteGraphic == true)
// offlineStore._layerEditManager(simplePtGraphic,landusePointLayer,offlineStore.enum().DELETE,offlineStore._localEnum(),function(num,success,id){
// validate = success;
// });
// expect(validate).toEqual(true);;
// })
})
//describe("Add a point", function(){
// it("Inject point", function(){
// var point = offlineStore.applyEdits(simplePtGraphic,landusePointLayer,"add");
// offlineStore._stopTimer();
// var store = offlineStore.getStore();
// expect(store).not.toBeNull();
//
// })
//})