Changed the pre-generated tests to these passing ones
describe 'UsersController', ->
controller = undefined
user = undefined
url = undefined
agent = agent or {}
beforeEach (done) ->
controller = App.UsersController.create()
agent.controller = controller
Tower.start(done)
afterEach ->
Tower.stop()
delete agent.controller
describe 'routes', ->
test 'index', ->
assert.equal urlFor(App.User), "/users"
test 'new', ->
user = App.User.build()
assert.equal urlFor(user, action: 'new'), "/users/new"
test 'show', ->
user = App.User.build(id: 1)
user.save()
assert.equal urlFor(user), "/users/#{user.get('id')}"
test 'edit', ->
user = App.User.build(id: 1)
user.save()
assert.equal urlFor(user, action: 'edit'), "/users/#{user.get('id')}/edit"
describe '#index', ->
beforeEach (done) ->
factory 'user', (error, record) =>
user = record
done()
test 'render json', (done) ->
get urlFor(App.User), format: "json", (request) ->
assert.equal request.headers["content-type"], 'application/json'
done()
describe '#new', ->
describe '#create', ->
beforeEach ->
url = urlFor(App.User)
test 'params', (done) ->
params = {}
post url, format: "json", params: params, (response) ->
App.User.count (error, count) =>
assert.equal count, 1
done()
describe "#show", ->
describe "#edit", ->
describe "#update", ->
describe "#destroy", ->
user = null
describe "App.User", ->
describe "fields", ->
beforeEach (done) ->
user = App.User.build
email: "A email"
firstName: "A firstName"
lastName: "A lastName"
done()
test "email", ->
assert.ok user.get("email")
test "firstName", ->
assert.ok user.get("firstName")
test "lastName", ->
assert.ok user.get("lastName")
describe "relations", ->
require 'tower'
global.chai = require "chai"
global.assert = chai.assert
global.expect = chai.expect
global.sinon = require 'sinon'
global.async = require 'async'
global.test = it
global.cb = true # some library has a global leak...
global.Faker = require 'Faker'
global.factory = -> Tower.Factory.create(arguments...)
global.urlFor = Tower.urlFor
global.get = _.get
global.post = _.post
global.put = _.put
global.destroy = _.destroy
global.app = Tower.Application.instance()
# Initialize the app before everything.
before (done) ->
app.initialize done
Tower.Factory.define 'post', ->
title: Faker.Lorem.words()
body: Faker.Lorem.sentence()
Tower.Factory.define 'user', ->
email: Faker.Internet.email()
firstName: Faker.Name.firstName()
lastName: Faker.Name.lastName()
# Run this before each action
beforeEach (done) ->
if Tower.client
Tower.StoreMemory.clean(done)
else
Tower.StoreMongodb.clean(done)
describe 'PostsController', ->
controller = undefined
post = undefined
url = undefined
agent = agent or {}
beforeEach (done) ->
controller = App.PostsController.create()
agent.controller = controller
Tower.start(done)
afterEach ->
Tower.stop()
delete agent.controller
describe 'routes', ->
test 'index', ->
assert.equal urlFor(App.Post), "/posts"
test 'new', ->
post = App.Post.build()
assert.equal urlFor(post, action: 'new'), "/posts/new"
test 'show', ->
post = App.Post.build(id: 1)
post.save()
assert.equal urlFor(post), "/posts/#{post.get('id')}"
test 'edit', ->
post = App.Post.build(id: 1)
post.save()
assert.equal urlFor(post, action: 'edit'), "/posts/#{post.get('id')}/edit"
describe '#index', ->
beforeEach (done) ->
factory 'post', (error, record) =>
post = record
post.save()
done()
test 'render json', (done) ->
get urlFor(App.Post), format: "json", (req) ->
assert.equal req.headers["content-type"], 'application/json'
done()
describe '#new', ->
describe '#create', ->
beforeEach ->
url = urlFor(App.Post)
test 'params', (done) ->
params = {}
_.post url, format: "json", params: params, (response) ->
App.Post.count (error, count) =>
assert.equal count, 1
done()
describe "#show", ->
describe "#edit", ->
describe "#update", ->
describe "#destroy", ->
post = null
describe "App.Post", ->
describe "fields", ->
beforeEach (done) ->
post = App.Post.build
title: "A title"
body: "A body"
userId: "A user id"
done()
test "title", ->
assert.ok post.get("title")
test "body", ->
assert.ok post.get("body")
test "userId", ->
assert.ok post.get("userId")
describe "relations", ->
--require coffee-script ./test/server.coffee
--growl
--reporter spec
--ui bdd
--timeout 2000
--globals r
* change line in mocha.opts to server.coffee, add --globals r (because something in Faker.js causes a leak)
* Add "global.Faker" to server.coffee
* Add factory definitions to server.coffee
* Add *.save() to controller tests show, edit and index
* Change to request.headers['content-type']
* Changed post to _.post in post controller's create test because the 'post' variable overrides the global alias
* changed new App.Post to App.Post.build.