appetizer-ui 0.9.0 → 0.9.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. data/appetizer-ui.gemspec +15 -13
  2. data/lib/appetizer/ui/assets.rb +21 -8
  3. data/lib/appetizer/ui/jasmine/js/jquery-jasmine.js +288 -0
  4. data/lib/appetizer/ui/jasmine/js/spec-runner.coffee +0 -1
  5. data/lib/appetizer/ui/jasmine/views/specs.erb +12 -4
  6. data/lib/appetizer/ui/rake.rb +29 -10
  7. data/lib/appetizer/ui/spec.rb +1 -2
  8. metadata +122 -61
  9. data/lib/appetizer/ui/app/js/appetizer.coffee +0 -15
  10. data/lib/appetizer/ui/app/js/appetizer/core.coffee +0 -20
  11. data/lib/appetizer/ui/app/js/appetizer/model.coffee +0 -1
  12. data/lib/appetizer/ui/app/js/appetizer/router.coffee +0 -70
  13. data/lib/appetizer/ui/app/js/appetizer/view.coffee +0 -139
  14. data/lib/appetizer/ui/app/js/appetizer/xdr.coffee +0 -57
  15. data/lib/appetizer/ui/app/views/client/appetizer/missing.jst.eco +0 -3
  16. data/lib/appetizer/ui/jasmine/js/backbone.modelbinding/appetizerExtensions.spec.js +0 -54
  17. data/lib/appetizer/ui/jasmine/js/backbone.modelbinding/checkboxConventionBindings.spec.js +0 -110
  18. data/lib/appetizer/ui/jasmine/js/backbone.modelbinding/configurableBindingAttributes.spec.js +0 -117
  19. data/lib/appetizer/ui/jasmine/js/backbone.modelbinding/configureAllBindingAttributes.spec.js +0 -139
  20. data/lib/appetizer/ui/jasmine/js/backbone.modelbinding/customConvention.spec.js +0 -53
  21. data/lib/appetizer/ui/jasmine/js/backbone.modelbinding/dataBindConvention.spec.js +0 -151
  22. data/lib/appetizer/ui/jasmine/js/backbone.modelbinding/dataBindMultiple.spec.js +0 -36
  23. data/lib/appetizer/ui/jasmine/js/backbone.modelbinding/dataBindSubstitutions.spec.js +0 -137
  24. data/lib/appetizer/ui/jasmine/js/backbone.modelbinding/globalConfiguraAllBindingAttributes.spec.js +0 -124
  25. data/lib/appetizer/ui/jasmine/js/backbone.modelbinding/globalConfigurableBindingAttributes.spec.js +0 -36
  26. data/lib/appetizer/ui/jasmine/js/backbone.modelbinding/helpers/SpecHelper.js +0 -4
  27. data/lib/appetizer/ui/jasmine/js/backbone.modelbinding/helpers/sample.backbone.app.js +0 -159
  28. data/lib/appetizer/ui/jasmine/js/backbone.modelbinding/html5inputConventionBinding.spec.js +0 -142
  29. data/lib/appetizer/ui/jasmine/js/backbone.modelbinding/modelUnbinding.spec.js +0 -73
  30. data/lib/appetizer/ui/jasmine/js/backbone.modelbinding/noConflict.spec.js +0 -36
  31. data/lib/appetizer/ui/jasmine/js/backbone.modelbinding/radioButtonConventionBinding.spec.js +0 -41
  32. data/lib/appetizer/ui/jasmine/js/backbone.modelbinding/selectboxConventionBindings.spec.js +0 -60
  33. data/lib/appetizer/ui/jasmine/js/backbone.modelbinding/textareaConventionBinding.spec.js +0 -29
  34. data/lib/appetizer/ui/jasmine/js/backbone.modelbinding/textboxConventionBinding.spec.js +0 -66
  35. data/lib/appetizer/ui/vendor/js/backbone.js +0 -1290
  36. data/lib/appetizer/ui/vendor/js/backbone.modelbinding.js +0 -624
  37. data/lib/appetizer/ui/vendor/js/jquery.js +0 -9266
  38. data/lib/appetizer/ui/vendor/js/json2.js +0 -480
  39. data/lib/appetizer/ui/vendor/js/underscore.js +0 -999
  40. data/lib/appetizer/ui/vendor/js/underscore.string.js +0 -480
@@ -1,57 +0,0 @@
1
- # IE XDomainRequest support. Oh how I hate it.
2
-
3
- statii =
4
- 200: "OK"
5
- 201: "CREATED"
6
- 202: "ACCEPTED"
7
- 204: "NO CONTENT"
8
- 401: "UNAUTHORIZED"
9
- 403: "FORBIDDEN"
10
- 404: "NOT FOUND"
11
- 409: "CONFLICT"
12
- 422: "PRECONDITION FAILED"
13
- 500: "INTERNAL SERVER ERROR"
14
-
15
- Appetizer.transportXDR = (settings, original, xhr) ->
16
- xdr = new XDomainRequest
17
- sep = if settings.url.indexOf("?") is -1 then "?" else "&"
18
- url = [settings.url, "xdr"].join sep
19
-
20
- xdr.open "POST", url
21
-
22
- abort: ->
23
- xdr.abort()
24
-
25
- send: (headers, complete) ->
26
- xdr.onerror = ->
27
- console.log "FIX: xdr onerror"
28
-
29
- xdr.onload = ->
30
- [status, headers, body] =
31
- try
32
- $.parseJSON xdr.responseText
33
- catch err
34
- headers =
35
- "Content-Type" : "application/json;charset=UTF-8"
36
-
37
- body = JSON.stringify
38
- request : ["Unexpected platform error."]
39
- original : xdr.responseText
40
-
41
- [503, headers, body]
42
-
43
- description = statii[status] or "UNKNOWN"
44
- responses = text: body
45
-
46
- complete status, description, responses, headers
47
-
48
- xdr.onprogress = ->
49
-
50
- # HACK: I wasn't able to get multiple requests to work (only
51
- # the first one would ever trigger `onload`) until I assigned
52
- # this empty handler to `onprogress`. What the actual fuck.
53
-
54
- xdr.ontimeout = ->
55
- console.log "FIX: xdr ontimeout"
56
-
57
- xdr.send JSON.stringify [settings.type, headers, settings.data]
@@ -1,3 +0,0 @@
1
- <div style="background-color:pink;border:1px solid red">
2
- Missing template for <%= @constructor.name %>.
3
- </div>
@@ -1,54 +0,0 @@
1
- describe("appetizer-ui extensions", function(){
2
- beforeEach(function(){
3
- this.model = new AModel({
4
- villain: "mrMonster",
5
- niceDude: "Dr No",
6
- pet: { smelly: "dog" }
7
- });
8
- this.model.villain = function () { return "Le Grand Mechant Loup" };
9
- this.model.niceDude = "James Bond";
10
- this.model.country = new AModel({
11
- withFood: { hasWine: "France" }
12
- });
13
- this.view = new AppetizerView({model: this.model});
14
- this.view.render();
15
- });
16
-
17
- it("grabs attribute from methods, if existing", function(){
18
- var el = $(this.view.el).find("#villain");
19
- expect(el.text()).toBe("Le Grand Mechant Loup");
20
- });
21
-
22
- it("grabs attribute from values, if existing", function(){
23
- var el = $(this.view.el).find("#mrNice");
24
- expect(el.text()).toBe("James Bond");
25
- });
26
-
27
- it("grabs attribute from object attributes.", function(){
28
- var el = $(this.view.el).find("#pet");
29
- expect(el.text()).toBe("dog");
30
- });
31
-
32
- it("sets attribute from object attributes.", function(){
33
- var el = this.view.$("#cat");
34
- el.val("cat");
35
- el.trigger("change");
36
-
37
- expect(this.model.get("pet").smelly).toBe("dog");
38
- expect(this.model.get("pet").fluffy).toBe("cat");
39
- });
40
-
41
- it("grabs attribute from associated models.", function(){
42
- var el = $(this.view.el).find("#country");
43
- expect(el.text()).toBe("France");
44
- });
45
-
46
- it("sets attribute from associated objects.", function(){
47
- var el = this.view.$("#usa");
48
- el.val("USA");
49
- el.trigger("change");
50
-
51
- expect(this.model.country.get("withFood").hasWine).toBe("France");
52
- expect(this.model.country.get("withFood").hasBurgers).toBe("USA");
53
- });
54
- });
@@ -1,110 +0,0 @@
1
- describe("checkbox convention bindings", function(){
2
-
3
- describe("checkbox element binding", function(){
4
- beforeEach(function(){
5
- this.model = new AModel({
6
- drivers_license: true,
7
- motorcycle_license: false,
8
- });
9
- this.view = new AView({model: this.model});
10
- this.view.render();
11
- });
12
-
13
- it("bind view changes to the model's field", function(){
14
- var el = this.view.$("#drivers_license");
15
- el.removeAttr("checked");
16
- el.trigger('change');
17
- expect(this.model.get('drivers_license')).toBeFalsy();
18
- });
19
-
20
- it("bind model field changes to the form input", function(){
21
- var el = this.view.$("#drivers_license");
22
-
23
- // uncheck it
24
- this.model.set({drivers_license: false});
25
- var selected = el.attr("checked");
26
- expect(selected).toBeFalsy();
27
-
28
- // then check it
29
- this.model.set({drivers_license: true});
30
- var selected = el.attr("checked");
31
- expect(selected).toBeTruthy();
32
- });
33
-
34
- it("checks the box for a truthy value, on render", function(){
35
- var el = this.view.$("#drivers_license");
36
- var selected = el.attr("checked");
37
-
38
- expect(selected).toBeTruthy();
39
- });
40
-
41
- it("unchecks the box for a falsy value, on render", function(){
42
- var el = this.view.$("#motorcycle_license");
43
- var selected = el.attr("checked");
44
-
45
- expect(selected).toBeFalsy();
46
- });
47
- });
48
-
49
- describe("when binding a 1 to a checkbox", function(){
50
- beforeEach(function(){
51
- this.model = new AModel({
52
- binary_checkbox: 1
53
- });
54
- this.view = new AView({model: this.model});
55
- this.view.render();
56
- this.el = this.view.$("#binary_checkbox");
57
- });
58
-
59
- it("checks the box for a 1 (one) value, on render", function(){
60
- var selected = this.el.attr("checked");
61
- expect(selected).toBeTruthy();
62
- });
63
-
64
- it("unchecks the box when the value is changed to a 0 (zero)", function(){
65
- this.model.set({binary_checkbox: 0});
66
- var selected = this.el.attr("checked");
67
- expect(selected).toBeFalsy();
68
- });
69
-
70
- });
71
-
72
- describe("when binding a 0 to a checkbox", function(){
73
- beforeEach(function(){
74
- this.model = new AModel({
75
- binary_checkbox: 0
76
- });
77
- this.view = new AView({model: this.model});
78
- this.view.render();
79
- this.el = this.view.$("#binary_checkbox");
80
- });
81
-
82
- it("unchecks the box for a 0 (zero) value, on render", function(){
83
- var selected = this.el.attr("checked");
84
- expect(selected).toBeFalsy();
85
- });
86
-
87
- it("checks the box when the value is changed to a 1 (one)", function(){
88
- this.model.set({binary_checkbox: 1});
89
- var selected = this.el.attr("checked");
90
- expect(selected).toBeTruthy();
91
- });
92
- });
93
-
94
- describe("when there is no value in the model", function(){
95
- beforeEach(function(){
96
- this.model = new AModel();
97
- this.view = new AView({model: this.model});
98
- this.view.render();
99
- });
100
-
101
- it("bind an unchecked checkbox value to the model, on render", function(){
102
- expect(this.model.get('drivers_license')).toBeFalsy();
103
- });
104
-
105
- it("bind a checked checkbox value to the model, on render", function(){
106
- expect(this.model.get('motorcycle_license')).toBeTruthy();
107
- });
108
- });
109
-
110
- });
@@ -1,117 +0,0 @@
1
- describe("configurableBindingAttributes", function(){
2
- beforeEach(function(){
3
- this.model = new AModel({
4
- super_power: "mega pooping",
5
- education: "graduate",
6
- graduated: "maybe",
7
- drivers_license: true
8
- });
9
-
10
- this.view = new AnotherView({model: this.model});
11
- this.view.render();
12
- });
13
-
14
- describe("text element binding using configurable attribute", function(){
15
- it("bind view changes to the model's field, by configurable convention", function(){
16
- var el = this.view.$(".super_power");
17
- el.val("x ray vision");
18
- el.trigger('change');
19
-
20
- expect(this.model.get('super_power')).toEqual("x ray vision");
21
- });
22
-
23
- it("bind model field changes to the form input, by convention of id", function(){
24
- this.model.set({super_power: "eating raw vegetables"});
25
- var el = this.view.$(".super_power");
26
- expect(el.val()).toEqual("eating raw vegetables");
27
- });
28
-
29
- it("binds the model's value to the form field on render", function(){
30
- var el = this.view.$(".super_power");
31
- expect(el.val()).toEqual("mega pooping");
32
- });
33
- });
34
-
35
- describe("radio element binding using configurable attribute", function(){
36
- it("bind view changes to the model's field, by configurable convention", function(){
37
- var el = $(this.view.el).find("#graduated_no");
38
- el.attr("checked", "checked");
39
- el.trigger('change');
40
- expect(this.model.get('graduated')).toEqual("no");
41
- });
42
-
43
- it("bind model field changes to the form input, by configurable convention", function(){
44
- this.model.set({graduated: "yes"});
45
- var el = this.view.$("#graduated_yes");
46
- var selected = el.attr("checked");
47
-
48
- expect(selected).toBeTruthy();
49
- });
50
-
51
- it("binds the model's value to the form field on render", function(){
52
- var el = this.view.$("input[type=radio][class=graduated]:checked");
53
- var selected = el.val();
54
-
55
- expect(selected).toBe("maybe");
56
- });
57
- });
58
-
59
- describe("select element binding using configurable attribute", function(){
60
- it("bind view changes to the model's field, by configurable convention", function(){
61
- var el = this.view.$(".education");
62
- el.val("college");
63
- el.trigger('change');
64
-
65
- expect(this.model.get('education')).toEqual("college");
66
- });
67
-
68
- it("bind model field changes to the form input, by configurable convention", function(){
69
- this.model.set({education: "high school"});
70
- var el = this.view.$(".education");
71
- expect(el.val()).toEqual("high school");
72
- });
73
-
74
- it("binds the model's value to the form field on render", function(){
75
- var el = this.view.$(".education");
76
- expect(el.val()).toEqual("graduate");
77
- });
78
-
79
- it("applies the text of the selection to the model", function(){
80
- var el = this.view.$(".education");
81
- el.val("grade_school");
82
- el.trigger('change');
83
-
84
- expect(this.model.get('education_text')).toEqual("i dun learned at grade skool");
85
- });
86
- });
87
-
88
- describe("checkbox element binding using configurable attribute", function(){
89
- it("bind view changes to the model's field", function(){
90
- var el = this.view.$(".drivers_license");
91
- el.removeAttr("checked");
92
- el.trigger('change');
93
- expect(this.model.get('drivers_license')).toBeFalsy();
94
- });
95
-
96
- it("bind model field changes to the form input", function(){
97
- var el = this.view.$(".drivers_license");
98
-
99
- // uncheck it
100
- this.model.set({drivers_license: false});
101
- var selected = el.attr("checked");
102
- expect(selected).toBeFalsy();
103
-
104
- // then check it
105
- this.model.set({drivers_license: true});
106
- var selected = el.attr("checked");
107
- expect(selected).toBeTruthy();
108
- });
109
-
110
- it("binds the model's value to the form field on render", function(){
111
- var el = this.view.$(".drivers_license");
112
- var selected = el.attr("checked");
113
-
114
- expect(selected).toBeTruthy();
115
- });
116
- });
117
- });
@@ -1,139 +0,0 @@
1
- describe("configure all binding attributes", function(){
2
- beforeEach(function(){
3
- this.model = new AModel({
4
- name: "some dude",
5
- bio: "not much",
6
- education: "graduate",
7
- graduated: "maybe",
8
- drivers_license: true
9
- });
10
-
11
- this.view = new AllBindingAttributesView({model: this.model});
12
- this.view.render();
13
- });
14
-
15
- describe("text element binding using configurable attribute", function(){
16
- it("bind view changes to the model's field, by configurable convention", function(){
17
- var el = this.view.$("#v_name");
18
- el.val("that guy");
19
- el.trigger('change');
20
-
21
- expect(this.model.get('name')).toEqual("that guy");
22
- });
23
-
24
- it("bind model field changes to the form input, by convention of id", function(){
25
- this.model.set({name: "joe bob"});
26
- var el = this.view.$("#v_name");
27
- expect(el.val()).toEqual("joe bob");
28
- });
29
-
30
- it("binds the model's value to the form field on render", function(){
31
- var el = this.view.$("#v_name");
32
- expect(el.val()).toEqual("some dude");
33
- });
34
- });
35
-
36
- describe("textarea element binding using configurable attribute", function(){
37
- it("bind view changes to the model's field, by configurable convention", function(){
38
- var el = this.view.$("#v_bio");
39
- el.val("biography");
40
- el.trigger('change');
41
-
42
- expect(this.model.get('bio')).toEqual("biography");
43
- });
44
-
45
- it("bind model field changes to the form input, by convention of id", function(){
46
- this.model.set({bio: "biography, schmiography"});
47
- var el = this.view.$("#v_bio");
48
- expect(el.val()).toEqual("biography, schmiography");
49
- });
50
-
51
- it("binds the model's value to the form field on render", function(){
52
- var el = this.view.$("#v_bio");
53
- expect(el.val()).toEqual("not much");
54
- });
55
- });
56
-
57
- describe("radio element binding using configurable attribute", function(){
58
- it("bind view changes to the model's field, by configurable convention", function(){
59
- var el = $(this.view.el).find("#graduated_no");
60
- el.attr("checked", "checked");
61
- el.trigger('change');
62
- expect(this.model.get('graduated')).toEqual("no");
63
- });
64
-
65
- it("bind model field changes to the form input, by configurable convention", function(){
66
- this.model.set({graduated: "yes"});
67
- var el = this.view.$("#graduated_yes");
68
- var selected = el.attr("checked");
69
-
70
- expect(selected).toBeTruthy();
71
- });
72
-
73
- it("binds the model's value to the form field on render", function(){
74
- var el = this.view.$("input[type=radio][class=graduated]:checked");
75
- var selected = el.val();
76
-
77
- expect(selected).toBe("maybe");
78
- });
79
- });
80
-
81
- describe("select element binding using configurable attribute", function(){
82
- it("bind view changes to the model's field, by configurable convention", function(){
83
- var el = this.view.$(".education");
84
- el.val("college");
85
- el.trigger('change');
86
-
87
- expect(this.model.get('education')).toEqual("college");
88
- });
89
-
90
- it("bind model field changes to the form input, by configurable convention", function(){
91
- this.model.set({education: "high school"});
92
- var el = this.view.$(".education");
93
- expect(el.val()).toEqual("high school");
94
- });
95
-
96
- it("binds the model's value to the form field on render", function(){
97
- var el = this.view.$(".education");
98
- expect(el.val()).toEqual("graduate");
99
- });
100
-
101
- it("applies the text of the selection to the model", function(){
102
- var el = this.view.$(".education");
103
- el.val("grade_school");
104
- el.trigger('change');
105
-
106
- expect(this.model.get('education_text')).toEqual("i dun learned at grade skool");
107
- });
108
- });
109
-
110
- describe("checkbox element binding using configurable attribute", function(){
111
- it("bind view changes to the model's field", function(){
112
- var el = this.view.$(".drivers_license");
113
- el.removeAttr("checked");
114
- el.trigger('change');
115
- expect(this.model.get('drivers_license')).toBeFalsy();
116
- });
117
-
118
- it("bind model field changes to the form input", function(){
119
- var el = this.view.$(".drivers_license");
120
-
121
- // uncheck it
122
- this.model.set({drivers_license: false});
123
- var selected = el.attr("checked");
124
- expect(selected).toBeFalsy();
125
-
126
- // then check it
127
- this.model.set({drivers_license: true});
128
- var selected = el.attr("checked");
129
- expect(selected).toBeTruthy();
130
- });
131
-
132
- it("binds the model's value to the form field on render", function(){
133
- var el = this.view.$(".drivers_license");
134
- var selected = el.attr("checked");
135
-
136
- expect(selected).toBeTruthy();
137
- });
138
- });
139
- });