68 lines
2.2 KiB
TypeScript
68 lines
2.2 KiB
TypeScript
import { VersionCode } from '../../../../src/domain/value-objects/version-code.vo';
|
|
import { DomainException } from '../../../../src/shared/exceptions/domain.exception';
|
|
|
|
describe('VersionCode Value Object', () => {
|
|
describe('create', () => {
|
|
it('should create valid version code', () => {
|
|
const versionCode = VersionCode.create(100);
|
|
expect(versionCode.value).toBe(100);
|
|
});
|
|
|
|
it('should throw error for non-integer', () => {
|
|
expect(() => VersionCode.create(1.5)).toThrow(DomainException);
|
|
expect(() => VersionCode.create(1.5)).toThrow('VersionCode must be an integer');
|
|
});
|
|
|
|
it('should throw error for zero', () => {
|
|
expect(() => VersionCode.create(0)).toThrow(DomainException);
|
|
expect(() => VersionCode.create(0)).toThrow('VersionCode must be positive');
|
|
});
|
|
|
|
it('should throw error for negative number', () => {
|
|
expect(() => VersionCode.create(-1)).toThrow(DomainException);
|
|
expect(() => VersionCode.create(-1)).toThrow('VersionCode must be positive');
|
|
});
|
|
});
|
|
|
|
describe('comparison methods', () => {
|
|
it('should compare version codes correctly', () => {
|
|
const v1 = VersionCode.create(100);
|
|
const v2 = VersionCode.create(200);
|
|
|
|
expect(v2.isNewerThan(v1)).toBe(true);
|
|
expect(v1.isNewerThan(v2)).toBe(false);
|
|
});
|
|
|
|
it('should return false for equal versions', () => {
|
|
const v1 = VersionCode.create(100);
|
|
const v2 = VersionCode.create(100);
|
|
|
|
expect(v1.isNewerThan(v2)).toBe(false);
|
|
expect(v2.isNewerThan(v1)).toBe(false);
|
|
});
|
|
});
|
|
|
|
describe('equals', () => {
|
|
it('should return true for same values', () => {
|
|
const v1 = VersionCode.create(100);
|
|
const v2 = VersionCode.create(100);
|
|
|
|
expect(v1.equals(v2)).toBe(true);
|
|
});
|
|
|
|
it('should return false for different values', () => {
|
|
const v1 = VersionCode.create(100);
|
|
const v2 = VersionCode.create(200);
|
|
|
|
expect(v1.equals(v2)).toBe(false);
|
|
});
|
|
});
|
|
|
|
describe('toString', () => {
|
|
it('should return string representation', () => {
|
|
const versionCode = VersionCode.create(100);
|
|
expect(versionCode.toString()).toBe('100');
|
|
});
|
|
});
|
|
});
|