Skip to content

Commit

Permalink
Merge pull request #9 from markchadwick/master
Browse files Browse the repository at this point in the history
[Breaking] Upgrade to jQuery(ify) 1.9.1
  • Loading branch information
markchadwick committed Mar 15, 2013
2 parents c957633 + 292090a commit f5d4f88
Show file tree
Hide file tree
Showing 20 changed files with 90 additions and 57 deletions.
2 changes: 1 addition & 1 deletion controllers/controller.coffee
@@ -1,5 +1,5 @@
Backbone = require 'backbone' Backbone = require 'backbone'
$ = require 'jqueryify2' $ = require 'jqueryify'


events = require '../lib/events' events = require '../lib/events'


Expand Down
2 changes: 1 addition & 1 deletion controllers/form_controller.coffee
@@ -1,5 +1,5 @@
_ = require 'underscore' _ = require 'underscore'
Deferred = require('jqueryify2').Deferred Deferred = require('jqueryify').Deferred


Controller = require './controller' Controller = require './controller'


Expand Down
2 changes: 1 addition & 1 deletion controllers/login_controller.coffee
@@ -1,4 +1,4 @@
Deferred = require('jqueryify2').Deferred Deferred = require('jqueryify').Deferred
Backbone = require 'backbone' Backbone = require 'backbone'


Controller = require './controller' Controller = require './controller'
Expand Down
2 changes: 1 addition & 1 deletion lib/combiner.coffee
@@ -1,4 +1,4 @@
$ = require 'jqueryify2' $ = require 'jqueryify'


module.exports = module.exports =
combine: (deferreds) -> combine: (deferreds) ->
Expand Down
2 changes: 1 addition & 1 deletion lib/forms.coffee
@@ -1,7 +1,7 @@
require './date' require './date'


_ = require 'underscore' _ = require 'underscore'
jQuery = require 'jqueryify2' jQuery = require 'jqueryify'
Deferred = jQuery.Deferred Deferred = jQuery.Deferred
JSON = require 'json2ify' JSON = require 'json2ify'


Expand Down
27 changes: 15 additions & 12 deletions models/collection.coffee
Expand Up @@ -11,18 +11,21 @@ class Collection extends Backbone.Collection


lazy: false lazy: false


syncTo: (otherCol) -> # the timeout is used to account for eventual consistency. This can be removed
@on('sync add remove', ((model, resp, opts) -> # if we are using an ACID database.
unless opts.from_handler syncTo: (otherCol, timeout=300) ->
# the timeout is used to account for eventual consistency. This can be events = 'sync add remove'
# removed if we are using an ACID database.
setTimeout((-> otherCol.fetch(update: true, from_handler: true)), 300) syncThis = (model, resp, opts) ->
), this) fetch = -> otherCol.fetch(update: true, from_handler: true)

unless opts.from_handler then setTimeout(fetch, timeout)
otherCol.on('sync add remove', ((model, resp, opts) =>
unless opts.from_handler syncOther = (model, resp, opts) =>
setTimeout((=> @fetch(update: true, from_handler: true)), 300) fetch = => @fetch(update: true, from_handler: true)
), this) unless opts.from_handler then setTimeout(fetch, timeout)

@on(events, syncThis, this)
otherCol.on(events, syncOther, this)




module.exports = events.track Collection module.exports = events.track Collection
2 changes: 1 addition & 1 deletion models/loader.coffee
@@ -1,4 +1,4 @@
$ = require 'jqueryify2' $ = require 'jqueryify'
combine = require('../lib/combiner').combine combine = require('../lib/combiner').combine


root = '' root = ''
Expand Down
2 changes: 1 addition & 1 deletion models/user.coffee
@@ -1,4 +1,4 @@
$ = require 'jqueryify2' $ = require 'jqueryify'
JSON = require 'json2ify' JSON = require 'json2ify'




Expand Down
4 changes: 2 additions & 2 deletions package.json
@@ -1,9 +1,9 @@
{ {
"name": "quips", "name": "quips",
"version": "0.0.46", "version": "0.1.0",
"dependencies": { "dependencies": {
"coffee-script": "1.3.3", "coffee-script": "1.3.3",
"jqueryify2": "0.0.1", "jqueryify": "1.9.1",
"json2ify": "0.0.1", "json2ify": "0.0.1",
"underscore": "1.4.3", "underscore": "1.4.3",
"backbone": "0.9.10", "backbone": "0.9.10",
Expand Down
2 changes: 1 addition & 1 deletion test/controllers/controller_spec.coffee
@@ -1,6 +1,6 @@
test = require '../setup' test = require '../setup'
expect = require('chai').expect expect = require('chai').expect
$ = require 'jqueryify2' $ = require 'jqueryify'


Controller = require 'controllers/controller' Controller = require 'controllers/controller'
View = require 'views/view' View = require 'views/view'
Expand Down
45 changes: 32 additions & 13 deletions test/lib/combiner_spec.coffee
@@ -1,7 +1,8 @@
test = require '../setup' test = require '../setup'
expect = require('chai').expect
expect = require('chai').expect
combine = require('lib/combiner').combine combine = require('lib/combiner').combine
$ = require 'jqueryify2' $ = require 'jqueryify'


describe 'Deferred combiner', -> describe 'Deferred combiner', ->
beforeEach -> beforeEach ->
Expand All @@ -25,7 +26,7 @@ describe 'Deferred combiner', ->
d1.resolve() d1.resolve()
d2.resolve() d2.resolve()


it 'should propage the first error', (done) -> it 'should propagate the first error', (done) ->
willSucceed = $.Deferred() willSucceed = $.Deferred()
willFail = $.Deferred() willFail = $.Deferred()


Expand All @@ -36,17 +37,35 @@ describe 'Deferred combiner', ->


willFail.reject 'cuz' willFail.reject 'cuz'


expect(willSucceed.isRejected()).to.be.false expect(willSucceed.state()).to.equal 'pending'
expect(willSucceed.isResolved()).to.be.false expect(willFail.state()).to.equal 'rejected'
expect(combined.state()).to.equal 'rejected'


expect(willFail.isRejected()).to.be.true willSucceed.resolve 'gooies'
expect(willFail.isResolved()).to.be.false


expect(combined.isRejected()).to.be.true expect(willSucceed.state()).to.equal 'resolved'
expect(combined.isResolved()).to.be.false expect(willFail.state()).to.equal 'rejected'
expect(combined.state()).to.equal 'rejected'


# We should be able to get results after a failure without error describe 'jQuery deferreds', ->
willSucceed.resolve 'gooies' beforeEach ->
@state = test.create()


expect(willSucceed.isResolved()).to.be.true afterEach ->
expect(combined.isRejected()).to.be.true @state.destroy()

it 'should notify of failures', (done) ->
deferred = $.Deferred()
promise = deferred.promise()

promise.fail (reason) ->
expect(promise.state()).to.equal 'rejected'
expect(reason).to.equal "Ain't nobody got time for that"
done()

deferred.reject "Ain't nobody got time for that"

it 'should expose state', ->
willFail = $.Deferred()
willFail.reject 'cuz'
expect(willFail.state()).to.equal 'rejected'
19 changes: 15 additions & 4 deletions test/lib/forms_spec.coffee
Expand Up @@ -2,7 +2,7 @@ require 'lib/date'


test = require '../setup' test = require '../setup'
expect = require('chai').expect expect = require('chai').expect
$ = require 'jqueryify2' $ = require 'jqueryify'
JSON = require 'json2ify' JSON = require 'json2ify'


Model = require 'models/model' Model = require 'models/model'
Expand Down Expand Up @@ -67,7 +67,18 @@ describe 'Form View', ->
it 'should populate a select field', -> it 'should populate a select field', ->
@lilBilly.set(gender: 'male') @lilBilly.set(gender: 'male')
form = new TestForm(@lilBilly).render() form = new TestForm(@lilBilly).render()
expect(form.$el.find('select[name=gender] option[selected]')).to.have.val 'male' expect(form.$el.find('select[name=gender]')).to.have.val 'male'

it 'should submit the value of a select view', (done) ->
test.when 'POST', '/lils/billy', (req) ->
postData = $.parseJSON(req.requestText)
expect(postData.gender).to.equal 'male'
done()

@lilBilly.set(gender: 'male')
form = new TestForm(@lilBilly).render()
form.$el.find('form').submit()



describe 'when getting an update', -> describe 'when getting an update', ->


Expand Down Expand Up @@ -125,7 +136,7 @@ describe 'Form View', ->


it 'should notify instance deferred on success', (done) -> it 'should notify instance deferred on success', (done) ->
test.when 'POST', '/lils/billy', (req) -> test.when 'POST', '/lils/billy', (req) ->
status: 200 status: 204


@form.deferred.progress -> @form.deferred.progress ->
done() done()
Expand All @@ -134,7 +145,7 @@ describe 'Form View', ->


it 'should fire a saved event on success', (done) -> it 'should fire a saved event on success', (done) ->
test.when 'POST', '/lils/billy', (req) -> test.when 'POST', '/lils/billy', (req) ->
status: 200 status: 204


@form.on('saved', (-> @form.on('saved', (->
done()), @form) done()), @form)
Expand Down
14 changes: 7 additions & 7 deletions test/models/collection_spec.coffee
Expand Up @@ -35,7 +35,7 @@ describe 'Collection', ->


test.when 'GET', '/mock1/', => test.when 'GET', '/mock1/', =>
@mock1FetchCount++ @mock1FetchCount++
body: JSON.stringify([{id: 2},{id: 3}]) body: JSON.stringify([{id: 2}, {id: 3}])


test.when 'GET', '/mock2/', => test.when 'GET', '/mock2/', =>
@mock2FetchCount++ @mock2FetchCount++
Expand All @@ -48,7 +48,7 @@ describe 'Collection', ->
@clock.restore() @clock.restore()


it 'should fetch the other collection when a model is added', -> it 'should fetch the other collection when a model is added', ->
@mock1.syncTo(@mock2) @mock1.syncTo(@mock2, 0)
@mock2.add(new MockModel2()) @mock2.add(new MockModel2())
@mock1.add(new MockModel1()) @mock1.add(new MockModel1())
@mock1.add(new MockModel1()) @mock1.add(new MockModel1())
Expand All @@ -62,7 +62,7 @@ describe 'Collection', ->
@mock1.add(new MockModel1(id: 2)) @mock1.add(new MockModel1(id: 2))
@mock1.add(new MockModel1(id: 3)) @mock1.add(new MockModel1(id: 3))


@mock1.syncTo(@mock2) @mock1.syncTo(@mock2, 0)
@mock2.remove([1]) @mock2.remove([1])
@mock1.remove([2, 3]) @mock1.remove([2, 3])
@clock.tick(300) @clock.tick(300)
Expand All @@ -72,15 +72,15 @@ describe 'Collection', ->


it 'should fetch the other collection when a model is saved', -> it 'should fetch the other collection when a model is saved', ->
test.when 'PUT', '/mock1/2', -> test.when 'PUT', '/mock1/2', ->
status: 200 status: 204


model = new MockModel1(id: 2) model = new MockModel1(id: 2)


@mock2.add(new MockModel2(id: 1)) @mock2.add(new MockModel2(id: 1))
@mock1.add(model) @mock1.add(model)
@mock1.add(new MockModel1(id: 3)) @mock1.add(new MockModel1(id: 3))


@mock1.syncTo(@mock2) @mock1.syncTo(@mock2, 0)
model.save() model.save()
@clock.tick(300) @clock.tick(300)


Expand All @@ -94,7 +94,7 @@ describe 'Collection', ->
@mock1.add(model) @mock1.add(model)
@mock1.add(new MockModel1(id: 3)) @mock1.add(new MockModel1(id: 3))


@mock1.syncTo(@mock2) @mock1.syncTo(@mock2, 0)
model.set(name: 'test') model.set(name: 'test')
@clock.tick(300) @clock.tick(300)


Expand All @@ -114,7 +114,7 @@ describe 'Collection', ->


model = new MockModel1(id: 2) model = new MockModel1(id: 2)
@mock1.add(model) @mock1.add(model)
@mock1.syncTo(@mock2) @mock1.syncTo(@mock2, 0)


for i in [1..100] for i in [1..100]
@modelSaved = false @modelSaved = false
Expand Down
10 changes: 5 additions & 5 deletions test/models/loader_spec.coffee
@@ -1,6 +1,6 @@
test = require '../setup' test = require '../setup'
expect = require('chai').expect expect = require('chai').expect
$ = require 'jqueryify2' $ = require 'jqueryify'


Collection = require 'models/collection' Collection = require 'models/collection'
Model = require 'models/model' Model = require 'models/model'
Expand All @@ -20,10 +20,10 @@ describe 'Model Loader', ->


it 'should handle collections with a url func', (done) -> it 'should handle collections with a url func', (done) ->
test.when 'GET', 'api-root/my/mock/url', (req) -> test.when 'GET', 'api-root/my/mock/url', (req) ->
status: 200 status: 204


test.when 'GET', 'api-root/my/mock/func/url', (req) -> test.when 'GET', 'api-root/my/mock/func/url', (req) ->
status: 200 status: 204


class MockCollection extends Collection class MockCollection extends Collection
model: MockModel model: MockModel
Expand All @@ -48,11 +48,11 @@ describe 'Model Loader', ->


test.when 'GET', 'api-root/my/mock/func/url1', (req) -> test.when 'GET', 'api-root/my/mock/func/url1', (req) ->
collectionOneFetches++ collectionOneFetches++
status: 200 status: 204


test.when 'GET', 'api-root/my/mock/func/url2', (req) -> test.when 'GET', 'api-root/my/mock/func/url2', (req) ->
collectionTwoFetches++ collectionTwoFetches++
status: 200 status: 204


class FuncOneCollection extends Collection class FuncOneCollection extends Collection
model: MockModel model: MockModel
Expand Down
2 changes: 1 addition & 1 deletion test/setup.coffee
Expand Up @@ -7,7 +7,7 @@ global.document or= jsdom()
global.window or= global.document.createWindow() global.window or= global.document.createWindow()


global.window.confirm = -> true global.window.confirm = -> true
global.jQuery = require 'jqueryify2' global.jQuery = require 'jqueryify'
global.jQuery.contains = -> true global.jQuery.contains = -> true


Backbone = require 'backbone' Backbone = require 'backbone'
Expand Down
2 changes: 1 addition & 1 deletion test/views/list_view_spec.coffee
@@ -1,6 +1,6 @@
test = require '../setup' test = require '../setup'
expect = require('chai').expect expect = require('chai').expect
$ = require 'jqueryify2' $ = require 'jqueryify'
_ = require 'underscore' _ = require 'underscore'


lists = require 'views/list_view' lists = require 'views/list_view'
Expand Down
2 changes: 1 addition & 1 deletion test/views/view_spec.coffee
Expand Up @@ -2,7 +2,7 @@ test = require '../setup'
expect = require('chai').expect expect = require('chai').expect


Backbone = require 'backbone' Backbone = require 'backbone'
$ = require 'jqueryify2' $ = require 'jqueryify'
_ = require 'underscore' _ = require 'underscore'


View = require 'views/view' View = require 'views/view'
Expand Down
2 changes: 1 addition & 1 deletion views/detail_view.coffee
@@ -1,6 +1,6 @@
View = require './view' View = require './view'
Sticky = require '../lib/sticky' Sticky = require '../lib/sticky'
$ = require 'jqueryify2' $ = require 'jqueryify'




class DetailView extends View class DetailView extends View
Expand Down
2 changes: 1 addition & 1 deletion views/navigation_view.coffee
@@ -1,5 +1,5 @@
View = require './view' View = require './view'
$ = require 'jqueryify2' $ = require 'jqueryify'




class NavigationView extends View class NavigationView extends View
Expand Down
2 changes: 1 addition & 1 deletion views/view.coffee
@@ -1,4 +1,4 @@
$ = require 'jqueryify2' $ = require 'jqueryify'
_ = require 'underscore' _ = require 'underscore'
Backbone = require 'backbone' Backbone = require 'backbone'


Expand Down

0 comments on commit f5d4f88

Please sign in to comment.