UNPKG

archunit

Version:

ArchUnit TypeScript is an architecture testing library, to specify and assert architecture rules in your TypeScript app

116 lines 5.29 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const result_factory_1 = require("./result-factory"); describe('ResultFactory', () => { beforeEach(() => { // Mock stdout.isTTY to true to enable colors in tests Object.defineProperty(process.stdout, 'isTTY', { value: true, configurable: true, }); delete process.env.NO_COLOR; delete process.env.CI; }); describe('result', () => { it('should return passing result when no violations', () => { const result = result_factory_1.ResultFactory.result(false, []); expect(result.pass).toBe(true); expect(result.message()).toContain('Architecture rule validation passed'); expect(result.message()).not.toContain('expected to not pass'); }); it('should return passing result with shouldNotPass message when shouldNotPass is true', () => { const result = result_factory_1.ResultFactory.result(true, []); expect(result.pass).toBe(true); expect(result.message()).toContain('expected to not pass'); }); it('should return failing result with single violation', () => { const violations = [ { message: 'Test violation message', details: { type: 'test' }, }, ]; const result = result_factory_1.ResultFactory.result(false, violations); expect(result.pass).toBe(false); expect(result.message()).toContain('Architecture rule failed with 1 violation:'); expect(result.message()).toContain('1.'); expect(result.message()).toContain('Test violation message'); }); it('should return failing result with multiple violations', () => { const violations = [ { message: 'First violation', details: { type: 'test1' }, }, { message: 'Second violation', details: { type: 'test2' }, }, { message: 'Third violation', details: { type: 'test3' }, }, ]; const result = result_factory_1.ResultFactory.result(false, violations); expect(result.pass).toBe(false); expect(result.message()).toContain('Architecture rule failed with 3 violations:'); expect(result.message()).toContain('1.'); expect(result.message()).toContain('First violation'); expect(result.message()).toContain('2.'); expect(result.message()).toContain('Second violation'); expect(result.message()).toContain('3.'); expect(result.message()).toContain('Third violation'); }); it('should format violation numbers and messages correctly', () => { const violations = [ { message: 'Test message', details: {}, }, ]; const result = result_factory_1.ResultFactory.result(false, violations); const message = result.message(); // Should contain ANSI color codes for formatting expect(message).toContain('\x1b['); // Some ANSI code should be present }); }); describe('error', () => { it('should return error result with formatted message', () => { const result = result_factory_1.ResultFactory.error('Something went wrong'); expect(result.pass).toBe(false); expect(result.message()).toContain('Error: Something went wrong'); expect(result.message()).toContain('\x1b['); // Should contain ANSI color codes }); it('should format error messages in red bold', () => { const result = result_factory_1.ResultFactory.error('Test error'); const message = result.message(); expect(message).toContain('\x1b[1m'); // Bold expect(message).toContain('\x1b[31m'); // Red expect(message).toContain('Error: Test error'); }); }); describe('without colors', () => { beforeEach(() => { process.env.NO_COLOR = '1'; }); it('should work without color formatting', () => { const violations = [ { message: 'Test violation', details: {}, }, ]; const result = result_factory_1.ResultFactory.result(false, violations); expect(result.pass).toBe(false); expect(result.message()).toContain('Architecture rule failed with 1 violation:'); expect(result.message()).toContain('Test violation'); expect(result.message()).not.toContain('\x1b['); // No ANSI codes }); it('should format error without colors', () => { const result = result_factory_1.ResultFactory.error('Test error'); expect(result.pass).toBe(false); expect(result.message()).toBe('Error: Test error'); }); }); }); //# sourceMappingURL=result-factory.spec.js.map