roar-rails 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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
+