63 lines
2.2 KiB
TypeScript
63 lines
2.2 KiB
TypeScript
import { VersionName } from '../../../../src/domain/value-objects/version-name.vo';
|
|
import { DomainException } from '../../../../src/shared/exceptions/domain.exception';
|
|
|
|
describe('VersionName Value Object', () => {
|
|
describe('create', () => {
|
|
it('should create valid semantic version', () => {
|
|
const versionName = VersionName.create('1.2.3');
|
|
expect(versionName.value).toBe('1.2.3');
|
|
expect(versionName.major).toBe(1);
|
|
expect(versionName.minor).toBe(2);
|
|
expect(versionName.patch).toBe(3);
|
|
});
|
|
|
|
it('should create version with zeros', () => {
|
|
const versionName = VersionName.create('0.0.1');
|
|
expect(versionName.value).toBe('0.0.1');
|
|
expect(versionName.major).toBe(0);
|
|
expect(versionName.minor).toBe(0);
|
|
expect(versionName.patch).toBe(1);
|
|
});
|
|
|
|
it('should throw error for empty string', () => {
|
|
expect(() => VersionName.create('')).toThrow(DomainException);
|
|
expect(() => VersionName.create(' ')).toThrow(DomainException);
|
|
});
|
|
|
|
it('should throw error for invalid format', () => {
|
|
expect(() => VersionName.create('1.2')).toThrow(DomainException);
|
|
expect(() => VersionName.create('1.2.3.4')).toThrow(DomainException);
|
|
expect(() => VersionName.create('v1.2.3')).toThrow(DomainException);
|
|
expect(() => VersionName.create('1.2.x')).toThrow(DomainException);
|
|
});
|
|
|
|
it('should trim whitespace', () => {
|
|
const versionName = VersionName.create(' 1.2.3 ');
|
|
expect(versionName.value).toBe('1.2.3');
|
|
});
|
|
});
|
|
|
|
describe('equals', () => {
|
|
it('should return true for same versions', () => {
|
|
const v1 = VersionName.create('1.2.3');
|
|
const v2 = VersionName.create('1.2.3');
|
|
|
|
expect(v1.equals(v2)).toBe(true);
|
|
});
|
|
|
|
it('should return false for different versions', () => {
|
|
const v1 = VersionName.create('1.2.3');
|
|
const v2 = VersionName.create('1.2.4');
|
|
|
|
expect(v1.equals(v2)).toBe(false);
|
|
});
|
|
});
|
|
|
|
describe('toString', () => {
|
|
it('should return string representation', () => {
|
|
const versionName = VersionName.create('1.2.3');
|
|
expect(versionName.toString()).toBe('1.2.3');
|
|
});
|
|
});
|
|
});
|