2021-10-03 - 单单只测试 with disabled

2021-11-04  本文已影响0人  _扫地僧_

源代码:

import {
  decorateExpressEngine,
  NgExpressEngine,
  //NgExpressEngineDecorator,
  NgExpressEngineInstance,
} from './ng-express-engine-decorator';
// import { SERVER_REQUEST_URL } from '@spartacus/core';

/*
describe('NgExpressEngineDecorator', () => {
  describe('get', () => {
    let originalEngine: NgExpressEngine;
    let originalEngineInstance: NgExpressEngineInstance;
    let mockEngineOptions;

    let mockOptions;
    const mockPath = 'testPath';
    const mockCallback = () => {};

    beforeEach(() => {
      mockOptions = {
        req: {
          protocol: 'https',
          originalUrl: '/electronics/en/USD/cart',
          hostname: 'site.com',
        },
      } as any;

      mockEngineOptions = {
        bootstrap: 'TestModule',
        providers: [{ provide: 'testToken', useValue: 'testValue' }],
      } as any;

      const spy1 = jasmine
      .createSpy('ngExpressEngineFuck');

      const strategy = spy1.and;

      originalEngine = strategy.callFake(() => 
      {
        // console.log('Ethan ngExpressEngine is called');
      return originalEngineInstance;
      });

      originalEngineInstance = jasmine
        .createSpy('ngExpressEngineInstance')
        .and.callFake(() => { 
          console.log('Ethan original Engine instance is called');
        });

      const engine = NgExpressEngineDecorator.get(originalEngine, null);
      const engineInstance = engine(mockEngineOptions);
      engineInstance(mockPath, mockOptions, mockCallback);
    });

    it(`should pass parameters to the original engine instance`, () => {
      const ex = expect(originalEngineInstance);
      ex.toHaveBeenCalledWith(
        mockPath,
        mockOptions,
        mockCallback
      );
    });

    it(`should pass setup options to the original engine`, () => {

      const jerry = jasmine.arrayContaining([
        { provide: 'testToken', useValue: 'testValue' },
      ]);
      expect(originalEngine).toHaveBeenCalledWith(
        jasmine.objectContaining({
          bootstrap: 'TestModule',
          providers: jerry
        })
      );
    });

    it(`should add SERVER_REQUEST_URL to providers in the setup options passed to the original engine`, () => {
      expect(originalEngine).toHaveBeenCalledWith(
        jasmine.objectContaining({
          providers: jasmine.arrayContaining([
            jasmine.objectContaining({
              provide: SERVER_REQUEST_URL,
            }),
          ]),
        })
      );
    });
  });
});
*/
describe('decorateExpressEngine', () => {
  let originalEngine: NgExpressEngine;
  let originalEngineInstance: NgExpressEngineInstance;
  let mockEngineOptions;

  let mockOptions;
  const mockPath = 'testPath';
  const mockCallback = () => {};
  let engineInstance;

  beforeEach(() => {
    mockOptions = {
      req: {
        protocol: 'https',
        originalUrl: '/electronics/en/USD/cart',
        get: jasmine.createSpy('req.get').and.returnValue('site.com'),
      },
      res: {
        set: jasmine.createSpy('req.set'),
      },
    } as any;

    mockEngineOptions = {
      bootstrap: 'TestModule',
      providers: [{ provide: 'testToken', useValue: 'testValue' }],
    } as any;

    originalEngine = jasmine
      .createSpy('ngExpressEngine')
      .and.callFake(() => {
        console.log('Jerry original Engine is called');
        return originalEngineInstance}
        );

    originalEngineInstance = jasmine
      .createSpy('ngExpressEngineInstance')
      .and.callFake(() => {
        console.log('Jerry Original Engine instance is called');
      });
  });

  describe('with disabled optimizations', () => {
    beforeEach(() => {
      const engine = decorateExpressEngine(originalEngine, null);
      engineInstance = engine(mockEngineOptions);
      engineInstance(mockPath, mockOptions, mockCallback);
    });

    /*
    it(`should pass parameters to the original engine instance`, () => {
      expect(originalEngineInstance).toHaveBeenCalledWith(
        mockPath,
        mockOptions,
        mockCallback
      );
    });*/

    /*
    it(`should pass setup options to the original engine`, () => {
      expect(originalEngine).toHaveBeenCalledWith(
        jasmine.objectContaining({
          bootstrap: 'TestModule',
          providers: jasmine.arrayContaining([
            { provide: 'testToken', useValue: 'testValue' },
          ]),
        })
      );
    });*/

    /*
    it(`should add SERVER_REQUEST_URL to providers in the setup options passed to the original engine`, () => {
      expect(originalEngine).toHaveBeenCalledWith(
        jasmine.objectContaining({
          providers: jasmine.arrayContaining([
            jasmine.objectContaining({
              provide: SERVER_REQUEST_URL,
            }),
          ]),
        })
      );
    }); */

    it(`should be called only once per request with caching`, () => {
      const mockOptions2 = {
        ...mockOptions,
        req: { ...mockOptions.req, originalUrl: 'aaa' },
      };
      const mockOptions3 = {
        ...mockOptions,
        req: { ...mockOptions.req, originalUrl: 'ccc' },
      };
      engineInstance(mockPath, mockOptions, mockCallback);
      engineInstance('aaa', mockOptions2, mockCallback);
      engineInstance(mockPath, mockOptions, mockCallback);
      engineInstance('aaa', mockOptions2, mockCallback);
      engineInstance('ccc', mockOptions3, mockCallback);
      expect(originalEngineInstance).toHaveBeenCalledTimes(6);
    });
  });

  /* ENABLED *******************************/

  /*
  describe('with enabled optimizations', () => {
    beforeEach(() => {
      const engine = decorateExpressEngine(originalEngine, {
        cache: true,
        timeout: 0,
      });
      engineInstance = engine(mockEngineOptions);
      engineInstance(mockPath, mockOptions, mockCallback);
    });

    
    it(`should pass parameters to the original engine instance`, () => {
      expect(originalEngineInstance).toHaveBeenCalledWith(
        mockPath,
        mockOptions,
        jasmine.any(Function)
      );
    });


    it(`should apply optimization wrapper`, () => {
      // we check, that callback is not the original one
      expect(originalEngineInstance).not.toHaveBeenCalledWith(
        mockPath,
        mockOptions,
        mockCallback
      );
    });

    it(`should pass setup options to the original engine`, () => {
      expect(originalEngine).toHaveBeenCalledWith(
        jasmine.objectContaining({
          bootstrap: 'TestModule',
          providers: jasmine.arrayContaining([
            { provide: 'testToken', useValue: 'testValue' },
          ]),
        })
      );
    });

    it(`should add SERVER_REQUEST_URL to providers in the setup options passed to the original engine`, () => {
      expect(originalEngine).toHaveBeenCalledWith(
        jasmine.objectContaining({
          providers: jasmine.arrayContaining([
            jasmine.objectContaining({
              provide: SERVER_REQUEST_URL,
            }),
          ]),
        })
      );
    });

    it(`should be called only once per request with caching`, () => {
      const mockOptions2 = {
        ...mockOptions,
        req: { ...mockOptions.req, originalUrl: 'aaa' },
      };
      const mockOptions3 = {
        ...mockOptions,
        req: { ...mockOptions.req, originalUrl: 'ccc' },
      };
      engineInstance(mockPath, mockOptions, mockCallback);
      engineInstance('aaa', mockOptions2, mockCallback);
      engineInstance(mockPath, mockOptions, mockCallback);
      engineInstance('aab', mockOptions2, mockCallback);
      engineInstance('ccc', mockOptions3, mockCallback);
      expect(originalEngineInstance).toHaveBeenCalledTimes(3);
    });
  });*/
});
上一篇下一篇

猜你喜欢

热点阅读