oprah 0.1.1 → 0.1.2

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.
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