Sfoglia il codice sorgente

Finish instance restorer tests.

Afshin Darian 8 anni fa
parent
commit
4c350b033b
1 ha cambiato i file con 49 aggiunte e 0 eliminazioni
  1. 49 0
      test/src/instancerestorer/instancerestorer.spec.ts

+ 49 - 0
test/src/instancerestorer/instancerestorer.spec.ts

@@ -176,6 +176,55 @@ describe('instancerestorer/instancerestorer', () => {
 
     });
 
+    describe('#save()', () => {
+
+      it('should not run before `first` promise', done => {
+        let restorer = new InstanceRestorer({
+          first: new Promise(() => { /* no op */ }),
+          registry: new CommandRegistry(),
+          state: new StateDB({ namespace: NAMESPACE })
+        });
+        let dehydrated: IInstanceRestorer.ILayout = {
+          currentWidget: null,
+          leftArea: { currentWidget: null, collapsed: true, widgets: null },
+          rightArea: { collapsed: true, currentWidget: null, widgets: null }
+        };
+        restorer.save(dehydrated)
+          .then(() => { done('save() ran before `first` promise resolved.'); })
+          .catch(() => { done(); });
+      });
+
+      it('should save data', done => {
+        let ready = new utils.PromiseDelegate<void>();
+        let restorer = new InstanceRestorer({
+          first: ready.promise,
+          registry: new CommandRegistry(),
+          state: new StateDB({ namespace: NAMESPACE })
+        });
+        let currentWidget = new Widget();
+        // The `fresh` attribute is only here to check against the return value.
+        let dehydrated: IInstanceRestorer.ILayout = {
+          currentWidget: null,
+          fresh: false,
+          leftArea: {
+            currentWidget,
+            collapsed: true,
+            widgets: [currentWidget]
+          },
+          rightArea: { collapsed: true, currentWidget: null, widgets: null }
+        };
+        restorer.add(currentWidget, 'test-one');
+        ready.resolve(void 0);
+        restorer.restored.then(() => restorer.save(dehydrated))
+          .then(() => restorer.fetch())
+          .then(layout => {
+            expect(layout).to.eql(dehydrated);
+            done();
+          }).catch(done);
+      });
+
+    });
+
   });
 
 });