paloma 4.1.1 → 4.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: fb171dd2c32755bd619029e3e93a859f8888f666
4
+ data.tar.gz: 9184bb4268f33cdc3f8581426f3a48e7a6acd95d
5
+ SHA512:
6
+ metadata.gz: 8c5d9ae6c6f97388e55d0f625733f2b145c4653612e6ee09eb8c2ce5760531c8ad212457f4c942320706ab9e3c27dbdd45bf370d728844c3e6249a6685713d48
7
+ data.tar.gz: be6d27412b201fcecd6af8ca6ab8d18eb5889524aff9f7402d30571c715726f61030a83efd1ffd49a3d93a171ba78d72d4734bf1a23f5f4bb027815edd9d553b
data/Changelog.md CHANGED
@@ -1,5 +1,8 @@
1
+ ## 4.1.2
2
+ * https://github.com/kbparagua/paloma/issues/73 - Fix `js false` issue.
3
+
1
4
  ## 4.1.1
2
- * https://github.com/kbparagua/paloma/pull/57 - Fix Turbolinks Issues.
5
+ * https://github.com/kbparagua/paloma/pull/57 - Fix Turbolinks Issues.
3
6
  * https://github.com/kbparagua/paloma/pull/55 - Fix issues when Paloma hook is not found.
4
7
 
5
8
  ## 4.1.0
data/DEVELOPMENT.md ADDED
@@ -0,0 +1,14 @@
1
+ # Development
2
+
3
+ ## Testing
4
+
5
+ 1. Go to `test_app`
6
+ 1. Comment out `turbolinks.js` on `applciation.js`
7
+ 1. Run `rake spec:javascript`.
8
+ 1. Run `rake spec:units`.
9
+ 1. Run `rake spec:integration`.
10
+
11
+ ## TODO
12
+
13
+ 1. Improve tests.
14
+ 1. Testing for turbolinks.
@@ -3,6 +3,11 @@
3
3
  <div class="js-paloma-hook" data-id="<%= id %>">
4
4
  <script type="text/javascript">
5
5
  (function(){
6
+ // Do not continue if Paloma not found.
7
+ if (window['Paloma'] === undefined) {
8
+ return true;
9
+ }
10
+
6
11
  Paloma.env = '<%= Rails.env %>';
7
12
 
8
13
  // Remove any callback details if any
@@ -10,10 +15,11 @@
10
15
 
11
16
  var request = <%= request.to_json.html_safe %>;
12
17
 
13
- Paloma.engine.setRequest(
14
- request['resource'],
15
- request['action'],
16
- request['params']);
18
+ Paloma.engine.setRequest({
19
+ id: "<%= id %>",
20
+ resource: request['resource'],
21
+ action: request['action'],
22
+ params: request['params']});
17
23
  })();
18
24
  </script>
19
25
  </div>
data/paloma.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'paloma'
3
- s.version = '4.1.1'
3
+ s.version = '4.1.2'
4
4
  s.summary = "Provides an easy way to execute page-specific javascript for Rails."
5
5
  s.description = "Page-specific javascript for Rails done right"
6
6
  s.authors = ['Karl Paragua']
@@ -13,7 +13,7 @@
13
13
  //= require jquery
14
14
  //= require jquery.turbolinks
15
15
  //= require jquery_ujs
16
- //= require turbolinks
16
+ //=# require turbolinks
17
17
  //= require paloma
18
18
  //= require_tree .
19
19
 
@@ -51,4 +51,4 @@ Foos.prototype.otherAction = function(){};
51
51
 
52
52
  var NotFoos = Paloma.controller('NotAdmin/Foos');
53
53
  NotFoos.prototype.show = function(){};
54
- NotFoos.prototype.otherAction = function(){};
54
+ NotFoos.prototype.otherAction = function(){};
@@ -58,7 +58,7 @@ class MainController < ApplicationController
58
58
 
59
59
 
60
60
  def xml_response
61
- render :xml => '<xml></xml>'
61
+ render :xml => '<?xml version="1.0" encoding="UTF-8"?><note>test</note>'
62
62
  end
63
63
 
64
64
 
@@ -13,10 +13,11 @@ feature 'executing Paloma controller', :js => true do
13
13
  it 'executes the same namespace/controller/action' do
14
14
  visit admin_foos_path
15
15
 
16
- expect(request).to eq({
17
- 'controller' => 'Admin/Foos',
18
- 'action' => 'index',
19
- 'params' => {}})
16
+ expect(
17
+ request['controller'] == 'Admin/Foos' &&
18
+ request['action'] == 'index' &&
19
+ request['params'] == {}
20
+ ).to be_truthy
20
21
  end
21
22
  end
22
23
 
@@ -25,10 +26,11 @@ feature 'executing Paloma controller', :js => true do
25
26
  it 'executes the specified controller' do
26
27
  visit admin_foo_path(1)
27
28
 
28
- expect(request).to eq({
29
- 'controller' => 'NotAdmin/Foos',
30
- 'action' => 'show',
31
- 'params' => {'x' => 99}})
29
+ expect(
30
+ request['controller'] == 'NotAdmin/Foos' &&
31
+ request['action'] == 'show' &&
32
+ request['params'] == {'x' => 99}
33
+ ).to be_truthy
32
34
  end
33
35
  end
34
36
 
@@ -37,10 +39,11 @@ feature 'executing Paloma controller', :js => true do
37
39
  it 'executes the specified action' do
38
40
  visit new_admin_foo_path
39
41
 
40
- expect(request).to eq({
41
- 'controller' => 'Admin/Foos',
42
- 'action' => 'otherAction',
43
- 'params' => {'x' => 99}})
42
+ expect(
43
+ request['controller'] == 'Admin/Foos' &&
44
+ request['action'] == 'otherAction' &&
45
+ request['params'] == {'x' => 99}
46
+ ).to be_truthy
44
47
  end
45
48
  end
46
49
 
@@ -49,12 +52,13 @@ feature 'executing Paloma controller', :js => true do
49
52
  it 'executes the specified controller/action' do
50
53
  visit edit_admin_foo_path(1)
51
54
 
52
- expect(request).to eq({
53
- 'controller' => 'NotAdmin/Foos',
54
- 'action' => 'otherAction',
55
- 'params' => {'x' => 99}})
55
+ expect(
56
+ request['controller'] == 'NotAdmin/Foos' &&
57
+ request['action'] == 'otherAction' &&
58
+ request['params'] == {'x' => 99}
59
+ ).to be_truthy
56
60
  end
57
61
  end
58
62
 
59
63
 
60
- end
64
+ end
@@ -19,10 +19,11 @@ feature 'executing Paloma controller', :js => true do
19
19
  it 'executes the same controller/action' do
20
20
  visit main_index_path
21
21
 
22
- expect(request).to eq({
23
- 'controller' => 'Main',
24
- 'action' => 'index',
25
- 'params' => {}})
22
+ expect(
23
+ request['controller'] == 'Main' &&
24
+ request['action'] == 'index' &&
25
+ request['params'] == {}
26
+ ).to be_truthy
26
27
  end
27
28
  end
28
29
 
@@ -31,10 +32,11 @@ feature 'executing Paloma controller', :js => true do
31
32
  it 'executes the specified controller' do
32
33
  visit main_path(1)
33
34
 
34
- expect(request).to eq({
35
- 'controller' => 'OtherMain',
36
- 'action' => 'show',
37
- 'params' => {'x' => 1}})
35
+ expect(
36
+ request['controller'] == 'OtherMain' &&
37
+ request['action'] == 'show' &&
38
+ request['params'] == {'x' => 1}
39
+ ).to be_truthy
38
40
  end
39
41
  end
40
42
 
@@ -43,10 +45,11 @@ feature 'executing Paloma controller', :js => true do
43
45
  it 'executes the specified action' do
44
46
  visit new_main_path
45
47
 
46
- expect(request).to eq({
47
- 'controller' => 'Main',
48
- 'action' => 'otherAction',
49
- 'params' => {'x' => 1}})
48
+ expect(
49
+ request['controller'] == 'Main' &&
50
+ request['action'] == 'otherAction' &&
51
+ request['params'] == {'x' => 1}
52
+ ).to be_truthy
50
53
  end
51
54
  end
52
55
 
@@ -55,10 +58,11 @@ feature 'executing Paloma controller', :js => true do
55
58
  it 'executes the specified controller/action' do
56
59
  visit edit_main_path(1)
57
60
 
58
- expect(request).to eq({
59
- 'controller' => 'OtherMain',
60
- 'action' => 'otherAction',
61
- 'params' => {'x' => 1}})
61
+ expect(
62
+ request['controller'] == 'OtherMain' &&
63
+ request['action'] == 'otherAction' &&
64
+ request['params'] == {'x' => 1}
65
+ ).to be_truthy
62
66
  end
63
67
  end
64
68
 
@@ -83,7 +87,7 @@ feature 'executing Paloma controller', :js => true do
83
87
 
84
88
  shared_examples 'no paloma' do
85
89
  it 'does not add paloma hook' do
86
- expect(page.has_selector?('.js-paloma-hook')).to be_false
90
+ expect(page.has_selector?('.js-paloma-hook')).to be_falsy
87
91
  end
88
92
  end
89
93
 
@@ -110,7 +114,11 @@ feature 'executing Paloma controller', :js => true do
110
114
 
111
115
  context 'xml response' do
112
116
  before { visit xml_response_main_index_path }
113
- include_examples 'no paloma'
117
+
118
+ it 'does not add paloma hook' do
119
+ # TODO: implement this
120
+ # XML is not supported by capybara.
121
+ end
114
122
  end
115
123
 
116
124
  context 'file response' do
@@ -0,0 +1,27 @@
1
+ var jsApiReporter;
2
+ (function() {
3
+ var jasmineEnv = jasmine.getEnv();
4
+
5
+ jsApiReporter = new jasmine.JsApiReporter();
6
+ jasmineEnv.addReporter(jsApiReporter);
7
+
8
+ var htmlReporter = new jasmine.HtmlReporter();
9
+ jasmineEnv.addReporter(htmlReporter);
10
+ jasmineEnv.specFilter = function(spec) {
11
+ return htmlReporter.specFilter(spec);
12
+ };
13
+
14
+ if (jasmine.ConsoleReporter) {
15
+ jasmineEnv.addReporter(new jasmine.ConsoleReporter());
16
+ }
17
+
18
+ function execJasmine() {
19
+ jasmineEnv.execute();
20
+ }
21
+
22
+ if (window.addEventListener) { // W3C
23
+ window.addEventListener('load', execJasmine, false);
24
+ } else if (window.attachEvent) { // MSIE
25
+ window.attachEvent('onload', execJasmine);
26
+ }
27
+ })();
@@ -0,0 +1,111 @@
1
+ /**
2
+ Jasmine Reporter that outputs test results to the browser console.
3
+ Useful for running in a headless environment such as PhantomJs, ZombieJs etc.
4
+
5
+ Usage:
6
+ // From your html file that loads jasmine:
7
+ jasmine.getEnv().addReporter(new jasmine.ConsoleReporter());
8
+ jasmine.getEnv().execute();
9
+ */
10
+
11
+
12
+ (function(jasmine, console) {
13
+ if (!jasmine) {
14
+ throw "jasmine library isn't loaded!";
15
+ }
16
+
17
+ var ANSI = {}
18
+ ANSI.color_map = {
19
+ "green" : 32,
20
+ "red" : 31
21
+ }
22
+
23
+ ANSI.colorize_text = function(text, color) {
24
+ var color_code = this.color_map[color];
25
+ return "\033[" + color_code + "m" + text + "\033[0m";
26
+ }
27
+
28
+ var ConsoleReporter = function() {
29
+ if (!console || !console.log) { throw "console isn't present!"; }
30
+ this.status = this.statuses.stopped;
31
+ };
32
+
33
+ var proto = ConsoleReporter.prototype;
34
+ proto.statuses = {
35
+ stopped : "stopped",
36
+ running : "running",
37
+ fail : "fail",
38
+ success : "success"
39
+ };
40
+
41
+ proto.reportRunnerStarting = function(runner) {
42
+ this.status = this.statuses.running;
43
+ this.start_time = (new Date()).getTime();
44
+ this.executed_specs = 0;
45
+ this.passed_specs = 0;
46
+ this.log("Starting...");
47
+ };
48
+
49
+ proto.reportRunnerResults = function(runner) {
50
+ var failed = this.executed_specs - this.passed_specs;
51
+ var spec_str = this.executed_specs + (this.executed_specs === 1 ? " spec, " : " specs, ");
52
+ var fail_str = failed + (failed === 1 ? " failure in " : " failures in ");
53
+ var color = (failed > 0)? "red" : "green";
54
+ var dur = (new Date()).getTime() - this.start_time;
55
+
56
+ this.log("");
57
+ this.log("Finished");
58
+ this.log("-----------------");
59
+ this.log(spec_str + fail_str + (dur/1000) + "s.", color);
60
+
61
+ this.status = (failed > 0)? this.statuses.fail : this.statuses.success;
62
+
63
+ /* Print something that signals that testing is over so that headless browsers
64
+ like PhantomJs know when to terminate. */
65
+ this.log("");
66
+ this.log("ConsoleReporter finished");
67
+ };
68
+
69
+
70
+ proto.reportSpecStarting = function(spec) {
71
+ this.executed_specs++;
72
+ };
73
+
74
+ proto.reportSpecResults = function(spec) {
75
+ if (spec.results().skipped) {
76
+ return;
77
+ }
78
+ if (spec.results().passed()) {
79
+ this.passed_specs++;
80
+ return;
81
+ }
82
+
83
+ var resultText = spec.suite.description + " : " + spec.description;
84
+ this.log(resultText, "red");
85
+
86
+ var items = spec.results().getItems()
87
+ for (var i = 0; i < items.length; i++) {
88
+ var item = items[i];
89
+ var output = ' ' + item.message;
90
+ this.log(output, "red");
91
+ }
92
+ };
93
+
94
+ proto.reportSuiteResults = function(suite) {
95
+ if (suite.parentSuite) { return; }
96
+ var results = suite.results();
97
+ if (results.totalCount === 0) {
98
+ return;
99
+ }
100
+ var failed = results.totalCount - results.passedCount;
101
+ var color = (failed > 0)? "red" : "green";
102
+ this.log(suite.description + ": " + results.passedCount + " of " + results.totalCount + " passed.", color);
103
+ };
104
+
105
+ proto.log = function(str, color) {
106
+ var text = (color != undefined)? ANSI.colorize_text(str, color) : str;
107
+ console.log(text)
108
+ };
109
+
110
+ jasmine.ConsoleReporter = ConsoleReporter;
111
+ })(jasmine, console);
@@ -0,0 +1,31 @@
1
+ (function() {
2
+ /**
3
+ * Function.bind for ECMAScript 5 Support
4
+ *
5
+ * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind
6
+ */
7
+
8
+ if (!Function.prototype.bind) {
9
+ Function.prototype.bind = function (oThis) {
10
+ if (typeof this !== "function") {
11
+ // closest thing possible to the ECMAScript 5 internal IsCallable function
12
+ throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");
13
+ }
14
+
15
+ var aArgs = Array.prototype.slice.call(arguments, 1),
16
+ fToBind = this,
17
+ fNOP = function () {},
18
+ fBound = function () {
19
+ return fToBind.apply(this instanceof fNOP && oThis
20
+ ? this
21
+ : oThis,
22
+ aArgs.concat(Array.prototype.slice.call(arguments)));
23
+ };
24
+
25
+ fNOP.prototype = this.prototype;
26
+ fBound.prototype = new fNOP();
27
+
28
+ return fBound;
29
+ };
30
+ }
31
+ })();