ParentificationTransformer.spec.ts 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. import 'reflect-metadata';
  2. import { assert } from 'chai';
  3. import * as ESTree from 'estree';
  4. import { ServiceIdentifiers } from '../../../../src/container/ServiceIdentifiers';
  5. import { InversifyContainerFacade } from '../../../../src/container/InversifyContainerFacade';
  6. import { IInversifyContainerFacade } from '../../../../src/interfaces/container/IInversifyContainerFacade';
  7. import { INodeTransformer } from '../../../../src/interfaces/node-transformers/INodeTransformer';
  8. import { NodeTransformer } from '../../../../src/enums/node-transformers/NodeTransformer';
  9. import { Nodes } from '../../../../src/node/Nodes';
  10. import { NodeUtils } from '../../../../src/node/NodeUtils';
  11. describe('ParentificationTransformer', () => {
  12. describe('transformNode (node: ESTree.Node, parentNode: ESTree.Node): ESTree.Node', () => {
  13. let inversifyContainerFacade: IInversifyContainerFacade,
  14. parentificationTransformer: INodeTransformer;
  15. before(() => {
  16. inversifyContainerFacade = new InversifyContainerFacade();
  17. inversifyContainerFacade.load('', {});
  18. parentificationTransformer = inversifyContainerFacade
  19. .getNamed(ServiceIdentifiers.INodeTransformer, NodeTransformer.ParentificationTransformer);
  20. });
  21. describe('variant #1: node with parent node', () => {
  22. const identifier: ESTree.Identifier = Nodes.getIdentifierNode('foo');
  23. const breakStatement: ESTree.BreakStatement = Nodes.getBreakStatement(identifier);
  24. const expectedResult: ESTree.Identifier = NodeUtils.clone(identifier);
  25. let result: ESTree.Identifier;
  26. before(() => {
  27. expectedResult.parentNode = breakStatement;
  28. result = <ESTree.Identifier>parentificationTransformer.transformNode(identifier, breakStatement);
  29. });
  30. it('should parentize given node', () => {
  31. assert.deepEqual(result, expectedResult);
  32. });
  33. });
  34. describe('variant #2: node without parent node', () => {
  35. const identifier: ESTree.Identifier = Nodes.getIdentifierNode('Foo');
  36. const expectedResult: ESTree.Identifier = NodeUtils.clone(identifier);
  37. let result: ESTree.Identifier;
  38. before(() => {
  39. expectedResult.parentNode = expectedResult;
  40. result = <ESTree.Identifier>parentificationTransformer.transformNode(identifier, <any>null);
  41. });
  42. it('should parentize given node', () => {
  43. assert.deepEqual(result, expectedResult);
  44. });
  45. });
  46. });
  47. });