basic_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.
- checksums.yaml +7 -0
- data/README.md +1 -1
- data/basic_presenter.gemspec +1 -1
- data/lib/generators/basic_presenter/install_generator.rb +4 -8
- data/spec/basic_presenter/concern_spec.rb +22 -22
- metadata +12 -16
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 460f4a35101629fd51ab44082d9957f8e907d5dd6473e4a7b70c7bcd76f0e79a
|
4
|
+
data.tar.gz: 5a0d3ab87cc23d54d0420be7059d72058cca4f4eda72a600224df566104e8829
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: c3003bbc5a004c0bd4f3d8e26a6d322d52539d415bfe9edda2515acfb20138612e0785b1c8512f86850bbd2dd88ae8f4bcfc3dcb6a00132995caf2d6f3050b01
|
7
|
+
data.tar.gz: f442970cc5c675296aff7da916f1f5d30cbf8933660e6b2a658797cd46a2133005dd5f7435bfdb07b9391590e35552ef3bfb51e5fe741391a0fce249fd797a67
|
data/README.md
CHANGED
data/basic_presenter.gemspec
CHANGED
@@ -1,15 +1,11 @@
|
|
1
1
|
module BasicPresenter
|
2
2
|
module Generators
|
3
3
|
class InstallGenerator < Rails::Generators::Base
|
4
|
-
def create_presenters_dir
|
5
|
-
empty_directory('app/presenters')
|
6
|
-
end
|
7
|
-
|
8
4
|
def create_presenter_file
|
9
|
-
create_file "app/presenters/application_presenter.rb",
|
10
|
-
|
11
|
-
|
12
|
-
|
5
|
+
create_file "app/presenters/application_presenter.rb", <<~FILE
|
6
|
+
class ApplicationPresenter < BasicPresenter::BasePresenter
|
7
|
+
## Shared Methods might come here
|
8
|
+
end
|
13
9
|
FILE
|
14
10
|
end
|
15
11
|
end
|
@@ -14,7 +14,7 @@ end
|
|
14
14
|
|
15
15
|
#class BasePresenter
|
16
16
|
# # extend Forwardable
|
17
|
-
# # Presenter Class should allow DomainClass instance
|
17
|
+
# # Presenter Class should allow DomainClass instance
|
18
18
|
# # to be initialized
|
19
19
|
#
|
20
20
|
# attr_reader :domain_object
|
@@ -59,72 +59,72 @@ module BasicPresenter
|
|
59
59
|
|
60
60
|
context "Presenter Class Modification Interface" do
|
61
61
|
it "should determine default presenter class by the Domain Class" do
|
62
|
-
dummy_domain_object.default_presenter.
|
62
|
+
expect(dummy_domain_object.default_presenter).to eq(DomainClassPresenter)
|
63
63
|
end
|
64
64
|
|
65
65
|
it "should tell current presenter class" do
|
66
|
-
dummy_domain_object.presenter_class.
|
66
|
+
expect(dummy_domain_object.presenter_class).to eq(DomainClassPresenter)
|
67
67
|
end
|
68
68
|
|
69
69
|
it "should assume default presenter class as presenter class when not set" do
|
70
|
-
dummy_domain_object.presenter_class.
|
70
|
+
expect(dummy_domain_object.presenter_class).to eq(DomainClassPresenter)
|
71
71
|
end
|
72
72
|
|
73
73
|
it "should recognize presenter class when set" do
|
74
|
-
dummy_domain_object.presenter_class.
|
74
|
+
expect(dummy_domain_object.presenter_class).to eq(DomainClassPresenter)
|
75
75
|
dummy_domain_object.presenter_class = AnotherPresenter
|
76
|
-
dummy_domain_object.presenter_class.
|
76
|
+
expect(dummy_domain_object.presenter_class).to eq(AnotherPresenter)
|
77
77
|
end
|
78
78
|
end
|
79
79
|
|
80
80
|
context "Helper Methods" do
|
81
81
|
it "should be able to inform change in Presenter Class" do
|
82
|
-
dummy_domain_object.presenter_class.
|
83
|
-
dummy_domain_object.
|
82
|
+
expect(dummy_domain_object.presenter_class).to eq(DomainClassPresenter)
|
83
|
+
expect(dummy_domain_object).to be_presenter_class_not_changed
|
84
84
|
dummy_domain_object.presenter_class = AnotherPresenter
|
85
|
-
dummy_domain_object.
|
86
|
-
dummy_domain_object.presenter_class.
|
85
|
+
expect(dummy_domain_object).to be_presenter_class_changed
|
86
|
+
expect(dummy_domain_object.presenter_class).to eq(AnotherPresenter)
|
87
87
|
end
|
88
88
|
end
|
89
89
|
|
90
90
|
context "Presenter Instance Creation to allow delegation of Presenter Methods" do
|
91
91
|
it "should delegate presenter methods on Default Presenter when not set" do
|
92
|
-
dummy_domain_object.presenter.
|
92
|
+
expect(dummy_domain_object.presenter).to be_an_instance_of(DomainClassPresenter)
|
93
93
|
end
|
94
94
|
|
95
95
|
it "should delegate presenter methods on Explicit Presenter if set" do
|
96
96
|
dummy_domain_object.presenter_class = AnotherPresenter
|
97
|
-
dummy_domain_object.presenter.
|
97
|
+
expect(dummy_domain_object.presenter).to be_an_instance_of(AnotherPresenter)
|
98
98
|
end
|
99
99
|
|
100
100
|
context "Create Presenter Instance Once and return same if Presenter Class not changed" do
|
101
101
|
it "when no Presenter Class set" do
|
102
102
|
dummy_domain_object_presenter = dummy_domain_object.presenter
|
103
|
-
dummy_domain_object.presenter.
|
104
|
-
dummy_domain_object.presenter.
|
105
|
-
dummy_domain_object.presenter.
|
103
|
+
expect(dummy_domain_object.presenter).to eq(dummy_domain_object_presenter)
|
104
|
+
expect(dummy_domain_object.presenter).to eq(dummy_domain_object_presenter)
|
105
|
+
expect(dummy_domain_object.presenter).to eq(dummy_domain_object_presenter)
|
106
106
|
end
|
107
107
|
|
108
108
|
it "when Presenter Class changed" do
|
109
109
|
dummy_domain_object_presenter = dummy_domain_object.presenter
|
110
110
|
dummy_domain_object.presenter_class = AnotherPresenter
|
111
111
|
new_dummy_domain_object_presenter = dummy_domain_object.presenter
|
112
|
-
dummy_domain_object_presenter.
|
113
|
-
new_dummy_domain_object_presenter.
|
114
|
-
dummy_domain_object.presenter.
|
115
|
-
dummy_domain_object.presenter.
|
116
|
-
dummy_domain_object.presenter.
|
112
|
+
expect(dummy_domain_object_presenter).to be_an_instance_of(DomainClassPresenter)
|
113
|
+
expect(new_dummy_domain_object_presenter).to be_an_instance_of(AnotherPresenter)
|
114
|
+
expect(dummy_domain_object.presenter).to eq(new_dummy_domain_object_presenter)
|
115
|
+
expect(dummy_domain_object.presenter).to eq(new_dummy_domain_object_presenter)
|
116
|
+
expect(dummy_domain_object.presenter).to eq(new_dummy_domain_object_presenter)
|
117
117
|
end
|
118
118
|
end
|
119
119
|
end
|
120
120
|
|
121
121
|
describe "Presenter Methods Available on Domain Object through #presenter" do
|
122
122
|
it "should allow presenter methods to be called through #presenter" do
|
123
|
-
dummy_domain_object.presenter.full_name.
|
123
|
+
expect(dummy_domain_object.presenter.full_name).to eq('WelcomePresenter')
|
124
124
|
end
|
125
125
|
|
126
126
|
it "should allow domain_object to be accessed through #domain_object" do
|
127
|
-
dummy_domain_object.presenter.domain_object.
|
127
|
+
expect(dummy_domain_object.presenter.domain_object).to eq(dummy_domain_object)
|
128
128
|
end
|
129
129
|
end
|
130
130
|
end
|
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: basic_presenter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.0.3
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Pikender Sharma
|
@@ -11,22 +10,20 @@ authors:
|
|
11
10
|
autorequire:
|
12
11
|
bindir: bin
|
13
12
|
cert_chain: []
|
14
|
-
date:
|
13
|
+
date: 2018-03-19 00:00:00.000000000 Z
|
15
14
|
dependencies:
|
16
15
|
- !ruby/object:Gem::Dependency
|
17
16
|
name: activesupport
|
18
17
|
requirement: !ruby/object:Gem::Requirement
|
19
|
-
none: false
|
20
18
|
requirements:
|
21
|
-
- -
|
19
|
+
- - ">="
|
22
20
|
- !ruby/object:Gem::Version
|
23
21
|
version: '3.0'
|
24
22
|
type: :runtime
|
25
23
|
prerelease: false
|
26
24
|
version_requirements: !ruby/object:Gem::Requirement
|
27
|
-
none: false
|
28
25
|
requirements:
|
29
|
-
- -
|
26
|
+
- - ">="
|
30
27
|
- !ruby/object:Gem::Version
|
31
28
|
version: '3.0'
|
32
29
|
description: A simplified way to glue presenter methods to its domain object
|
@@ -35,8 +32,8 @@ executables: []
|
|
35
32
|
extensions: []
|
36
33
|
extra_rdoc_files: []
|
37
34
|
files:
|
38
|
-
- .gitignore
|
39
|
-
- .rspec
|
35
|
+
- ".gitignore"
|
36
|
+
- ".rspec"
|
40
37
|
- Gemfile
|
41
38
|
- LICENSE
|
42
39
|
- README.md
|
@@ -52,27 +49,26 @@ files:
|
|
52
49
|
homepage: http://vinsol.com
|
53
50
|
licenses:
|
54
51
|
- MIT
|
52
|
+
metadata: {}
|
55
53
|
post_install_message:
|
56
54
|
rdoc_options:
|
57
|
-
- --charset=UTF-8
|
55
|
+
- "--charset=UTF-8"
|
58
56
|
require_paths:
|
59
57
|
- lib
|
60
58
|
required_ruby_version: !ruby/object:Gem::Requirement
|
61
|
-
none: false
|
62
59
|
requirements:
|
63
|
-
- -
|
60
|
+
- - ">="
|
64
61
|
- !ruby/object:Gem::Version
|
65
62
|
version: '0'
|
66
63
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
67
|
-
none: false
|
68
64
|
requirements:
|
69
|
-
- -
|
65
|
+
- - ">="
|
70
66
|
- !ruby/object:Gem::Version
|
71
67
|
version: '0'
|
72
68
|
requirements: []
|
73
69
|
rubyforge_project:
|
74
|
-
rubygems_version:
|
70
|
+
rubygems_version: 2.7.3
|
75
71
|
signing_key:
|
76
|
-
specification_version:
|
72
|
+
specification_version: 4
|
77
73
|
summary: Introduce presenters to your rails app
|
78
74
|
test_files: []
|