roar-rails 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. data/.gitignore +5 -0
  2. data/Gemfile +6 -0
  3. data/Rakefile +11 -0
  4. data/lib/roar-rails.rb +7 -0
  5. data/lib/roar/rails/test_case.rb +36 -0
  6. data/lib/roar/rails/version.rb +5 -0
  7. data/roar-rails.gemspec +28 -0
  8. data/test/dummy/Rakefile +7 -0
  9. data/test/dummy/app/controllers/application_controller.rb +4 -0
  10. data/test/dummy/app/controllers/musician_controller.rb +36 -0
  11. data/test/dummy/app/helpers/application_helper.rb +2 -0
  12. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  13. data/test/dummy/app/views/musician/featured.html.erb +1 -0
  14. data/test/dummy/app/views/musician/featured_with_block.html.erb +4 -0
  15. data/test/dummy/app/views/musician/hamlet.html.haml +1 -0
  16. data/test/dummy/config.ru +4 -0
  17. data/test/dummy/config/application.rb +19 -0
  18. data/test/dummy/config/boot.rb +10 -0
  19. data/test/dummy/config/database.yml +22 -0
  20. data/test/dummy/config/environment.rb +5 -0
  21. data/test/dummy/config/environments/development.rb +16 -0
  22. data/test/dummy/config/environments/production.rb +46 -0
  23. data/test/dummy/config/environments/test.rb +32 -0
  24. data/test/dummy/config/locales/en.yml +5 -0
  25. data/test/dummy/config/routes.rb +4 -0
  26. data/test/dummy/db/test.sqlite3 +0 -0
  27. data/test/dummy/public/404.html +26 -0
  28. data/test/dummy/public/422.html +26 -0
  29. data/test/dummy/public/500.html +26 -0
  30. data/test/dummy/public/favicon.ico +0 -0
  31. data/test/dummy/public/javascripts/application.js +2 -0
  32. data/test/dummy/public/javascripts/controls.js +965 -0
  33. data/test/dummy/public/javascripts/dragdrop.js +974 -0
  34. data/test/dummy/public/javascripts/effects.js +1123 -0
  35. data/test/dummy/public/javascripts/prototype.js +4874 -0
  36. data/test/dummy/public/javascripts/rails.js +118 -0
  37. data/test/dummy/public/stylesheets/.gitkeep +0 -0
  38. data/test/dummy/script/rails +6 -0
  39. data/test/dummy/tmp/app/cells/blog/post/latest.html.erb +7 -0
  40. data/test/dummy/tmp/app/cells/blog/post_cell.rb +7 -0
  41. data/test/test_case_test.rb +70 -0
  42. data/test/test_helper.rb +5 -0
  43. metadata +189 -0
@@ -0,0 +1,118 @@
1
+ document.observe("dom:loaded", function() {
2
+ function handleRemote(element) {
3
+ var method, url, params;
4
+
5
+ if (element.tagName.toLowerCase() === 'form') {
6
+ method = element.readAttribute('method') || 'post';
7
+ url = element.readAttribute('action');
8
+ params = element.serialize(true);
9
+ } else {
10
+ method = element.readAttribute('data-method') || 'get';
11
+ url = element.readAttribute('href');
12
+ params = {};
13
+ }
14
+
15
+ var event = element.fire("ajax:before");
16
+ if (event.stopped) return false;
17
+
18
+ new Ajax.Request(url, {
19
+ method: method,
20
+ parameters: params,
21
+ asynchronous: true,
22
+ evalScripts: true,
23
+
24
+ onLoading: function(request) { element.fire("ajax:loading", {request: request}); },
25
+ onLoaded: function(request) { element.fire("ajax:loaded", {request: request}); },
26
+ onInteractive: function(request) { element.fire("ajax:interactive", {request: request}); },
27
+ onComplete: function(request) { element.fire("ajax:complete", {request: request}); },
28
+ onSuccess: function(request) { element.fire("ajax:success", {request: request}); },
29
+ onFailure: function(request) { element.fire("ajax:failure", {request: request}); }
30
+ });
31
+
32
+ element.fire("ajax:after");
33
+ }
34
+
35
+ function handleMethod(element) {
36
+ var method, url, token_name, token;
37
+
38
+ method = element.readAttribute('data-method');
39
+ url = element.readAttribute('href');
40
+ csrf_param = $$('meta[name=csrf-param]').first();
41
+ csrf_token = $$('meta[name=csrf-token]').first();
42
+
43
+ var form = new Element('form', { method: "POST", action: url, style: "display: none;" });
44
+ element.parentNode.appendChild(form);
45
+
46
+ if (method != 'post') {
47
+ var field = new Element('input', { type: 'hidden', name: '_method', value: method });
48
+ form.appendChild(field);
49
+ }
50
+
51
+ if (csrf_param) {
52
+ var param = csrf_param.readAttribute('content');
53
+ var token = csrf_token.readAttribute('content');
54
+ var field = new Element('input', { type: 'hidden', name: param, value: token });
55
+ form.appendChild(field);
56
+ }
57
+
58
+ form.submit();
59
+ }
60
+
61
+ $(document.body).observe("click", function(event) {
62
+ var message = event.findElement().readAttribute('data-confirm');
63
+ if (message && !confirm(message)) {
64
+ event.stop();
65
+ return false;
66
+ }
67
+
68
+ var element = event.findElement("a[data-remote]");
69
+ if (element) {
70
+ handleRemote(element);
71
+ event.stop();
72
+ return true;
73
+ }
74
+
75
+ var element = event.findElement("a[data-method]");
76
+ if (element) {
77
+ handleMethod(element);
78
+ event.stop();
79
+ return true;
80
+ }
81
+ });
82
+
83
+ // TODO: I don't think submit bubbles in IE
84
+ $(document.body).observe("submit", function(event) {
85
+ var element = event.findElement(),
86
+ message = element.readAttribute('data-confirm');
87
+ if (message && !confirm(message)) {
88
+ event.stop();
89
+ return false;
90
+ }
91
+
92
+ var inputs = element.select("input[type=submit][data-disable-with]");
93
+ inputs.each(function(input) {
94
+ input.disabled = true;
95
+ input.writeAttribute('data-original-value', input.value);
96
+ input.value = input.readAttribute('data-disable-with');
97
+ });
98
+
99
+ var element = event.findElement("form[data-remote]");
100
+ if (element) {
101
+ handleRemote(element);
102
+ event.stop();
103
+ }
104
+ });
105
+
106
+ $(document.body).observe("ajax:after", function(event) {
107
+ var element = event.findElement();
108
+
109
+ if (element.tagName.toLowerCase() === 'form') {
110
+ var inputs = element.select("input[type=submit][disabled=true][data-disable-with]");
111
+ inputs.each(function(input) {
112
+ input.value = input.readAttribute('data-original-value');
113
+ input.writeAttribute('data-original-value', null);
114
+ input.disabled = false;
115
+ });
116
+ }
117
+ });
118
+ });
File without changes
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+ # This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
3
+
4
+ APP_PATH = File.expand_path('../../config/application', __FILE__)
5
+ require File.expand_path('../../config/boot', __FILE__)
6
+ require 'rails/commands'
@@ -0,0 +1,7 @@
1
+ <h1>
2
+ Blog::Post#latest
3
+ </h1>
4
+
5
+ <p>
6
+ Find me in app/cells/blog/post/latest.html.erb
7
+ </p>
@@ -0,0 +1,7 @@
1
+ class Blog::PostCell < Cell::Rails
2
+
3
+ def latest
4
+ render
5
+ end
6
+
7
+ end
@@ -0,0 +1,70 @@
1
+ require 'test_helper'
2
+
3
+ ENV['RAILS_ENV'] = 'test'
4
+ require "dummy/config/environment"
5
+ require "rails/test_help" # adds stuff like @routes, etc.
6
+ require "roar/rails/test_case"
7
+
8
+ class TestCaseTest < ActionController::TestCase
9
+ include Roar::Rails::TestCase
10
+
11
+ class BandController < ActionController::Base
12
+ def show
13
+ render :text => "#{request.body.string}#{params[:id]}"
14
+ end
15
+
16
+ end
17
+
18
+ tests BandController
19
+
20
+ test "allows POST without body" do
21
+ post :show
22
+ assert_equal "", response.body
23
+ end
24
+
25
+ test "allows POST with document" do
26
+ post :show, "{}"
27
+ assert_equal "{}", response.body
28
+ end
29
+
30
+ test "allows POST with document and options" do
31
+ post :show, "{}", :id => 1
32
+ assert_equal "{}1", response.body
33
+ end
34
+
35
+ test "allows GET" do
36
+ get :show, :id => 1
37
+ assert_equal "1", response.body
38
+ end
39
+
40
+ test "allows PUT" do
41
+ put :show, "{}", :id => 1
42
+ assert_equal "{}1", response.body
43
+ end
44
+
45
+ test "allows DELETE" do
46
+ delete :show, "{}", :id => 1
47
+ assert_equal "{}1", response.body
48
+ end
49
+
50
+ test "#assert_body" do
51
+ get :show, :id => 1
52
+ assert_body "1"
53
+
54
+ # TODO: check message.
55
+ assert_raises MiniTest::Assertion do
56
+ assert_body "3"
57
+ end
58
+ end
59
+
60
+ test "#assert_body with xml" do
61
+ @controller.instance_eval do
62
+ def show
63
+ render :text => "<order/>"
64
+ end
65
+ end
66
+
67
+ get :show
68
+ assert_body "<order></order>", :xml => true
69
+ end
70
+ end
@@ -0,0 +1,5 @@
1
+ require 'bundler'
2
+ Bundler.setup
3
+
4
+ require 'test/unit'
5
+ require 'minitest/spec'
metadata ADDED
@@ -0,0 +1,189 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: roar-rails
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 0
8
+ - 1
9
+ version: 0.0.1
10
+ platform: ruby
11
+ authors:
12
+ - Nick Sutterer
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2012-01-03 00:00:00 +01:00
18
+ default_executable:
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: roar
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ~>
27
+ - !ruby/object:Gem::Version
28
+ segments:
29
+ - 0
30
+ - 9
31
+ - 1
32
+ version: 0.9.1
33
+ type: :runtime
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ name: test_xml
37
+ prerelease: false
38
+ requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ segments:
44
+ - 0
45
+ version: "0"
46
+ type: :runtime
47
+ version_requirements: *id002
48
+ - !ruby/object:Gem::Dependency
49
+ name: minitest
50
+ prerelease: false
51
+ requirement: &id003 !ruby/object:Gem::Requirement
52
+ none: false
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ segments:
57
+ - 2
58
+ - 8
59
+ - 1
60
+ version: 2.8.1
61
+ type: :development
62
+ version_requirements: *id003
63
+ - !ruby/object:Gem::Dependency
64
+ name: actionpack
65
+ prerelease: false
66
+ requirement: &id004 !ruby/object:Gem::Requirement
67
+ none: false
68
+ requirements:
69
+ - - ~>
70
+ - !ruby/object:Gem::Version
71
+ segments:
72
+ - 3
73
+ - 0
74
+ version: "3.0"
75
+ type: :development
76
+ version_requirements: *id004
77
+ - !ruby/object:Gem::Dependency
78
+ name: railties
79
+ prerelease: false
80
+ requirement: &id005 !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ~>
84
+ - !ruby/object:Gem::Version
85
+ segments:
86
+ - 3
87
+ - 0
88
+ version: "3.0"
89
+ type: :runtime
90
+ version_requirements: *id005
91
+ - !ruby/object:Gem::Dependency
92
+ name: tzinfo
93
+ prerelease: false
94
+ requirement: &id006 !ruby/object:Gem::Requirement
95
+ none: false
96
+ requirements:
97
+ - - ">="
98
+ - !ruby/object:Gem::Version
99
+ segments:
100
+ - 0
101
+ version: "0"
102
+ type: :development
103
+ version_requirements: *id006
104
+ description: Rails extensions for using Roar in the popular web framework.
105
+ email:
106
+ - apotonick@gmail.com
107
+ executables: []
108
+
109
+ extensions: []
110
+
111
+ extra_rdoc_files: []
112
+
113
+ files:
114
+ - .gitignore
115
+ - Gemfile
116
+ - Rakefile
117
+ - lib/roar-rails.rb
118
+ - lib/roar/rails/test_case.rb
119
+ - lib/roar/rails/version.rb
120
+ - roar-rails.gemspec
121
+ - test/dummy/Rakefile
122
+ - test/dummy/app/controllers/application_controller.rb
123
+ - test/dummy/app/controllers/musician_controller.rb
124
+ - test/dummy/app/helpers/application_helper.rb
125
+ - test/dummy/app/views/layouts/application.html.erb
126
+ - test/dummy/app/views/musician/featured.html.erb
127
+ - test/dummy/app/views/musician/featured_with_block.html.erb
128
+ - test/dummy/app/views/musician/hamlet.html.haml
129
+ - test/dummy/config.ru
130
+ - test/dummy/config/application.rb
131
+ - test/dummy/config/boot.rb
132
+ - test/dummy/config/database.yml
133
+ - test/dummy/config/environment.rb
134
+ - test/dummy/config/environments/development.rb
135
+ - test/dummy/config/environments/production.rb
136
+ - test/dummy/config/environments/test.rb
137
+ - test/dummy/config/locales/en.yml
138
+ - test/dummy/config/routes.rb
139
+ - test/dummy/db/test.sqlite3
140
+ - test/dummy/public/404.html
141
+ - test/dummy/public/422.html
142
+ - test/dummy/public/500.html
143
+ - test/dummy/public/favicon.ico
144
+ - test/dummy/public/javascripts/application.js
145
+ - test/dummy/public/javascripts/controls.js
146
+ - test/dummy/public/javascripts/dragdrop.js
147
+ - test/dummy/public/javascripts/effects.js
148
+ - test/dummy/public/javascripts/prototype.js
149
+ - test/dummy/public/javascripts/rails.js
150
+ - test/dummy/public/stylesheets/.gitkeep
151
+ - test/dummy/script/rails
152
+ - test/dummy/tmp/app/cells/blog/post/latest.html.erb
153
+ - test/dummy/tmp/app/cells/blog/post_cell.rb
154
+ - test/test_case_test.rb
155
+ - test/test_helper.rb
156
+ has_rdoc: true
157
+ homepage: ""
158
+ licenses: []
159
+
160
+ post_install_message:
161
+ rdoc_options: []
162
+
163
+ require_paths:
164
+ - lib
165
+ required_ruby_version: !ruby/object:Gem::Requirement
166
+ none: false
167
+ requirements:
168
+ - - ">="
169
+ - !ruby/object:Gem::Version
170
+ segments:
171
+ - 0
172
+ version: "0"
173
+ required_rubygems_version: !ruby/object:Gem::Requirement
174
+ none: false
175
+ requirements:
176
+ - - ">="
177
+ - !ruby/object:Gem::Version
178
+ segments:
179
+ - 0
180
+ version: "0"
181
+ requirements: []
182
+
183
+ rubyforge_project: roar-rails
184
+ rubygems_version: 1.3.7
185
+ signing_key:
186
+ specification_version: 3
187
+ summary: Use Roar in Rails.
188
+ test_files: []
189
+