All files / Sources/Testing testProxy.js

96.55% Statements 28/29
50% Branches 1/2
85.71% Functions 6/7
96.55% Lines 28/29

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109                  2x           1x       2x     2x     2x   2x     1x           1x                           2x             1x 1x 1x           1x 1x           1x     1x   1x 1x     1x 1x 1x           1x       1x           1x 1x     1x 1x   1x    
import test from 'tape';
import macro from 'vtk.js/Sources/macros';
import vtkProxyManager from 'vtk.js/Sources/Proxy/Core/ProxyManager';
 
// ----------------------------------------------------------------------------
// vtkTestProxyClass methods
// ----------------------------------------------------------------------------
function testProxyClass(publicAPI, model) {
  // Set our className
  model.classHierarchy.push('vtkTestProxyClass');
}
 
// ----------------------------------------------------------------------------
// Object factory
// ----------------------------------------------------------------------------
const DEFAULT_VALUES = {};
 
// ----------------------------------------------------------------------------
function extend(publicAPI, model, initialValues = {}) {
  Object.assign(model, DEFAULT_VALUES, initialValues);
 
  // Object methods
  macro.obj(publicAPI, model);
 
  // Proxy methods
  macro.proxy(publicAPI, model);
 
  testProxyClass(publicAPI, model);
}
 
const vtkTestProxyClass = {
  newInstance: macro.newInstance(extend, 'vtkTestProxyClass'),
};
 
// ----------------------------------------------------------------------------
 
const defaultConfig = {
  definitions: {
    Sources: {
      TrivialProducer: {
        class: vtkTestProxyClass,
        options: {
          activateOnCreate: true,
        },
      },
    },
  },
};
 
function newProxyManager(proxyConfiguration = defaultConfig) {
  return vtkProxyManager.newInstance({ proxyConfiguration });
}
 
// ----------------------------------------------------------------------------
// Tests
// ----------------------------------------------------------------------------
 
test('Proxy activation via config', (t) => {
  const proxyManager = newProxyManager();
  t.equal(
    proxyManager.getActiveSource(),
    undefined,
    'No initial active source'
  );
 
  const proxy = proxyManager.createProxy('Sources', 'TrivialProducer');
  t.equal(
    proxyManager.getActiveSource(),
    proxy,
    'Active source set after proxy creation'
  );
 
  proxyManager.onModified(() => {
    t.fail('Proxy manager should not be modified when activating proxy twice');
  });
  proxy.activate();
 
  proxy.getState();
  t.end();
});
 
test('Proxy activation via .activate()', (t) => {
  const proxyManager = newProxyManager();
  t.equal(
    proxyManager.getActiveSource(),
    undefined,
    'No initial active source'
  );
 
  const proxy = proxyManager.createProxy('Sources', 'TrivialProducer', {
    // Inhibit the default { activateOnCreate: true }
    activateOnCreate: false,
  });
  t.equal(
    proxyManager.getActiveSource(),
    undefined,
    'No active source after proxy creation'
  );
 
  proxyManager.onModified(() => {
    t.pass('Proxy manager should be modified after proxy activation');
  });
 
  proxy.activate();
  t.equal(proxyManager.getActiveSource(), proxy, 'Active source set');
 
  t.end();
});