oprah 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9338c79bdb8b1d23b379817b46c5c2ed1dbf07d1
4
- data.tar.gz: 5af6034580ada342dfe5cd69e02f94dbb6deb622
3
+ metadata.gz: b1e9fd6ab8d90759dcb787eadca9fd7ef1c2afe8
4
+ data.tar.gz: 9aeae5743f0dc4572659e5da7cae55bcfcbdeec8
5
5
  SHA512:
6
- metadata.gz: 2810722883f201f4cea966612128a01f5173ea14c64fb5fd1a30982f944377af6494e5de264198c63d22b7d4d91d9c900d67f329d2bc7e7596c754082da31a3b
7
- data.tar.gz: c7d1053a0023d28d258d9b397aac887b1f1718002824c7b8d4d6c742d6148317c2434fc758b54e602455cbf4438ab8aa29343d807ae501c9c256de00a3ab2f12
6
+ metadata.gz: 3398aba9e5893f76f10378beb116b6d87669e578e78bb90404c2d5fcb305a9e40f4c90cb51e14348f62758eefec15ea3635f465b56c607af6541717fca431f58
7
+ data.tar.gz: 1eef4021cd796d65299e84a53f97ca1eae5d66b14dafb45e25a81297dd3302d7e43f46620ae83a640cd4c3e673720b512373bc01375268340eed1c41f28856e7
@@ -13,3 +13,6 @@ before_update:
13
13
  - bundle update
14
14
  notifications:
15
15
  email: false
16
+ addons:
17
+ code_climate:
18
+ repo_token: 3d9c9c681c7be79695156ecbf9978ada542e60b726a7ba728866dee6f95f3ccd
@@ -1,3 +1,10 @@
1
+ 0.1.2
2
+ -----
3
+
4
+ - Explicitly rescue NameError in Cache#presenter_classes_for
5
+ - Add Oprah::TestHelpers
6
+ - Delegate #to_s and #inspect to the presented object
7
+
1
8
  0.1.1
2
9
  -----
3
10
 
data/README.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # Oprah
2
2
 
3
+ [![Gem Version](https://badge.fury.io/rb/oprah.svg)](https://badge.fury.io/rb/oprah)
4
+ [![Build Status](https://travis-ci.org/endofunky/oprah.svg)](https://travis-ci.org/endofunky/oprah)
5
+ [![Code Climate](https://codeclimate.com/github/endofunky/oprah.svg)](https://codeclimate.com/github/endofunky/oprah)
6
+ [![Dependency Status](https://gemnasium.com/badges/github.com/endofunky/oprah.svg)](https://gemnasium.com/github.com/endofunky/oprah)
7
+
3
8
  Opinionated presenters for Rails 5 - without the cruft.
4
9
 
5
10
  ## Table of Contents
@@ -102,7 +107,7 @@ what's going on, even if that means to be (at least a little bit) explicit.
102
107
  Here's how you can use Oprah presenters from your controller:
103
108
 
104
109
  ``` ruby
105
- class UserController < ApplicationController
110
+ class UsersController < ApplicationController
106
111
  def show
107
112
  @user = present User.find(params[:id])
108
113
  end
@@ -1,4 +1,5 @@
1
1
  # stdlib
2
+ require 'forwardable'
2
3
  require 'singleton'
3
4
 
4
5
  # gems
@@ -15,9 +15,8 @@ module Oprah
15
15
  @mutex.synchronize do
16
16
  key = class_name_for(object)
17
17
 
18
- if found = @mapping[key]
19
- return found
20
- end
18
+ cached = @mapping[key]
19
+ return cached if cached
21
20
 
22
21
  @mapping[key] = presenter_classes_for(object)
23
22
  end
@@ -42,7 +41,7 @@ module Oprah
42
41
  class_for(object).ancestors.map do |klass|
43
42
  begin
44
43
  (klass.name + "Presenter").constantize
45
- rescue
44
+ rescue NameError
46
45
  end
47
46
  end.compact.reverse
48
47
  end
@@ -1,5 +1,7 @@
1
1
  module Oprah
2
2
  class Presenter
3
+ extend Forwardable
4
+
3
5
  # @return [Object] The presented object
4
6
  attr_reader :object
5
7
 
@@ -11,6 +13,14 @@ module Oprah
11
13
  # @!visibility private
12
14
  @@cache = Oprah::Cache.new
13
15
 
16
+ # @!method inspect
17
+ # @see Object#inspect
18
+ # @return [String]
19
+ # @!method to_s
20
+ # @see Object#to_s
21
+ # @return [String]
22
+ def_delegators :@object, :inspect, :to_s
23
+
14
24
  class << self
15
25
  # Returns the shared presenter cache object.
16
26
  #
@@ -0,0 +1,11 @@
1
+ module Oprah
2
+ module TestHelpers
3
+ def present_many(*args, &block)
4
+ Oprah.present_many(*args, &block)
5
+ end
6
+
7
+ def present(*args, &block)
8
+ Oprah.present(*args, &block)
9
+ end
10
+ end
11
+ end
@@ -1,4 +1,4 @@
1
1
  module Oprah
2
2
  # @return [String] The Oprah library version.
3
- VERSION = "0.1.1"
3
+ VERSION = "0.1.2"
4
4
  end
@@ -1,6 +1,11 @@
1
1
  require 'minitest/autorun'
2
2
  require 'minitest/pride'
3
3
  require 'oprah'
4
+ require 'oprah/test_helpers'
5
+
6
+ class Minitest::Test
7
+ include Oprah::TestHelpers
8
+ end
4
9
 
5
10
  module Fixtures
6
11
  module Entity
@@ -49,6 +49,11 @@ module Oprah
49
49
  assert_kind_of ActionView::Context, presenter.view_context
50
50
  end
51
51
 
52
+ def test_default_view_context_unique_per_presenter
53
+ refute_equal present(User.new).view_context,
54
+ present(User.new).view_context
55
+ end
56
+
52
57
  def test_method_missing_delegation
53
58
  assert_equal "Foo Bar", present(User.new).name
54
59
  assert_equal "Foo", present(User.new).first_name
@@ -94,14 +99,18 @@ module Oprah
94
99
  refute_equal user_presenter, project_presenter
95
100
  end
96
101
 
97
- private
102
+ def test_inspect
103
+ user = User.new
104
+ presenter = present(user)
98
105
 
99
- def present_many(*args, &block)
100
- Oprah.present_many(*args, &block)
106
+ assert_equal user.inspect, presenter.inspect
101
107
  end
102
108
 
103
- def present(*args, &block)
104
- Oprah.present(*args, &block)
109
+ def test_to_s
110
+ user = User.new
111
+ presenter = present(user)
112
+
113
+ assert_equal user.to_s, presenter.to_s
105
114
  end
106
115
  end
107
116
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oprah
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tobias Svensson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-08-17 00:00:00.000000000 Z
11
+ date: 2016-08-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -128,6 +128,7 @@ files:
128
128
  - lib/oprah/controller_helpers.rb
129
129
  - lib/oprah/presenter.rb
130
130
  - lib/oprah/railtie.rb
131
+ - lib/oprah/test_helpers.rb
131
132
  - lib/oprah/version.rb
132
133
  - oprah.gemspec
133
134
  - tasks/bundler.rb