Lychee = require('../../')
should = require 'should'

Lychee.connect ['pg://vadimdemedes@127.0.0.1:5432/lychee']

describe 'PG', ->
	class Post extends Lychee.Model
		@driver 'pg'
	
		@key 'id', primary: yes
		@key 'title', default: 'Default title'
		@key 'body', default: 'Default body'

	Post = Lychee.setup Post
	PostID = undefined
	
	before (done) ->
		setTimeout ->
			done()
		, 1000

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

	it 'should create another post', (done) ->
		post = new Post title: 'Second post title', body: 'Second post body'
		post.save ->
			should.exist post.id
			done()
	
	it 'should update post', (done) ->
		Post.find (err, posts) ->
			posts.length.should.equal 2
			post = posts[0]
			post.title = 'New title'
			post.save -> done()
	
	it 'should remove post', (done) ->
		Post.find id: PostID, (err, posts) ->
			posts.length.should.equal 2
			post = posts[0]
			post.remove (err) ->
				Post.find (err, posts) ->
					posts.length.should.equal 1
					done()
	
	it 'should remove all posts', (done) ->
		Post.remove ->
			Post.find (err, posts) ->
				posts.length.should.equal 0
				done()