Lychee = require '../../'
should = require 'should'

describe 'REST', ->
	class Post extends Lychee.Model
		@driver 'rest'
		
		@key 'id', primary: yes
		@key 'title', default: 'Default title'
		@key 'body', default: 'Default body'
		
		@url 'http://localhost:8080'

	Post = Lychee.setup Post

	require '../addons/server' # start up test server

	it 'should find posts', (done) ->
		Post.find (err, posts) ->
			posts.length.should.equal 2
			done()

	it 'should create post', (done) ->
		post = new Post title: 'Post title', body: 'Post body'
		post.save ->
			should.exist post.id
			Post.find (err, posts) ->
				posts.length.should.equal 3
				done()

	it 'should find post by id', (done) ->
		Post.find id: 1, (err, posts) ->
			posts[0].title.should.equal 'First'
			done()

	it 'should update first post', (done) ->
		Post.find title: 'First', (err, posts) ->
			post = posts[0]
			post.title.should.equal 'First'
			post.title = 'Updated first'
			post.old.title.should.equal 'First'
			post.save ->
				Post.find id: 1, (err, posts) ->
					posts[0].title.should.equal 'Updated first'
					done()

	it 'should remove first post', (done) ->
		Post.find id: 1, (err, posts) ->
			posts[0].remove ->
				Post.find (err, posts) ->
					posts.length.should.equal 2
					done()

	it 'should remove all posts', (done) ->
		Post.remove ->
			Post.find (err, posts) ->
				posts.length.should.equal 0
				done()