diff --git a/test/SpecRunner.offlineFeaturesManager.html b/test/SpecRunner.offlineFeaturesManager.html index 2a0a72c..72dc1ea 100644 --- a/test/SpecRunner.offlineFeaturesManager.html +++ b/test/SpecRunner.offlineFeaturesManager.html @@ -61,7 +61,7 @@ var fsUrl = "http://services2.arcgis.com/CQWCKwrSm5dkM28A/arcgis/rest/services/Military/FeatureServer/"; // var layersIds = [0,1,2,3,4,5,6]; - var layersIds = [1,2,3]; + var layersIds = [1,2,3,6]; layersIds.forEach(function(layerId) { diff --git a/test/spec/offlineFeaturesManagerSpec.js b/test/spec/offlineFeaturesManagerSpec.js index e68999e..c51b86e 100644 --- a/test/spec/offlineFeaturesManagerSpec.js +++ b/test/spec/offlineFeaturesManagerSpec.js @@ -667,6 +667,147 @@ describe("Offline Editing", function() }); }); +describe("Attachments", function() +{ + var g1,g2; + + async.it("prepare layer - delete", function(done) + { + clearFeatureLayer( g_featureLayers[3], function(success,response) + { + expect(success).toBeTruthy(); + var listener = g_featureLayers[3].on('update-end', function(){ listener.remove(); completedOne();}) + g_featureLayers[3].refresh(); + done(); + }); + }); + + async.it("prepare layer - add online feature", function(done) + { + expect(g_featureLayers[3].graphics.length).toBe(0); + + g1 = new g_modules.Graphic({ + "geometry": {"rings": [[[-109922,5108923],[-94801,5119577],[-86348,5107580],[-101470,5096926],[-109922,5108923]]],"spatialReference":{"wkid":102100}}, + "attributes":{"ruleid": 2, "name": "Zaragoza"} + }); + + var adds = [g1]; + g_featureLayers[3].applyEdits(adds,null,null,function(addResults,updateResults,deleteResults) + { + expect(addResults.length).toBe(1); + expect(addResults[0].success).toBeTruthy(); + g1.attributes.objectid = addResults[0].objectId; + expect(getObjectIds(g_featureLayers[3].graphics)).toEqual(getObjectIds([g1])); + expect(g_featureLayers[3].graphics.length).toBe(1); + done(); + }, + function(error) + { + expect(true).toBeFalsy(); + done(); + }); + }); + + async.it("go Offline", function(done) + { + expect(g_offlineFeaturesManager.getOnlineStatus()).toBe(g_offlineFeaturesManager.ONLINE); + g_offlineFeaturesManager.goOffline(); + expect(g_offlineFeaturesManager.getOnlineStatus()).toBe(g_offlineFeaturesManager.OFFLINE); + done(); + }); + + async.it("prepare layer - add offline feature", function(done) + { + expect(g_featureLayers[3].graphics.length).toBe(1); + + g2 = new g_modules.Graphic({ + "geometry": { + "rings": [[[-518920,4967379],[-474892,4975940],[-439425,5015076],[-377053,5050543],[-290220,5049320],[-271876,5021191],[-417412,4975940],[-510359,4891554],[-670571,4862202],[-682801,4880547],[-665679,4916014],[-518920,4967379]]], + "spatialReference":{"wkid":102100} + }, + "attributes":{"ruleid": 3, "name": "Sistema Central"} + }); + + var adds = [g2]; + g_featureLayers[3]._applyEdits(adds,null,null,function(addResults,updateResults,deleteResults) + { + expect(addResults.length).toBe(1); + expect(addResults[0].success).toBeTruthy(); + g2.attributes.objectid = addResults[0].objectId; + expect(getObjectIds(g_featureLayers[3].graphics)).toEqual(getObjectIds([g1,g2])); + expect(g_featureLayers[3].graphics.length).toBe(2); + done(); + }, + function(error) + { + expect(true).toBeFalsy(); + done(); + }); + }); + + + /* + + async.it("add attachment to feature", function(done) + { + expect(false).toBeTruthy(); // not implemented + done(); + }); + + async.it("query attachment info", function(done) + { + expect(false).toBeTruthy(); // not implemented + done(); + }); + + async.it("delete attachment", function(done) + { + expect(false).toBeTruthy(); // not implemented + done(); + }); + + */ + + async.it("go Online", function(done) + { + // expect(g_featureLayers[0].graphics.length).toBe(4); + // expect(g_featureLayers[1].graphics.length).toBe(3); + + var listener = jasmine.createSpy('event listener'); + g_offlineFeaturesManager.on(g_offlineFeaturesManager.events.ALL_EDITS_SENT, listener); + + g_offlineFeaturesManager.goOnline(function(success,responses) + { + console.log("went online"); + expect(g_offlineFeaturesManager.getOnlineStatus()).toBe(g_offlineFeaturesManager.ONLINE); + expect(listener).toHaveBeenCalled(); + expect(success).toBeTruthy(); + expect(Object.keys(responses).length).toBe(0); + expect(g_editsStore.pendingEditsCount()).toBe(0); + // how to get the final id of g4 and g6 ? + //expect(getObjectIds(g_featureLayers[0].graphics)).toEqual(getObjectIds([g1,g2,g4,g6])); + // all of them are positive + // expect(getObjectIds(g_featureLayers[0].graphics).filter(function(id){ return id<0; })).toEqual([]); + // expect(getObjectIds(g_featureLayers[1].graphics).filter(function(id){ return id<0; })).toEqual([]); + // expect(g_featureLayers[0].graphics.length).toBe(4); + // expect(g_featureLayers[1].graphics.length).toBe(3); + // countFeatures(g_featureLayers[0], function(success,result) + // { + // expect(success).toBeTruthy(); + // expect(result.count).toBe(4); + // countFeatures(g_featureLayers[1], function(success,result) + // { + // expect(success).toBeTruthy(); + // expect(result.count).toBe(3); + // done(); + // }); + // }); + done(); + }); + expect(g_offlineFeaturesManager.getOnlineStatus()).toBe(g_offlineFeaturesManager.ONLINE); + }); +}); + describe("Offline edits optimized in zero edits", function() { var g7;