import {describe, expect, it} from 'bun:test'; import {ViewingReportKind, ViewingReportKindMapping, type ViewingReportKindType} from '../../../../src/apis/Reporting/ViewingReportKind'; describe('ViewingReportKind', () => { describe('when accessing enum values', () => { it('should have RealTime as 0', () => { expect(ViewingReportKind.RealTime).toBe(0); }); it('should have HLS as 1', () => { expect(ViewingReportKind.HLS).toBe(1); }); it('should have DASH as 2', () => { expect(ViewingReportKind.DASH).toBe(2); }); }); }); describe('ViewingReportKindMapping', () => { describe('when converting from type string to enum', () => { it('should convert "RealTime" to ViewingReportKind.RealTime', () => { const result = ViewingReportKindMapping.convertViewingReportKindTypeToViewingReportKind('RealTime'); expect(result).toBe(ViewingReportKind.RealTime); }); it('should convert "HLS" to ViewingReportKind.HLS', () => { const result = ViewingReportKindMapping.convertViewingReportKindTypeToViewingReportKind('HLS'); expect(result).toBe(ViewingReportKind.HLS); }); it('should convert "DASH" to ViewingReportKind.DASH', () => { const result = ViewingReportKindMapping.convertViewingReportKindTypeToViewingReportKind('DASH'); expect(result).toBe(ViewingReportKind.DASH); }); }); describe('when converting from enum to type string', () => { it('should convert ViewingReportKind.RealTime to "RealTime"', () => { const result = ViewingReportKindMapping.convertViewingReportKindToViewingReportKindType(ViewingReportKind.RealTime); expect(result).toBe('RealTime'); }); it('should convert ViewingReportKind.HLS to "HLS"', () => { const result = ViewingReportKindMapping.convertViewingReportKindToViewingReportKindType(ViewingReportKind.HLS); expect(result).toBe('HLS'); }); it('should convert ViewingReportKind.DASH to "DASH"', () => { const result = ViewingReportKindMapping.convertViewingReportKindToViewingReportKindType(ViewingReportKind.DASH); expect(result).toBe('DASH'); }); }); describe('when performing roundtrip conversions', () => { const viewingReportKindTypes: ViewingReportKindType[] = ['RealTime', 'HLS', 'DASH']; it.each(viewingReportKindTypes)('should preserve %s through type->enum->type conversion', kindType => { const enumValue = ViewingReportKindMapping.convertViewingReportKindTypeToViewingReportKind(kindType); const backToType = ViewingReportKindMapping.convertViewingReportKindToViewingReportKindType(enumValue); expect(backToType).toBe(kindType); }); const viewingReportKinds = [ViewingReportKind.RealTime, ViewingReportKind.HLS, ViewingReportKind.DASH]; it.each(viewingReportKinds)('should preserve enum %d through enum->type->enum conversion', kindEnum => { const typeValue = ViewingReportKindMapping.convertViewingReportKindToViewingReportKindType(kindEnum); const backToEnum = ViewingReportKindMapping.convertViewingReportKindTypeToViewingReportKind(typeValue); expect(backToEnum).toBe(kindEnum); }); }); });