UNPKG

@kv-systems/ng-packagr

Version:

Compile and package Angular libraries in Angular Package Format (APF)

69 lines (55 loc) 2.45 kB
import { expect } from 'chai'; import * as fs from 'fs'; import { TestHarness } from './test-harness'; describe('intra-dependent', () => { const harness = new TestHarness('intra-dependent'); beforeAll(async () => { await harness.initialize(); }); afterAll(() => { harness.dispose(); }); it("should perform initial compilation when 'watch' is started", () => { harness.expectDtsToMatch('src/primary.component', /count: number/); }); it('should fail when introducing a circular import.', done => { harness.copyTestCase('circular'); harness.onFailure(error => { expect(error.message).to.contain('Entry point intra-dependent has a circular dependency on itself.'); harness.copyTestCase('valid'); done(); }); }); it('should throw error component inputs is changed without updating usages', done => { harness.copyTestCase('invalid-component-property'); harness.onFailure(error => { expect(error.message).to.match(/Can\'t bind to \'count\' since it isn\'t a known property/); harness.copyTestCase('valid'); done(); }); }); it('should throw error service method is changed without updating usages', done => { harness.copyTestCase('invalid-service-method'); harness.onFailure(error => { expect(error.message).to.match(/Property \'initialize\' does not exist on type \'PrimaryAngularService\'/); harness.copyTestCase('valid'); done(); }); }); // todo we should find a better way to test this case. xit('should only build entrypoints that are dependent on the file changed.', done => { const primaryFesmPath = harness.getFilePath('fesm2022/intra-dependent.mjs'); const secondaryFesmPath = harness.getFilePath('fesm2022/intra-dependent-secondary.mjs'); const thirdFesmPath = harness.getFilePath('fesm2022/intra-dependent-third.mjs'); const primaryModifiedTime = fs.statSync(primaryFesmPath).mtimeMs; const secondaryModifiedTime = fs.statSync(secondaryFesmPath).mtimeMs; const thirdModifiedTime = fs.statSync(thirdFesmPath).mtimeMs; harness.copyTestCase('valid'); harness.onComplete(() => { expect(fs.statSync(primaryFesmPath).mtimeMs).to.greaterThan(primaryModifiedTime); expect(fs.statSync(secondaryFesmPath).mtimeMs).to.greaterThan(secondaryModifiedTime); expect(fs.statSync(thirdFesmPath).mtimeMs).to.equals(thirdModifiedTime); done(); }); }); });