mirror of
https://github.com/Foundry376/Mailspring.git
synced 2024-11-14 21:57:55 +08:00
47 lines
1.7 KiB
CoffeeScript
47 lines
1.7 KiB
CoffeeScript
|
_ = require 'underscore'
|
||
|
Model = require '../src/flux/models/model'
|
||
|
Attributes = require '../src/flux/attributes'
|
||
|
DatabaseObjectRegistry = require '../src/database-object-registry'
|
||
|
|
||
|
class BadTest
|
||
|
|
||
|
class GoodTest extends Model
|
||
|
@attributes: _.extend {}, Model.attributes,
|
||
|
"foo": Attributes.String
|
||
|
modelKey: 'foo'
|
||
|
jsonKey: 'foo'
|
||
|
|
||
|
describe 'DatabaseObjectRegistry', ->
|
||
|
beforeEach ->
|
||
|
DatabaseObjectRegistry.unregister("GoodTest")
|
||
|
|
||
|
it "throws an error if the constructor isn't a Model", ->
|
||
|
expect( -> DatabaseObjectRegistry.register()).toThrow()
|
||
|
expect( -> DatabaseObjectRegistry.register(BadTest)).toThrow()
|
||
|
|
||
|
it "can register constructors", ->
|
||
|
expect( -> DatabaseObjectRegistry.register(GoodTest)).not.toThrow()
|
||
|
expect(DatabaseObjectRegistry._constructors["GoodTest"]).toBe GoodTest
|
||
|
|
||
|
it "Retrurns a map of constructors", ->
|
||
|
DatabaseObjectRegistry.register(GoodTest)
|
||
|
map = DatabaseObjectRegistry.classMap()
|
||
|
expect(map.GoodTest).toBe GoodTest
|
||
|
|
||
|
it "Tests if a constructor is in the registry", ->
|
||
|
DatabaseObjectRegistry.register(GoodTest)
|
||
|
expect(DatabaseObjectRegistry.isInRegistry("GoodTest")).toBe true
|
||
|
|
||
|
it "deserializes the objects for a constructor", ->
|
||
|
DatabaseObjectRegistry.register(GoodTest)
|
||
|
obj = DatabaseObjectRegistry.deserialize("GoodTest", foo: "bar")
|
||
|
expect(obj instanceof GoodTest).toBe true
|
||
|
expect(obj.foo).toBe "bar"
|
||
|
|
||
|
it "throws an error if the object can't be deserialized", ->
|
||
|
expect( -> DatabaseObjectRegistry.deserialize("GoodTest", foo: "bar")).toThrow()
|
||
|
|
||
|
it "returns the original object in deserialization failure if option is passed", ->
|
||
|
json = DatabaseObjectRegistry.deserialize("GoodTest", {foo: "bar"}, {ignoreError: true})
|
||
|
expect(json).toEqual foo: "bar"
|