mirror of
https://github.com/atom/atom.git
synced 2026-04-28 03:01:47 -04:00
Throw away serialized state if its version doesn't match deserializer
This commit is contained in:
committed by
probablycorey
parent
4f0bf9020b
commit
8333f14ef8
@@ -130,3 +130,34 @@ describe "Window", ->
|
||||
window.installAtomCommand(commandPath)
|
||||
expect(fs.exists(commandPath)).toBeTruthy()
|
||||
expect(fs.read(commandPath).length).toBeGreaterThan 1
|
||||
|
||||
describe ".deserialize(state)", ->
|
||||
class Foo
|
||||
@deserialize: ({name}) -> new Foo(name)
|
||||
constructor: (@name) ->
|
||||
|
||||
beforeEach ->
|
||||
registerDeserializer(Foo)
|
||||
|
||||
afterEach ->
|
||||
unregisterDeserializer(Foo)
|
||||
|
||||
it "calls deserialize on the deserializer for the given state object, or returns undefined if one can't be found", ->
|
||||
object = deserialize({ deserializer: 'Foo', name: 'Bar' })
|
||||
expect(object.name).toBe 'Bar'
|
||||
expect(deserialize({ deserializer: 'Bogus' })).toBeUndefined()
|
||||
|
||||
describe "when the deserializer has a version", ->
|
||||
beforeEach ->
|
||||
Foo.version = 2
|
||||
|
||||
describe "when the deserialized state has a matching version", ->
|
||||
it "attempts to deserialize the state", ->
|
||||
object = 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", ->
|
||||
expect(deserialize({ deserializer: 'Foo', version: 3, name: 'Bar' })).toBeUndefined()
|
||||
expect(deserialize({ deserializer: 'Foo', version: 1, name: 'Bar' })).toBeUndefined()
|
||||
expect(deserialize({ deserializer: 'Foo', name: 'Bar' })).toBeUndefined()
|
||||
|
||||
Reference in New Issue
Block a user