active_decorator 0.6.0 → 0.7.0

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. checksums.yaml +4 -4
  2. data/.travis.yml +1 -1
  3. data/Gemfile +0 -1
  4. data/README.md +31 -0
  5. data/Rakefile +8 -5
  6. data/gemfiles/Gemfile-rails.3.2.x +2 -2
  7. data/gemfiles/Gemfile-rails.4.0.x +2 -2
  8. data/gemfiles/Gemfile-rails.4.1.x +2 -2
  9. data/gemfiles/Gemfile-rails.4.2.x +2 -2
  10. data/gemfiles/Gemfile-rails.5.0.0.beta1 +2 -2
  11. data/lib/active_decorator/decorator.rb +6 -2
  12. data/lib/active_decorator/version.rb +1 -1
  13. data/{spec/configuration_spec.rb → test/configuration_test.rb} +8 -9
  14. data/test/controllers/fake_detection_test.rb +8 -0
  15. data/{spec → test}/fake_app/app/views/authors/index.html.erb +1 -1
  16. data/{spec → test}/fake_app/app/views/authors/show.html.erb +0 -0
  17. data/test/fake_app/app/views/authors/show.json.jbuilder +2 -0
  18. data/{spec → test}/fake_app/app/views/book_mailer/thanks.text.erb +0 -0
  19. data/{spec → test}/fake_app/app/views/books/_book.html.erb +0 -0
  20. data/{spec → test}/fake_app/app/views/books/_book.json.jbuilder +0 -0
  21. data/{spec → test}/fake_app/app/views/books/_book_locals.html.erb +0 -0
  22. data/{spec → test}/fake_app/app/views/books/error.html.erb +0 -0
  23. data/{spec → test}/fake_app/app/views/books/index.html.erb +0 -0
  24. data/{spec → test}/fake_app/app/views/books/purchase.html.erb +0 -0
  25. data/test/fake_app/app/views/books/show.html.erb +4 -0
  26. data/{spec → test}/fake_app/app/views/movies/show.html.erb +0 -0
  27. data/{spec → test}/fake_app/fake_app.rb +16 -8
  28. data/test/features/action_view_helpers_test.rb +36 -0
  29. data/test/features/controller_ivar_test.rb +39 -0
  30. data/test/features/jbuilder_test.rb +14 -0
  31. data/test/features/partial_test.rb +27 -0
  32. data/test/test_helper.rb +29 -0
  33. metadata +44 -44
  34. data/.rspec +0 -2
  35. data/spec/controllers/fake_detection_spec.rb +0 -7
  36. data/spec/fake_app/app/views/authors/show.json.jbuilder +0 -2
  37. data/spec/fake_app/app/views/books/show.html.erb +0 -4
  38. data/spec/features/action_view_helpers_spec.rb +0 -25
  39. data/spec/features/controller_ivar_spec.rb +0 -37
  40. data/spec/features/jbuilder_spec.rb +0 -12
  41. data/spec/features/partial_spec.rb +0 -25
  42. data/spec/spec_helper.rb +0 -27
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 42f46de551b9463436f22f02b446cc587c69d7f4
4
- data.tar.gz: bc4bcb100cb17417f34c18e919adce05e18ee02e
3
+ metadata.gz: 1a855bb5a5b2a7810e08850debb930d60b7675a3
4
+ data.tar.gz: 11d92465273c6867f71c92027c9866465169b4ea
5
5
  SHA512:
6
- metadata.gz: 7e7775bd6e2b67fbbd60b968926eb8d50b0e048729a976e7cd247a9c1a942fc3edbaa6624734dde9d8599cd536dccf15db9b3334da96eb6214ddba5266abd2ba
7
- data.tar.gz: c13028fd5ac9ebf59e8e699423aa1179b2816edbaddd70c2e82fce43ccfdb37a8ba9d82fff1a239b1207c49b82fd408d3b561df74d5959499d7c5ec3f5637b5e
6
+ metadata.gz: 40b0e9630767955088a50dd9c705431ea5dbfa0765fbfd9d363503737cfb52730bc4ce8f5a2dc2cc8992a6dc3a044aec74270ff4f730d7e6746d50f080e2747f
7
+ data.tar.gz: f8a888c5d6474ceb8d629ba0abc8c48dd87f6f3db6cca473b339a42e3cf66b20c14ca2c3fa3bbc4a55aae89a8385d281c3688c7174035bd5c7080fb6158198ef
@@ -1,6 +1,6 @@
1
1
  language: ruby
2
2
 
3
- script: bundle exec rake spec
3
+ script: bundle exec rake test
4
4
 
5
5
  rvm:
6
6
  - 2.0.0
data/Gemfile CHANGED
@@ -3,7 +3,6 @@ source 'https://rubygems.org'
3
3
  gemspec
4
4
 
5
5
  gem 'rails', '~> 4.0.0'
6
- gem 'rspec-rails'
7
6
  gem 'capybara', '>= 2'
8
7
  gem 'sqlite3'
9
8
  gem 'jbuilder'
data/README.md CHANGED
@@ -107,6 +107,37 @@ end
107
107
  <% end %>
108
108
  ```
109
109
 
110
+ ## Testing
111
+
112
+ You can test a decorator using your favorite test framework by decorating the model instance with
113
+
114
+ ```ruby
115
+ ActiveDecorator::Decorator.instance.decorate(model_instance)
116
+ ```
117
+
118
+ Considering an `Organization` model and it's simple decorator:
119
+
120
+ ```ruby
121
+ module OrganizationDecorator
122
+ def full_name
123
+ "#{first_name} #{last_name}"
124
+ end
125
+ end
126
+ ```
127
+
128
+ An RSpec test would look like:
129
+
130
+ ```ruby
131
+ describe '#full_name' do
132
+ it 'returns the full organization name' do
133
+ organization = Organization.new(first_name: 'John', last_name: 'Doe')
134
+ decorated_organization = ActiveDecorator::Decorator.instance.decorate(organization)
135
+
136
+ expect(decorated_organization.full_name).to eq('John Doe')
137
+ end
138
+ end
139
+ ```
140
+
110
141
  ## Configuring the decorator suffix
111
142
 
112
143
  By default, ActiveDecorator searches a decorator module named `target_class.name + "Decorator"`
data/Rakefile CHANGED
@@ -3,10 +3,13 @@
3
3
  require 'bundler'
4
4
  Bundler::GemHelper.install_tasks
5
5
 
6
- require 'rspec/core'
7
- require 'rspec/core/rake_task'
8
- RSpec::Core::RakeTask.new(:spec) do |spec|
9
- spec.pattern = FileList['spec/**/*_spec.rb']
6
+ require 'rake/testtask'
7
+
8
+ Rake::TestTask.new do |t|
9
+ t.libs << "test"
10
+ t.pattern = 'test/**/*_test.rb'
11
+ t.warning = true
12
+ t.verbose = true
10
13
  end
11
14
 
12
- task :default => :spec
15
+ task default: :test
@@ -1,9 +1,9 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- gem 'active_decorator', :path => '..'
3
+ gem 'active_decorator', path: '..'
4
4
 
5
5
  gem 'rails', '~> 3.2.0'
6
- gem 'rspec-rails', '~> 2.14.0'
6
+ gem 'test-unit-rails', '1.0.2'
7
7
  if RUBY_VERSION <= '1.8.7'
8
8
  gem 'i18n', '~> 0.6.11'
9
9
  end
@@ -1,9 +1,9 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- gem 'active_decorator', :path => '..'
3
+ gem 'active_decorator', path: '..'
4
4
 
5
5
  gem 'rails', '~> 4.0.0'
6
- gem 'rspec-rails'
6
+ gem 'test-unit-rails'
7
7
  gem 'capybara'
8
8
  gem 'sqlite3'
9
9
  gem 'jbuilder'
@@ -1,9 +1,9 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- gem 'active_decorator', :path => '..'
3
+ gem 'active_decorator', path: '..'
4
4
 
5
5
  gem 'rails', '~> 4.1.0'
6
- gem 'rspec-rails'
6
+ gem 'test-unit-rails'
7
7
  gem 'capybara'
8
8
  gem 'sqlite3'
9
9
  gem 'jbuilder'
@@ -1,9 +1,9 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- gem 'active_decorator', :path => '..'
3
+ gem 'active_decorator', path: '..'
4
4
 
5
5
  gem 'rails', '~> 4.2.0'
6
- gem 'rspec-rails'
6
+ gem 'test-unit-rails'
7
7
  gem 'capybara'
8
8
  gem 'sqlite3'
9
9
  gem 'jbuilder'
@@ -1,9 +1,9 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- gem 'active_decorator', :path => '..'
3
+ gem 'active_decorator', path: '..'
4
4
 
5
5
  gem 'rails', '~> 5.0.0.beta1'
6
- gem 'rspec-rails'
6
+ gem 'test-unit-rails'
7
7
  gem 'capybara'
8
8
  gem 'sqlite3'
9
9
  gem 'jbuilder'
@@ -41,8 +41,12 @@ module ActiveDecorator
41
41
  @@decorators[model_class] = nil
42
42
  end
43
43
  rescue NameError
44
- # Cache nil results
45
- @@decorators[model_class] = nil
44
+ if model_class.respond_to?(:base_class) && (model_class.base_class != model_class)
45
+ @@decorators[model_class] = decorator_for model_class.base_class
46
+ else
47
+ # Cache nil results
48
+ @@decorators[model_class] = nil
49
+ end
46
50
  end
47
51
  end
48
52
 
@@ -1,3 +1,3 @@
1
1
  module ActiveDecorator
2
- VERSION = '0.6.0'
2
+ VERSION = '0.7.0'
3
3
  end
@@ -1,3 +1,5 @@
1
+ require 'test_helper'
2
+
1
3
  Comic = Struct.new(:title, :price)
2
4
 
3
5
  module ComicPresenter
@@ -6,22 +8,19 @@ module ComicPresenter
6
8
  end
7
9
  end
8
10
 
9
- describe ActiveDecorator::Configuration do
10
- let(:comic) { ActiveDecorator::Decorator.instance.decorate(Comic.new("amatsuda's (Poignant) Guide to ActiveDecorator", 3)) }
11
-
12
- context 'with a custom decorator_suffix' do
13
- before do
11
+ class ConfigurationTest < Test::Unit::TestCase
12
+ test 'with a custom decorator_suffix' do
13
+ begin
14
14
  ActiveDecorator.configure do |config|
15
15
  config.decorator_suffix = 'Presenter'
16
16
  end
17
- end
18
17
 
19
- after do
18
+ comic = ActiveDecorator::Decorator.instance.decorate Comic.new("amatsuda's (Poignant) Guide to ActiveDecorator", 3)
19
+ assert_equal '$3', comic.price
20
+ ensure
20
21
  ActiveDecorator.configure do |config|
21
22
  config.decorator_suffix = 'Decorator'
22
23
  end
23
24
  end
24
-
25
- specify { comic.price.should == '$3' }
26
25
  end
27
26
  end
@@ -0,0 +1,8 @@
1
+ require 'test_helper'
2
+
3
+ class MoviesControllerTest < ActionController::TestCase
4
+ test 'reveals fakes' do
5
+ movie = Movie.create
6
+ assert_nothing_raised { get :show, id: movie.id }
7
+ end
8
+ end
@@ -6,7 +6,7 @@
6
6
  <%= render author.books %>
7
7
  <% elsif params[:partial] == 'locals' %>
8
8
  <% author.books.each do |book| %>
9
- <%= render :partial => 'books/book_locals', :locals => {:b => book} %>
9
+ <%= render partial: 'books/book_locals', locals: {b: book} %>
10
10
  <% end %>
11
11
  <% else %>
12
12
  <% author.books.each do |book| %>
@@ -0,0 +1,2 @@
1
+ json.name @author.name
2
+ json.books @author.books, partial: 'books/book', as: :book
@@ -0,0 +1,4 @@
1
+ <%= @book.link %>
2
+ <%= @book.cover_image %>
3
+
4
+ <%= link_to 'purchase', [:purchase, @book.author, @book], method: :post %>
@@ -6,12 +6,12 @@ require 'ostruct'
6
6
  require 'jbuilder'
7
7
 
8
8
  # config
9
- ActiveRecord::Base.establish_connection(:adapter => 'sqlite3', :database => ':memory:')
9
+ ActiveRecord::Base.establish_connection(adapter: 'sqlite3', database: ':memory:')
10
10
 
11
11
  module ActiveDecoratorTestApp
12
12
  class Application < Rails::Application
13
13
  config.secret_token = '"confusion" will be my epitaph.'
14
- config.session_store :cookie_store, :key => '_myapp_session'
14
+ config.session_store :cookie_store, key: '_myapp_session'
15
15
  config.active_support.deprecation = :log
16
16
  config.eager_load = false
17
17
  config.action_dispatch.show_exceptions = false
@@ -24,15 +24,21 @@ ActiveDecoratorTestApp::Application.initialize!
24
24
 
25
25
  # routes
26
26
  ActiveDecoratorTestApp::Application.routes.draw do
27
- resources :authors, :only => [:index, :show] do
28
- resources :books, :only => [:index, :show] do
27
+ resources :authors, only: [:index, :show] do
28
+ resources :books, only: [:index, :show] do
29
+ member do
30
+ get :error
31
+ post :purchase
32
+ end
33
+ end
34
+ resources :novels, only: [:index, :show] do
29
35
  member do
30
36
  get :error
31
37
  post :purchase
32
38
  end
33
39
  end
34
40
  end
35
- resources :movies, :only => :show
41
+ resources :movies, only: :show
36
42
  end
37
43
 
38
44
  # models
@@ -42,6 +48,8 @@ end
42
48
  class Book < ActiveRecord::Base
43
49
  belongs_to :author
44
50
  end
51
+ class Novel < Book
52
+ end
45
53
  class Movie < ActiveRecord::Base
46
54
  end
47
55
 
@@ -68,7 +76,7 @@ module BookDecorator
68
76
  end
69
77
 
70
78
  def link
71
- link_to title, "#{request.protocol}#{request.host_with_port}/assets/sample.png", :class => 'title'
79
+ link_to title, "#{request.protocol}#{request.host_with_port}/assets/sample.png", class: 'title'
72
80
  end
73
81
 
74
82
  def cover_image
@@ -153,7 +161,7 @@ end
153
161
  class BookMailer < ActionMailer::Base
154
162
  def thanks(book)
155
163
  @book = book
156
- mail :from => 'nobody@example.com', :to => 'test@example.com', :subject => 'Thanks'
164
+ mail from: 'nobody@example.com', to: 'test@example.com', subject: 'Thanks'
157
165
  end
158
166
  end
159
167
 
@@ -161,7 +169,7 @@ end
161
169
  class CreateAllTables < ActiveRecord::Migration
162
170
  def self.up
163
171
  create_table(:authors) {|t| t.string :name}
164
- create_table(:books) {|t| t.string :title; t.references :author}
172
+ create_table(:books) {|t| t.string :title; t.references :author; t.string :type }
165
173
  create_table(:movies) {|t| t.string :name}
166
174
  end
167
175
  end
@@ -0,0 +1,36 @@
1
+ require 'test_helper'
2
+
3
+ class ActionViewHelpersTest < ActionDispatch::IntegrationTest
4
+ setup do
5
+ aamine = Author.create! name: 'aamine'
6
+ @rhg = aamine.books.create! title: 'RHG'
7
+ @rhg_novel = aamine.books.create! title: 'RHG Novel', type: 'Novel'
8
+ end
9
+
10
+ test 'invoking action_view helper methods' do
11
+ visit "/authors/#{@rhg.author.id}/books/#{@rhg.id}"
12
+ within 'a.title' do
13
+ assert page.has_content? 'RHG'
14
+ end
15
+ assert page.has_css?('img')
16
+ end
17
+
18
+ test 'invoking action_view helper methods on model subclass' do
19
+ visit "/authors/#{@rhg_novel.author.id}/books/#{@rhg_novel.id}"
20
+ within 'a.title' do
21
+ assert page.has_content? 'RHG Novel'
22
+ end
23
+ assert page.has_css?('img')
24
+ end
25
+
26
+ test 'invoking action_view helper methods in rescue_from view' do
27
+ visit "/authors/#{@rhg.author.id}/books/#{@rhg.id}/error"
28
+ assert page.has_content?('ERROR')
29
+ end
30
+
31
+ test 'make sure that action_view + action_mailer works' do
32
+ visit "/authors/#{@rhg.author.id}/books/#{@rhg.id}"
33
+ click_link 'purchase'
34
+ assert page.has_content? 'done'
35
+ end
36
+ end
@@ -0,0 +1,39 @@
1
+ require 'test_helper'
2
+
3
+ class ControllerIvarTest < ActionDispatch::IntegrationTest
4
+ setup do
5
+ @matz = Author.create! name: 'matz'
6
+ @matz.books.create! title: 'the world of code'
7
+ Author.create! name: 'takahashim'
8
+ end
9
+
10
+ test 'decorating a model object in ivar' do
11
+ visit "/authors/#{@matz.id}"
12
+ assert page.has_content? 'matz'
13
+ assert page.has_content? 'matz'.capitalize
14
+ end
15
+
16
+ test 'decorating model scope in ivar' do
17
+ visit '/authors'
18
+ assert page.has_content? 'takahashim'
19
+ assert page.has_content? 'takahashim'.reverse
20
+ end
21
+
22
+ test "decorating models' array in ivar" do
23
+ visit '/authors?variable_type=array'
24
+ assert page.has_content? 'takahashim'
25
+ assert page.has_content? 'takahashim'.reverse
26
+ end
27
+
28
+ test "decorating models' proxy object in ivar" do
29
+ visit '/authors?variable_type=proxy'
30
+ assert page.has_content? 'takahashim'
31
+ assert page.has_content? 'takahashim'.reverse
32
+ end
33
+
34
+ test 'decorating model association proxy in ivar' do
35
+ visit "/authors/#{@matz.id}/books"
36
+ assert page.has_content? 'the world of code'
37
+ assert page.has_content? 'the world of code'.reverse
38
+ end
39
+ end
@@ -0,0 +1,14 @@
1
+ require 'test_helper'
2
+
3
+ class JbuilderTest < ActionDispatch::IntegrationTest
4
+ setup do
5
+ Author.create! name: 'aamine'
6
+ nari = Author.create! name: 'nari'
7
+ nari.books.create! title: 'the gc book'
8
+ end
9
+
10
+ test 'decorating objects in Jbuilder partials' do
11
+ visit "/authors/#{Author.last.id}.json"
12
+ assert_equal '{"name":"nari","books":[{"title":"the gc book","reverse_title":"koob cg eht"}]}', page.source
13
+ end
14
+ end
@@ -0,0 +1,27 @@
1
+ require 'test_helper'
2
+
3
+ class PartialTest < ActionDispatch::IntegrationTest
4
+ setup do
5
+ Author.create! name: 'aamine'
6
+ nari = Author.create! name: 'nari'
7
+ nari.books.create! title: 'the gc book'
8
+ end
9
+
10
+ test 'decorating implicit @object' do
11
+ visit '/authors'
12
+ assert page.has_content? 'the gc book'
13
+ assert page.has_content? 'the gc book'.reverse
14
+ end
15
+
16
+ test 'decorating implicit @collection' do
17
+ visit '/authors?partial=collection'
18
+ assert page.has_content? 'the gc book'
19
+ assert page.has_content? 'the gc book'.reverse
20
+ end
21
+
22
+ test 'decorating objects in @locals' do
23
+ visit '/authors?partial=locals'
24
+ assert page.has_content? 'the gc book'
25
+ assert page.has_content? 'the gc book'.upcase
26
+ end
27
+ end
@@ -0,0 +1,29 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
3
+ # load Rails first
4
+ require 'rails'
5
+
6
+ # load the plugin
7
+ require 'active_decorator'
8
+
9
+ # needs to load the app next
10
+ require 'fake_app/fake_app'
11
+
12
+ require 'test/unit/rails/test_help'
13
+
14
+ class ActionDispatch::IntegrationTest
15
+ include Capybara::DSL
16
+ end
17
+
18
+ module DatabaseDeleter
19
+ def setup
20
+ Book.delete_all
21
+ Author.delete_all
22
+ Movie.delete_all
23
+ super
24
+ end
25
+ end
26
+
27
+ Test::Unit::TestCase.send :prepend, DatabaseDeleter
28
+
29
+ CreateAllTables.up unless ActiveRecord::Base.connection.table_exists? 'authors'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_decorator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Akira Matsuda
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-04 00:00:00.000000000 Z
11
+ date: 2016-01-22 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: A simple and Rubyish view helper for Rails
14
14
  email:
@@ -18,7 +18,6 @@ extensions: []
18
18
  extra_rdoc_files: []
19
19
  files:
20
20
  - ".gitignore"
21
- - ".rspec"
22
21
  - ".travis.yml"
23
22
  - Gemfile
24
23
  - MIT-LICENSE
@@ -46,26 +45,26 @@ files:
46
45
  - lib/generators/rspec/templates/decorator_spec.rb
47
46
  - lib/generators/test_unit/decorator_generator.rb
48
47
  - lib/generators/test_unit/templates/decorator_test.rb
49
- - spec/configuration_spec.rb
50
- - spec/controllers/fake_detection_spec.rb
51
- - spec/fake_app/app/views/authors/index.html.erb
52
- - spec/fake_app/app/views/authors/show.html.erb
53
- - spec/fake_app/app/views/authors/show.json.jbuilder
54
- - spec/fake_app/app/views/book_mailer/thanks.text.erb
55
- - spec/fake_app/app/views/books/_book.html.erb
56
- - spec/fake_app/app/views/books/_book.json.jbuilder
57
- - spec/fake_app/app/views/books/_book_locals.html.erb
58
- - spec/fake_app/app/views/books/error.html.erb
59
- - spec/fake_app/app/views/books/index.html.erb
60
- - spec/fake_app/app/views/books/purchase.html.erb
61
- - spec/fake_app/app/views/books/show.html.erb
62
- - spec/fake_app/app/views/movies/show.html.erb
63
- - spec/fake_app/fake_app.rb
64
- - spec/features/action_view_helpers_spec.rb
65
- - spec/features/controller_ivar_spec.rb
66
- - spec/features/jbuilder_spec.rb
67
- - spec/features/partial_spec.rb
68
- - spec/spec_helper.rb
48
+ - test/configuration_test.rb
49
+ - test/controllers/fake_detection_test.rb
50
+ - test/fake_app/app/views/authors/index.html.erb
51
+ - test/fake_app/app/views/authors/show.html.erb
52
+ - test/fake_app/app/views/authors/show.json.jbuilder
53
+ - test/fake_app/app/views/book_mailer/thanks.text.erb
54
+ - test/fake_app/app/views/books/_book.html.erb
55
+ - test/fake_app/app/views/books/_book.json.jbuilder
56
+ - test/fake_app/app/views/books/_book_locals.html.erb
57
+ - test/fake_app/app/views/books/error.html.erb
58
+ - test/fake_app/app/views/books/index.html.erb
59
+ - test/fake_app/app/views/books/purchase.html.erb
60
+ - test/fake_app/app/views/books/show.html.erb
61
+ - test/fake_app/app/views/movies/show.html.erb
62
+ - test/fake_app/fake_app.rb
63
+ - test/features/action_view_helpers_test.rb
64
+ - test/features/controller_ivar_test.rb
65
+ - test/features/jbuilder_test.rb
66
+ - test/features/partial_test.rb
67
+ - test/test_helper.rb
69
68
  homepage: https://github.com/amatsuda/active_decorator
70
69
  licenses: []
71
70
  metadata: {}
@@ -85,28 +84,29 @@ required_rubygems_version: !ruby/object:Gem::Requirement
85
84
  version: '0'
86
85
  requirements: []
87
86
  rubyforge_project: active_decorator
88
- rubygems_version: 2.4.5.1
87
+ rubygems_version: 2.5.1
89
88
  signing_key:
90
89
  specification_version: 4
91
90
  summary: A simple and Rubyish view helper for Rails
92
91
  test_files:
93
- - spec/configuration_spec.rb
94
- - spec/controllers/fake_detection_spec.rb
95
- - spec/fake_app/app/views/authors/index.html.erb
96
- - spec/fake_app/app/views/authors/show.html.erb
97
- - spec/fake_app/app/views/authors/show.json.jbuilder
98
- - spec/fake_app/app/views/book_mailer/thanks.text.erb
99
- - spec/fake_app/app/views/books/_book.html.erb
100
- - spec/fake_app/app/views/books/_book.json.jbuilder
101
- - spec/fake_app/app/views/books/_book_locals.html.erb
102
- - spec/fake_app/app/views/books/error.html.erb
103
- - spec/fake_app/app/views/books/index.html.erb
104
- - spec/fake_app/app/views/books/purchase.html.erb
105
- - spec/fake_app/app/views/books/show.html.erb
106
- - spec/fake_app/app/views/movies/show.html.erb
107
- - spec/fake_app/fake_app.rb
108
- - spec/features/action_view_helpers_spec.rb
109
- - spec/features/controller_ivar_spec.rb
110
- - spec/features/jbuilder_spec.rb
111
- - spec/features/partial_spec.rb
112
- - spec/spec_helper.rb
92
+ - test/configuration_test.rb
93
+ - test/controllers/fake_detection_test.rb
94
+ - test/fake_app/app/views/authors/index.html.erb
95
+ - test/fake_app/app/views/authors/show.html.erb
96
+ - test/fake_app/app/views/authors/show.json.jbuilder
97
+ - test/fake_app/app/views/book_mailer/thanks.text.erb
98
+ - test/fake_app/app/views/books/_book.html.erb
99
+ - test/fake_app/app/views/books/_book.json.jbuilder
100
+ - test/fake_app/app/views/books/_book_locals.html.erb
101
+ - test/fake_app/app/views/books/error.html.erb
102
+ - test/fake_app/app/views/books/index.html.erb
103
+ - test/fake_app/app/views/books/purchase.html.erb
104
+ - test/fake_app/app/views/books/show.html.erb
105
+ - test/fake_app/app/views/movies/show.html.erb
106
+ - test/fake_app/fake_app.rb
107
+ - test/features/action_view_helpers_test.rb
108
+ - test/features/controller_ivar_test.rb
109
+ - test/features/jbuilder_test.rb
110
+ - test/features/partial_test.rb
111
+ - test/test_helper.rb
112
+ has_rdoc:
data/.rspec DELETED
@@ -1,2 +0,0 @@
1
- --color
2
- --require spec_helper
@@ -1,7 +0,0 @@
1
- describe MoviesController, :type => :controller do
2
- let(:movie){ Movie.create }
3
-
4
- it 'reveals fakes' do
5
- expect{ get :show, :id => movie.id }.not_to raise_error
6
- end
7
- end
@@ -1,2 +0,0 @@
1
- json.name @author.name
2
- json.books @author.books, :partial => 'books/book', :as => :book
@@ -1,4 +0,0 @@
1
- <%= @book.link %>
2
- <%= @book.cover_image %>
3
-
4
- <%= link_to 'purchase', [:purchase, @book.author, @book], :method => :post %>
@@ -1,25 +0,0 @@
1
- feature 'fallback to helpers' do
2
- background do
3
- aamine = Author.create! :name => 'aamine'
4
- @rhg = aamine.books.create! :title => 'RHG'
5
- end
6
-
7
- scenario 'invoking action_view helper methods' do
8
- visit "/authors/#{@rhg.author.id}/books/#{@rhg.id}"
9
- within 'a.title' do
10
- page.should have_content 'RHG'
11
- end
12
- page.should have_css('img')
13
- end
14
-
15
- scenario 'invoking action_view helper methods in rescue_from view' do
16
- visit "/authors/#{@rhg.author.id}/books/#{@rhg.id}/error"
17
- page.should have_content('ERROR')
18
- end
19
-
20
- scenario 'make sure that action_view + action_mailer works' do
21
- visit "/authors/#{@rhg.author.id}/books/#{@rhg.id}"
22
- click_link 'purchase'
23
- page.should have_content 'done'
24
- end
25
- end
@@ -1,37 +0,0 @@
1
- feature 'decorating controller ivar' do
2
- background do
3
- @matz = Author.create! :name => 'matz'
4
- @matz.books.create! :title => 'the world of code'
5
- Author.create! :name => 'takahashim'
6
- end
7
-
8
- scenario 'decorating a model object in ivar' do
9
- visit "/authors/#{@matz.id}"
10
- page.should have_content 'matz'
11
- page.should have_content 'matz'.capitalize
12
- end
13
-
14
- scenario 'decorating model scope in ivar' do
15
- visit '/authors'
16
- page.should have_content 'takahashim'
17
- page.should have_content 'takahashim'.reverse
18
- end
19
-
20
- scenario "decorating models' array in ivar" do
21
- visit '/authors?variable_type=array'
22
- page.should have_content 'takahashim'
23
- page.should have_content 'takahashim'.reverse
24
- end
25
-
26
- scenario "decorating models' proxy object in ivar" do
27
- visit '/authors?variable_type=proxy'
28
- page.should have_content 'takahashim'
29
- page.should have_content 'takahashim'.reverse
30
- end
31
-
32
- scenario 'decorating model association proxy in ivar' do
33
- visit "/authors/#{@matz.id}/books"
34
- page.should have_content 'the world of code'
35
- page.should have_content 'the world of code'.reverse
36
- end
37
- end
@@ -1,12 +0,0 @@
1
- feature 'decorating partial object in Jbuilder' do
2
- background do
3
- Author.create! :name => 'aamine'
4
- nari = Author.create! :name => 'nari'
5
- nari.books.create! :title => 'the gc book'
6
- end
7
-
8
- scenario 'decorating objects in Jbuilder partials' do
9
- visit "/authors/#{Author.last.id}.json"
10
- page.source.should eq '{"name":"nari","books":[{"title":"the gc book","reverse_title":"koob cg eht"}]}'
11
- end
12
- end
@@ -1,25 +0,0 @@
1
- feature 'decorating partial object' do
2
- background do
3
- Author.create! :name => 'aamine'
4
- nari = Author.create! :name => 'nari'
5
- nari.books.create! :title => 'the gc book'
6
- end
7
-
8
- scenario 'decorating implicit @object' do
9
- visit '/authors'
10
- page.should have_content 'the gc book'
11
- page.should have_content 'the gc book'.reverse
12
- end
13
-
14
- scenario 'decorating implicit @collection' do
15
- visit '/authors?partial=collection'
16
- page.should have_content 'the gc book'
17
- page.should have_content 'the gc book'.reverse
18
- end
19
-
20
- scenario 'decorating objects in @locals' do
21
- visit '/authors?partial=locals'
22
- page.should have_content 'the gc book'
23
- page.should have_content 'the gc book'.upcase
24
- end
25
- end
@@ -1,27 +0,0 @@
1
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
- $LOAD_PATH.unshift(File.dirname(__FILE__))
3
- # load Rails first
4
- require 'rails'
5
- require 'active_decorator'
6
- # needs to load the app before loading rspec/rails => capybara
7
- require 'fake_app/fake_app'
8
- require 'rspec/rails'
9
- # Requires supporting files with custom matchers and macros, etc,
10
- # in ./support/ and its subdirectories.
11
- Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
12
-
13
- RSpec.configure do |config|
14
- config.expect_with :rspec do |c|
15
- c.syntax = [:should, :expect]
16
- end
17
-
18
- config.before :all do
19
- CreateAllTables.up unless ActiveRecord::Base.connection.table_exists? 'authors'
20
- end
21
-
22
- config.before :each do
23
- Book.delete_all
24
- Author.delete_all
25
- Movie.delete_all
26
- end
27
- end