84 lines
2.3 KiB
CoffeeScript
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)
|
|
|