model_presenter 0.0.2 → 0.0.3
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.
- data/README.md +44 -0
- data/lib/model_presenter/spec_support.rb +15 -0
- data/lib/model_presenter/version.rb +1 -1
- data/lib/spec_support.rb +1 -0
- data/spec/support/macros/as_json.rb +18 -0
- data/spec/support/macros/forward_from_model.rb +15 -0
- metadata +7 -1
data/README.md
CHANGED
@@ -70,6 +70,50 @@ user.to_json
|
|
70
70
|
|
71
71
|
It always takes a model object as the only argument in the initializer. The model object is referred from within the presenter as ```presenter.model```. It is a private attribute reader.
|
72
72
|
|
73
|
+
## Rspec Macros
|
74
|
+
|
75
|
+
The gem provides some rspec macros for speeding up your test effort for your presenters. To use it, in your ```spec_helper.rb``` among your other setup:
|
76
|
+
|
77
|
+
```ruby
|
78
|
+
|
79
|
+
require 'model_presenter/spec_support'
|
80
|
+
RSpec.configure do |config|
|
81
|
+
ModelPresenter::SpecSupport.new(config).register
|
82
|
+
end
|
83
|
+
```
|
84
|
+
|
85
|
+
And in a presenter test, you can do:
|
86
|
+
|
87
|
+
```ruby
|
88
|
+
|
89
|
+
describe User do
|
90
|
+
forward_from_model_attributes :first_name, :last_name, :email
|
91
|
+
as_json_attributes :first_name, :gender
|
92
|
+
end
|
93
|
+
```
|
94
|
+
|
95
|
+
The ```forward_from_model_attributes``` macro will generate the following tests:
|
96
|
+
|
97
|
+
```rspec
|
98
|
+
|
99
|
+
User
|
100
|
+
#first_name
|
101
|
+
returns the model.first_name
|
102
|
+
#last_name
|
103
|
+
returns the model.last_name
|
104
|
+
#email
|
105
|
+
returns the model.email
|
106
|
+
```
|
107
|
+
|
108
|
+
and ```as_json_attributes``` macro will generate the following tests:
|
109
|
+
|
110
|
+
```rspec
|
111
|
+
|
112
|
+
#as_json
|
113
|
+
has the key first_name with value set to presenter.first_name
|
114
|
+
has the key gender with value set to presenter.gender
|
115
|
+
```
|
116
|
+
|
73
117
|
## Contributing
|
74
118
|
|
75
119
|
1. Fork it
|
@@ -0,0 +1,15 @@
|
|
1
|
+
Dir["#{File.dirname(__FILE__)}/../../spec/support/**/*.rb"].each {|f| require f}
|
2
|
+
|
3
|
+
module ModelPresenter
|
4
|
+
class SpecSupport
|
5
|
+
attr_reader :config
|
6
|
+
private :config
|
7
|
+
def initialize(config)
|
8
|
+
@config = config
|
9
|
+
end
|
10
|
+
|
11
|
+
def register
|
12
|
+
config.extend ModelPresenter::Spec::Macros
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
data/lib/spec_support.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
Dir["#{File.dirname(__FILE__)}/../../support/**/*.rb"].each {|f| require f}
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module ModelPresenter
|
2
|
+
module Spec
|
3
|
+
module Macros
|
4
|
+
def as_json_attributes(*keys)
|
5
|
+
describe "#as_json" do
|
6
|
+
let(:result) { subject.as_json }
|
7
|
+
keys.each do |key|
|
8
|
+
context "having the key #{key}"
|
9
|
+
it "has the key #{key} with value set to presenter.#{key}" do
|
10
|
+
result[key].should eq(subject.send(key))
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module ModelPresenter
|
2
|
+
module Spec
|
3
|
+
module Macros
|
4
|
+
def forward_from_model_attributes(*attributes)
|
5
|
+
attributes.each do |attribute|
|
6
|
+
describe "##{attribute}" do
|
7
|
+
it "returns the model.#{attribute}" do
|
8
|
+
subject.send(attribute).should eq(model.send(attribute))
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: model_presenter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -175,8 +175,12 @@ files:
|
|
175
175
|
- lib/model_presenter/as_json.rb
|
176
176
|
- lib/model_presenter/base.rb
|
177
177
|
- lib/model_presenter/forward_from_model.rb
|
178
|
+
- lib/model_presenter/spec_support.rb
|
178
179
|
- lib/model_presenter/version.rb
|
180
|
+
- lib/spec_support.rb
|
179
181
|
- model_presenter.gemspec
|
182
|
+
- spec/support/macros/as_json.rb
|
183
|
+
- spec/support/macros/forward_from_model.rb
|
180
184
|
- tasks/test.rb
|
181
185
|
- test/model_presenter/as_json_test.rb
|
182
186
|
- test/model_presenter/base_test.rb
|
@@ -209,6 +213,8 @@ signing_key:
|
|
209
213
|
specification_version: 3
|
210
214
|
summary: Provides an implementation of Presenter pattern
|
211
215
|
test_files:
|
216
|
+
- spec/support/macros/as_json.rb
|
217
|
+
- spec/support/macros/forward_from_model.rb
|
212
218
|
- test/model_presenter/as_json_test.rb
|
213
219
|
- test/model_presenter/base_test.rb
|
214
220
|
- test/model_presenter/forward_from_model_test.rb
|