import {PunycodeDecoder} from './punycode-decoder'; import {NativeLibraryWrapperService} from '../native-library-wrapper.service'; import createSpyObj = jasmine.createSpyObj; import Spy = jasmine.Spy; describe('PunycodeDecoder', () => { let nativeWrapperSpy: Partial; let decodeSpy: Spy; beforeEach(() => { nativeWrapperSpy = {punycode: createSpyObj(['decode'])}; decodeSpy = nativeWrapperSpy.punycode.decode as Spy; }); it('should create an instance', () => { expect(new PunycodeDecoder(nativeWrapperSpy as NativeLibraryWrapperService)).toBeTruthy(); }); it('should have the id "decodepunycode"', () => { expect(new PunycodeDecoder(nativeWrapperSpy as NativeLibraryWrapperService).getId()).toEqual('decodepunycode'); }); it('should call through to the native punycode decoder', () => { const testInput = 'My input'; const expectedOutput = 'It worked'; decodeSpy.and.returnValue(expectedOutput); const result: string = new PunycodeDecoder(nativeWrapperSpy as NativeLibraryWrapperService).convert(testInput); expect(result).toEqual(expectedOutput); expect(decodeSpy).toHaveBeenCalledWith(testInput); }); });