exposure 0.0.4

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 (42) hide show
  1. data/Manifest.txt +41 -0
  2. data/README.mdown +39 -0
  3. data/Rakefile +26 -0
  4. data/exposure.gemspec +31 -0
  5. data/lib/exposure/common.rb +127 -0
  6. data/lib/exposure/configuration.rb +63 -0
  7. data/lib/exposure/patterns/resource.rb +226 -0
  8. data/lib/exposure/patterns/resources.rb +323 -0
  9. data/lib/exposure.rb +14 -0
  10. data/script/console +10 -0
  11. data/script/destroy +14 -0
  12. data/script/generate +14 -0
  13. data/spec/custom_matchers.rb +41 -0
  14. data/spec/exposure_spec.rb +4 -0
  15. data/spec/factories/pirate_factory.rb +8 -0
  16. data/spec/factories/ship_factory.rb +3 -0
  17. data/spec/finders/finder_spec.rb +53 -0
  18. data/spec/finders/nested_resources_finder_spec.rb +29 -0
  19. data/spec/fixtures/pirates/edit.erb +0 -0
  20. data/spec/fixtures/pirates/index.erb +0 -0
  21. data/spec/fixtures/pirates/new.erb +0 -0
  22. data/spec/fixtures/pirates/show.erb +0 -0
  23. data/spec/fixtures/ships/edit.erb +0 -0
  24. data/spec/fixtures/ships/index.erb +0 -0
  25. data/spec/fixtures/ships/new.erb +0 -0
  26. data/spec/fixtures/ships/show.erb +0 -0
  27. data/spec/flashers/flash_with_block_spec.rb +32 -0
  28. data/spec/flashers/flash_with_method_spec.rb +86 -0
  29. data/spec/flashers/flash_with_proc_spec.rb +83 -0
  30. data/spec/flashers/flash_with_string_spec.rb +82 -0
  31. data/spec/resource_spec.rb +192 -0
  32. data/spec/resources_spec.rb +204 -0
  33. data/spec/responders/respond_to_mime_types_spec.rb +44 -0
  34. data/spec/responders/respond_with_block_spec.rb +84 -0
  35. data/spec/responders/respond_with_method_spec.rb +84 -0
  36. data/spec/responders/respond_with_proc_spec.rb +79 -0
  37. data/spec/spec.opts +1 -0
  38. data/spec/spec_helper.rb +71 -0
  39. data/spec/spec_rails_helper.rb +22 -0
  40. data/tasks/rspec.rake +21 -0
  41. data/tasks/shoulda.rake +15 -0
  42. metadata +106 -0
@@ -0,0 +1,84 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+
3
+ describe "responders", :type => :controller do
4
+ class PiratesController < ActionController::Base
5
+ expose_many(:pirates)
6
+
7
+ private
8
+ def example
9
+ redirect_to({:action => "test"})
10
+ end
11
+ end
12
+
13
+ controller_name :pirates
14
+
15
+ before(:each) do
16
+ @controller = PiratesController.new
17
+ @request = ActionController::TestRequest.new
18
+ @response = ActionController::TestResponse.new
19
+ ActionController::Routing::Routes.draw do |map|
20
+ map.resources :pirates, :collection => {:test => :any}
21
+ end
22
+
23
+ @pirate = Factory.stub(:pirate)
24
+ Pirate.stub(:new => @pirate)
25
+ end
26
+
27
+ after(:each) do
28
+ PiratesController::Responses.clear
29
+ end
30
+
31
+ describe "responding with a method call" do
32
+ before(:each) do
33
+ PiratesController.response_for :create, :is => :example
34
+ end
35
+
36
+ it "should respond with redirect to test on success" do
37
+ @pirate.stub(:save => true)
38
+ post(:create)
39
+ should redirect_to({:action => 'test'})
40
+ end
41
+
42
+ it "should respond with redirect to test on failure" do
43
+ @pirate.stub(:save => false)
44
+ post(:create)
45
+ should redirect_to({:action => 'test'})
46
+ end
47
+ end
48
+
49
+ describe "responding with a method call :on => :success" do
50
+ before(:each) do
51
+ PiratesController.response_for :create, :is => :example, :on => :success
52
+ end
53
+
54
+ it "should respond with custom response on success" do
55
+ @pirate.stub(:save => true)
56
+ post(:create)
57
+ should redirect_to({:action => 'test'})
58
+ end
59
+
60
+ it "should not respond with custom response on failure" do
61
+ @pirate.stub(:save => false)
62
+ post(:create)
63
+ should_not redirect_to({:action => 'test'})
64
+ end
65
+ end
66
+
67
+ describe "responding with a method call :on => :failure" do
68
+ before(:each) do
69
+ PiratesController.response_for :create, :is => :example, :on => :failure
70
+ end
71
+
72
+ it "should not respond with custom response on success" do
73
+ @pirate.stub(:save => true)
74
+ post(:create)
75
+ should_not redirect_to({:action => 'test'})
76
+ end
77
+
78
+ it "should respond with custom response on failure" do
79
+ @pirate.stub(:save => false)
80
+ post(:create)
81
+ should redirect_to({:action => 'test'})
82
+ end
83
+ end
84
+ end
@@ -0,0 +1,79 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+
3
+ describe "responders", :type => :controller do
4
+ class PiratesController < ActionController::Base
5
+ expose_many(:pirates)
6
+ end
7
+
8
+ controller_name :pirates
9
+
10
+ before(:each) do
11
+ @controller = PiratesController.new
12
+ @request = ActionController::TestRequest.new
13
+ @response = ActionController::TestResponse.new
14
+ ActionController::Routing::Routes.draw do |map|
15
+ map.resources :pirates, :collection => {:test => :any}
16
+ end
17
+ @response_proc = Proc.new { redirect_to({:action => "test"}) }
18
+ @pirate = Factory.stub(:pirate)
19
+ Pirate.stub(:new => @pirate)
20
+ end
21
+
22
+ after(:each) do
23
+ PiratesController::Responses.clear
24
+ end
25
+
26
+ describe "responding with a method call" do
27
+ before(:each) do
28
+ PiratesController.response_for :create, :is => @response_proc
29
+ end
30
+
31
+ it "should respond with redirect to test on success" do
32
+ @pirate.stub(:save => true)
33
+ post(:create)
34
+ should redirect_to({:action => 'test'})
35
+ end
36
+
37
+ it "should respond with redirect to test on failure" do
38
+ @pirate.stub(:save => false)
39
+ post(:create)
40
+ should redirect_to({:action => 'test'})
41
+ end
42
+ end
43
+
44
+ describe "responding with a method call :on => :success" do
45
+ before(:each) do
46
+ PiratesController.response_for :create, :is => @response_proc, :on => :success
47
+ end
48
+
49
+ it "should respond with custom response on success" do
50
+ @pirate.stub(:save => true)
51
+ post(:create)
52
+ should redirect_to({:action => 'test'})
53
+ end
54
+
55
+ it "should not respond with custom response on failure" do
56
+ @pirate.stub(:save => false)
57
+ post(:create)
58
+ should_not redirect_to({:action => 'test'})
59
+ end
60
+ end
61
+
62
+ describe "responding with a method call :on => :failure" do
63
+ before(:each) do
64
+ PiratesController.response_for :create, :is => @response_proc, :on => :failure
65
+ end
66
+
67
+ it "should not respond with custom response on success" do
68
+ @pirate.stub(:save => true)
69
+ post(:create)
70
+ should_not redirect_to({:action => 'test'})
71
+ end
72
+
73
+ it "should respond with custom response on failure" do
74
+ @pirate.stub(:save => false)
75
+ post(:create)
76
+ should redirect_to({:action => 'test'})
77
+ end
78
+ end
79
+ end
data/spec/spec.opts ADDED
@@ -0,0 +1 @@
1
+ --colour
@@ -0,0 +1,71 @@
1
+ RAILS_ROOT = '.' unless defined? RAILS_ROOT
2
+ RAILS_ENV = 'test' unless defined? RAILS_ENV
3
+
4
+ module Rails
5
+ module VERSION
6
+ STRING = '2.3.4'
7
+ end
8
+ end
9
+
10
+
11
+ require 'rubygems'
12
+ # require 'multi_rails_init'
13
+
14
+ require 'rubygems'
15
+ require 'action_controller'
16
+ require 'action_view'
17
+ require 'active_record'
18
+ require 'test_help'
19
+
20
+ require 'spec'
21
+ require File.dirname(__FILE__) + '/spec_rails_helper'
22
+ require 'shoulda'
23
+ require File.dirname(__FILE__) + "/custom_matchers"
24
+ require 'factory_girl'
25
+
26
+
27
+ $:.unshift(File.dirname(__FILE__) + '/../lib')
28
+ require 'exposure'
29
+
30
+ ActiveRecord::Base.logger = Logger.new(STDOUT) if ENV['DEBUG']
31
+ ActionController::Base.logger = Logger.new(STDOUT) if ENV['DEBUG']
32
+ ActionController::Base.send :include, Exposure
33
+ ActionController::Base.view_paths=(File.dirname(__FILE__) + '/fixtures')
34
+
35
+ ActiveRecord::Base.establish_connection(:adapter => "sqlite3", :database => ":memory:")
36
+ ActiveRecord::Migration.verbose = false
37
+
38
+ ActiveRecord::Schema.define(:version => 1) do
39
+ create_table :pirates do |t|
40
+ t.column :title, :string
41
+ t.column :booty, :text
42
+ t.column :created_at, :datetime
43
+ t.column :updated_at, :datetime
44
+ end
45
+ create_table :ships do |t|
46
+ t.column :name, :string
47
+ t.column :pirate_id, :integer
48
+ t.column :created_at, :datetime
49
+ t.column :updated_at, :datetime
50
+ end
51
+ create_table :widgets do |t|
52
+ t.column :title, :string
53
+ t.column :body, :text
54
+ t.column :created_at, :datetime
55
+ t.column :updated_at, :datetime
56
+ end
57
+ end
58
+
59
+ class Pirate < ActiveRecord::Base
60
+ has_many :ships
61
+ validates_length_of :title, :within => 2..100
62
+ def validate
63
+ end
64
+ end
65
+
66
+ class Ship < ActiveRecord::Base
67
+ belongs_to :pirate
68
+ def validate
69
+ end
70
+ validates_associated :pirate
71
+ end
@@ -0,0 +1,22 @@
1
+ # when spec/rails is required it expects to be inside a real Rails application and looks for
2
+ # classes and files that aren't present in the plugin. This is a copy of most of what is
3
+ # inside the spec-rails gem's initialization.
4
+ class ApplicationController
5
+ end
6
+
7
+ require 'rack/utils'
8
+
9
+ require 'action_controller/test_process'
10
+ require 'action_controller/integration'
11
+ require 'active_support/test_case'
12
+ require 'active_record/fixtures' if defined?(ActiveRecord::Base)
13
+
14
+ require 'spec/test/unit'
15
+
16
+ require 'spec/rails/matchers'
17
+ require 'spec/rails/mocks'
18
+ require 'spec/rails/example'
19
+ require 'spec/rails/extensions'
20
+ require 'spec/rails/interop/testcase'
21
+
22
+ Spec::Example::ExampleGroupFactory.default(ActiveSupport::TestCase)
data/tasks/rspec.rake ADDED
@@ -0,0 +1,21 @@
1
+ begin
2
+ require 'spec'
3
+ rescue LoadError
4
+ require 'rubygems' unless ENV['NO_RUBYGEMS']
5
+ require 'spec'
6
+ end
7
+ begin
8
+ require 'spec/rake/spectask'
9
+ rescue LoadError
10
+ puts <<-EOS
11
+ To use rspec for testing you must install rspec gem:
12
+ gem install rspec
13
+ EOS
14
+ exit(0)
15
+ end
16
+
17
+ desc "Run the specs under spec/models"
18
+ Spec::Rake::SpecTask.new do |t|
19
+ t.spec_opts = ['--options', "spec/spec.opts"]
20
+ t.spec_files = FileList['spec/**/*_spec.rb']
21
+ end
@@ -0,0 +1,15 @@
1
+ begin
2
+ require 'shoulda'
3
+ rescue LoadError
4
+ require 'rubygems' unless ENV['NO_RUBYGEMS']
5
+ require 'shoulda'
6
+ end
7
+
8
+ require 'rake/testtask'
9
+
10
+ desc "Run the shoulda test under /spec"
11
+ Rake::TestTask.new do |t|
12
+ t.libs << "test"
13
+ t.test_files = FileList['spec/*_spec.rb']
14
+ t.verbose = true
15
+ end
metadata ADDED
@@ -0,0 +1,106 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: exposure
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.4
5
+ platform: ruby
6
+ authors:
7
+ - Trek Glowacki
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-10-07 00:00:00 -04:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: hoe
17
+ type: :development
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: 2.3.3
24
+ version:
25
+ description: Expose your data
26
+ email:
27
+ - trek.glowacki@gmail.com
28
+ executables: []
29
+
30
+ extensions: []
31
+
32
+ extra_rdoc_files:
33
+ - Manifest.txt
34
+ files:
35
+ - Manifest.txt
36
+ - README.mdown
37
+ - Rakefile
38
+ - exposure.gemspec
39
+ - lib/exposure.rb
40
+ - lib/exposure/common.rb
41
+ - lib/exposure/configuration.rb
42
+ - lib/exposure/patterns/resource.rb
43
+ - lib/exposure/patterns/resources.rb
44
+ - script/console
45
+ - script/destroy
46
+ - script/generate
47
+ - spec/custom_matchers.rb
48
+ - spec/exposure_spec.rb
49
+ - spec/factories/pirate_factory.rb
50
+ - spec/factories/ship_factory.rb
51
+ - spec/finders/finder_spec.rb
52
+ - spec/finders/nested_resources_finder_spec.rb
53
+ - spec/fixtures/pirates/edit.erb
54
+ - spec/fixtures/pirates/index.erb
55
+ - spec/fixtures/pirates/new.erb
56
+ - spec/fixtures/pirates/show.erb
57
+ - spec/fixtures/ships/edit.erb
58
+ - spec/fixtures/ships/index.erb
59
+ - spec/fixtures/ships/new.erb
60
+ - spec/fixtures/ships/show.erb
61
+ - spec/flashers/flash_with_block_spec.rb
62
+ - spec/flashers/flash_with_method_spec.rb
63
+ - spec/flashers/flash_with_proc_spec.rb
64
+ - spec/flashers/flash_with_string_spec.rb
65
+ - spec/resource_spec.rb
66
+ - spec/resources_spec.rb
67
+ - spec/responders/respond_to_mime_types_spec.rb
68
+ - spec/responders/respond_with_block_spec.rb
69
+ - spec/responders/respond_with_method_spec.rb
70
+ - spec/responders/respond_with_proc_spec.rb
71
+ - spec/spec.opts
72
+ - spec/spec_helper.rb
73
+ - spec/spec_rails_helper.rb
74
+ - tasks/rspec.rake
75
+ - tasks/shoulda.rake
76
+ has_rdoc: true
77
+ homepage:
78
+ licenses: []
79
+
80
+ post_install_message:
81
+ rdoc_options:
82
+ - --main
83
+ - README.rdoc
84
+ require_paths:
85
+ - lib
86
+ required_ruby_version: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: "0"
91
+ version:
92
+ required_rubygems_version: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: "0"
97
+ version:
98
+ requirements: []
99
+
100
+ rubyforge_project:
101
+ rubygems_version: 1.3.4
102
+ signing_key:
103
+ specification_version: 3
104
+ summary: Expose your data
105
+ test_files: []
106
+