travis-web/assets/scripts/spec/unit/incomplete_spec.coffee
2013-07-31 13:29:45 +02:00

84 lines
2.3 KiB
CoffeeScript

fullPostHash = null
Post = null
Author = null
module "Travis.Model - incomplete",
setup: ->
fullPostHash = {
id: '1',
title: 'foo',
published_at: 'today',
author_id: '1'
}
Author = Travis.Model.extend()
Post = Travis.Model.extend(
title: Ember.attr('string'),
publishedAt: Ember.attr('string', key: 'published_at'),
author: Ember.belongsTo(Author, { key: 'author_id' })
)
Post.adapter = Ember.FixtureAdapter.create()
test "record is marked as incomplete if attributes are missing when loading a record", ->
Post.load([{ id: '1', title: 'foo' }])
record = Post.find('1')
ok(record.get('incomplete'), 'record should be incomplete')
equal(record.get('title'), 'foo', 'attributes should be accessible')
test "record is marked as complete if missing attributes are loaded", ->
Post.load([{ id: '1', title: 'foo' }])
record = Post.find('1')
ok(record.get('incomplete'), 'record should be complete')
equal(record.get('title'), 'foo', 'attributes should be accessible')
record.load('1', fullPostHash)
ok(!record.get('incomplete'), 'record should be complete')
test "record is marked as incomplete if belongsTo key is missing", ->
delete(fullPostHash.author_id)
Post.load([fullPostHash])
record = Post.find('1')
ok(record.get('incomplete'), 'record should be incomplete')
test "proeperty can be loaded as null, which means that the property is still loaded", ->
fullPostHash.author_id = null
fullPostHash.title = null
Post.load([fullPostHash])
record = Post.find('1')
ok(!record.get('incomplete'), 'record should be complete')
equal(record.get('title'), null, 'title should be null')
test "when accessing missing property, record is loaded", ->
Post.FIXTURES = [fullPostHash]
Post.load([{ id: '1' }])
record = null
Ember.run -> record = Post.find('1')
ok(record.get('incomplete'), 'record should be incomplete')
publishedAt = null
Ember.run -> publishedAt = record.get('publishedAt')
ok(!publishedAt, 'publishedAt should be missing')
stop()
setTimeout( ->
start()
Ember.run -> publishedAt = record.get('publishedAt')
equal(publishedAt, 'today', 'publishedAt should be loaded')
ok(!record.get('incomplete'), 'record should be complete')
, 50)