/
githubmirror
/
atom
Обзор
Документация
Войти
/
githubmirror
/
atom
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
spec/deserializer-manager-spec.js
75 строк
2 KB
Sadick
Decaffeinate specs (#21546)
30 окт 2020, 16:40
Не верифицирован
30 окт 2020, 16:40
83d6c09
Код
Авторство
О чём код?
const DeserializerManager = require('../src/deserializer-manager'); describe('DeserializerManager', function() { let manager = null; class Foo { static deserialize({ name }) { return new Foo(name); } constructor(name) { this.name = name; } } beforeEach(() => (manager = new DeserializerManager())); describe('::add(deserializer)', () => it('returns a disposable that can be used to remove the manager', function() { const disposable = manager.add(Foo); expect( manager.deserialize({ deserializer: 'Foo', name: 'Bar' }) ).toBeDefined(); disposable.dispose(); spyOn(console, 'warn'); expect( manager.deserialize({ deserializer: 'Foo', name: 'Bar' }) ).toBeUndefined(); })); describe('::deserialize(state)', function() { beforeEach(() => manager.add(Foo)); it("calls deserialize on the manager for the given state object, or returns undefined if one can't be found", function() { spyOn(console, 'warn'); const object = manager.deserialize({ deserializer: 'Foo', name: 'Bar' }); expect(object.name).toBe('Bar'); expect(manager.deserialize({ deserializer: 'Bogus' })).toBeUndefined(); }); describe('when the manager has a version', function() { beforeEach(() => (Foo.version = 2)); describe('when the deserialized state has a matching version', () => it('attempts to deserialize the state', function() { const object = manager.deserialize({ deserializer: 'Foo', version: 2, name: 'Bar' }); expect(object.name).toBe('Bar'); })); describe('when the deserialized state has a non-matching version', () => it('returns undefined', function() { expect( manager.deserialize({ deserializer: 'Foo', version: 3, name: 'Bar' }) ).toBeUndefined(); expect( manager.deserialize({ deserializer: 'Foo', version: 1, name: 'Bar' }) ).toBeUndefined(); expect( manager.deserialize({ deserializer: 'Foo', name: 'Bar' }) ).toBeUndefined(); })); }); }); });