Home Manual Reference Source Test Repository

src/module/plugin.js

import { assert }             from 'chai';

import AbstractSyntaxLoader   from '../../../src/module/plugin/syntax/AbstractSyntaxLoader';

import * as testconfig        from '../testconfig';

class Parent extends AbstractSyntaxLoader
{
   ParentOne() { return {}; }
   ParentTwo() { return {}; }
}

class Child extends Parent
{
   onConfigure() { return {}; } // This is ignored by AbstractSyntaxLoader.
   ChildThree() { return {}; }
   ChildFour() { return {}; }
}

if (testconfig.modules['modulePlugin'])
{
   suite('plugin:', () =>
   {
      /**
       * Verifies that AbstractSyntaxLoader can find all child / parent inheritance methods
       */
      suite('syntax (AbstractSyntaxLoader):', () =>
      {
         const instance = new Child();

         test('verify child / parent syntax loading', () =>
         {
            const event = { data: { settings: {}, syntaxes: {} } };
            instance.onLoadSyntax(event);

            assert.isUndefined(event.data.syntaxes['onConfigure']);

            assert.isObject(event.data.syntaxes['ChildThree']);
            assert.isObject(event.data.syntaxes['ChildFour']);
            assert.isObject(event.data.syntaxes['ParentOne']);
            assert.isObject(event.data.syntaxes['ParentTwo']);
         });
      });
   });
}