activerepresenter 0.0.12 → 0.0.13
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 +4 -4
- data/activerepresenter.gemspec +2 -1
- data/lib/active_representer/base.rb +29 -18
- data/test/attribute_test.rb +50 -0
- data/test/base_test.rb +4 -4
- data/test/collection_test.rb +9 -9
- data/test/inheritance_test.rb +7 -7
- metadata +26 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a10a69202f671dcad05cfbb9e0b4b74fe2a1cd8145a351991ca84357208556b6
|
4
|
+
data.tar.gz: b723ed839b9cac7cd6cd2250a91cf87583c1fb00a613bd30ddb2fcf707b749c1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 108cd5117d37ea8d0bc2d37f613043cfe8ed31e6e5c22c74f640a17b8382c23439edb40a5cba6059b40cae98b556cb334696324cc9f24a8653cf21bd4759116b
|
7
|
+
data.tar.gz: ad85e89000e96519aead14fbba97752c5c99dc760705298613b6a0b458e3d2ae02b17528fdb5c55492e582f3cd590b3dc739c2ae7e42c6a66a89280f3bb64140
|
data/activerepresenter.gemspec
CHANGED
@@ -24,6 +24,7 @@ Gem::Specification.new do |s|
|
|
24
24
|
s.test_files = s.files.grep(/^test/)
|
25
25
|
|
26
26
|
s.add_dependency "bundler", "~> 1.3"
|
27
|
-
s.add_dependency "
|
27
|
+
s.add_dependency "activemodel", ">= 5.2", "< 6"
|
28
|
+
s.add_dependency "activesupport", ">= 5.2", "< 6"
|
28
29
|
s.add_development_dependency "rake", "~> 0"
|
29
30
|
end
|
@@ -1,32 +1,39 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require "
|
4
|
-
require "active_support
|
5
|
-
require "active_support/inflector"
|
3
|
+
require "active_model"
|
4
|
+
require "active_support"
|
6
5
|
|
7
6
|
module ActiveRepresenter
|
8
7
|
class Base
|
9
|
-
|
8
|
+
include ActiveModel::Model
|
9
|
+
include ActiveModel::Attributes
|
10
|
+
|
11
|
+
attribute :wrapped
|
10
12
|
class_attribute :collections, default: {}
|
11
13
|
|
12
14
|
delegate_missing_to :wrapped
|
13
15
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
16
|
+
class << self
|
17
|
+
def wrap(wrapped)
|
18
|
+
instance = new
|
19
|
+
instance.wrapped = wrapped
|
20
|
+
collection_names.each do |collection_name|
|
21
|
+
next if wrapped[collection_name].nil?
|
22
|
+
representer_klass = collections[collection_name]
|
23
|
+
collection_value = \
|
24
|
+
if representer_klass
|
25
|
+
wrapped[collection_name].map { |item| representer_klass.wrap(item) }
|
26
|
+
else
|
27
|
+
wrapped[collection_name]
|
28
|
+
end
|
29
|
+
instance.instance_variable_set("@#{collection_name}", collection_value)
|
30
|
+
end
|
31
|
+
attribute_names.each do |attribute_name|
|
32
|
+
instance.send("#{attribute_name}=", wrapped.send(attribute_name))
|
33
|
+
end
|
34
|
+
instance
|
26
35
|
end
|
27
|
-
end
|
28
36
|
|
29
|
-
class << self
|
30
37
|
def attr_collection(name, **options)
|
31
38
|
unless name.is_a?(Symbol) || name.is_a?(String)
|
32
39
|
raise ArgumentError.new("collection's name must be a Symbol or a String")
|
@@ -49,6 +56,10 @@ module ActiveRepresenter
|
|
49
56
|
collections.keys
|
50
57
|
end
|
51
58
|
|
59
|
+
def attribute_names
|
60
|
+
attribute_types.keys - ["wrapped"]
|
61
|
+
end
|
62
|
+
|
52
63
|
def guess_representrer_name(name)
|
53
64
|
"#{name.singularize.camelize}Representer"
|
54
65
|
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
require "test/unit"
|
2
|
+
require "ostruct"
|
3
|
+
require_relative "../lib/active_representer/base.rb"
|
4
|
+
|
5
|
+
class UserRepresenter < ActiveRepresenter::Base
|
6
|
+
attribute :first_name, :string
|
7
|
+
attribute :last_name, :string
|
8
|
+
attribute :age, :integer
|
9
|
+
|
10
|
+
def full_name
|
11
|
+
"#{first_name} #{last_name}"
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
class InheritanceTest < Test::Unit::TestCase
|
16
|
+
test ".wrap does not raise error" do
|
17
|
+
user = OpenStruct.new(first_name: 'John', last_name: 'Appleseed')
|
18
|
+
assert_nothing_raised { UserRepresenter.wrap(user) }
|
19
|
+
end
|
20
|
+
|
21
|
+
test "#wrapped returns user object" do
|
22
|
+
user = OpenStruct.new(first_name: 'John', last_name: 'Appleseed')
|
23
|
+
representer = UserRepresenter.wrap(user)
|
24
|
+
assert_equal(representer.wrapped, user)
|
25
|
+
end
|
26
|
+
|
27
|
+
test "#first_name returns John" do
|
28
|
+
user = OpenStruct.new(first_name: 'John', last_name: 'Appleseed')
|
29
|
+
representer = UserRepresenter.wrap(user)
|
30
|
+
assert_equal(representer.first_name, 'John')
|
31
|
+
end
|
32
|
+
|
33
|
+
test "#last_name returns Appleseed" do
|
34
|
+
user = OpenStruct.new(first_name: 'John', last_name: 'Appleseed')
|
35
|
+
representer = UserRepresenter.wrap(user)
|
36
|
+
assert_equal(representer.last_name, 'Appleseed')
|
37
|
+
end
|
38
|
+
|
39
|
+
test "#full_name returns John Appleseed" do
|
40
|
+
user = OpenStruct.new(first_name: 'John', last_name: 'Appleseed')
|
41
|
+
representer = UserRepresenter.wrap(user)
|
42
|
+
assert_equal(representer.full_name, 'John Appleseed')
|
43
|
+
end
|
44
|
+
|
45
|
+
test "#age returns 30" do
|
46
|
+
user = OpenStruct.new(first_name: 'John', last_name: 'Appleseed', age: 30)
|
47
|
+
representer = UserRepresenter.wrap(user)
|
48
|
+
assert_equal(representer.age, 30)
|
49
|
+
end
|
50
|
+
end
|
data/test/base_test.rb
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
require "test/unit"
|
2
|
-
|
2
|
+
require_relative "../lib/active_representer/base.rb"
|
3
3
|
|
4
4
|
class BaseTest < Test::Unit::TestCase
|
5
|
-
test ".
|
5
|
+
test ".wrap does not raise error" do
|
6
6
|
wrapped = {}
|
7
|
-
assert_nothing_raised { ActiveRepresenter::Base.
|
7
|
+
assert_nothing_raised { ActiveRepresenter::Base.wrap(wrapped) }
|
8
8
|
end
|
9
9
|
|
10
10
|
test "#wrapped returns original wrapped object" do
|
11
11
|
wrapped = {}
|
12
|
-
representer = ActiveRepresenter::Base.
|
12
|
+
representer = ActiveRepresenter::Base.wrap(wrapped)
|
13
13
|
assert_equal(representer.wrapped, wrapped)
|
14
14
|
end
|
15
15
|
end
|
data/test/collection_test.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require "test/unit"
|
2
|
-
require_relative "../lib/active_representer/base.rb"
|
3
2
|
require "ostruct"
|
4
3
|
require "active_support/time"
|
4
|
+
require_relative "../lib/active_representer/base.rb"
|
5
5
|
|
6
6
|
class ActivityRepresenter < ActiveRepresenter::Base
|
7
7
|
def created_on
|
@@ -19,24 +19,24 @@ class UserRepresenter < ActiveRepresenter::Base
|
|
19
19
|
end
|
20
20
|
|
21
21
|
class CollectionTest < Test::Unit::TestCase
|
22
|
-
test ".
|
22
|
+
test ".wrap does not raise error" do
|
23
23
|
user = OpenStruct.new(first_name: 'John', last_name: 'Appleseed')
|
24
|
-
assert_nothing_raised { UserRepresenter.
|
24
|
+
assert_nothing_raised { UserRepresenter.wrap(user) }
|
25
25
|
end
|
26
26
|
|
27
27
|
test "#full_name returns John Appleseed" do
|
28
28
|
user = OpenStruct.new(first_name: 'John', last_name: 'Appleseed')
|
29
|
-
representer = UserRepresenter.
|
29
|
+
representer = UserRepresenter.wrap(user)
|
30
30
|
assert_equal(representer.full_name, 'John Appleseed')
|
31
31
|
end
|
32
32
|
|
33
|
-
test ".
|
33
|
+
test ".wrap does not raise error when activities are specified" do
|
34
34
|
user = OpenStruct.new(
|
35
35
|
first_name: 'John',
|
36
36
|
last_name: 'Appleseed',
|
37
37
|
activities: [OpenStruct.new(created_at: Time.now)]
|
38
38
|
)
|
39
|
-
assert_nothing_raised { UserRepresenter.
|
39
|
+
assert_nothing_raised { UserRepresenter.wrap(user) }
|
40
40
|
end
|
41
41
|
|
42
42
|
test "activity is represented" do
|
@@ -45,7 +45,7 @@ class CollectionTest < Test::Unit::TestCase
|
|
45
45
|
last_name: 'Appleseed',
|
46
46
|
activities: [OpenStruct.new(created_at: Time.now)]
|
47
47
|
)
|
48
|
-
representer = UserRepresenter.
|
48
|
+
representer = UserRepresenter.wrap(user)
|
49
49
|
activity = representer.activities.first
|
50
50
|
assert_instance_of(ActivityRepresenter, activity)
|
51
51
|
end
|
@@ -56,7 +56,7 @@ class CollectionTest < Test::Unit::TestCase
|
|
56
56
|
last_name: 'Appleseed',
|
57
57
|
activities: [OpenStruct.new(created_at: Time.now)]
|
58
58
|
)
|
59
|
-
representer = UserRepresenter.
|
59
|
+
representer = UserRepresenter.wrap(user)
|
60
60
|
activity = representer.activities.first
|
61
61
|
assert_equal(activity.created_on, Date.today)
|
62
62
|
end
|
@@ -67,7 +67,7 @@ class CollectionTest < Test::Unit::TestCase
|
|
67
67
|
last_name: 'Appleseed',
|
68
68
|
notifications: [OpenStruct.new(created_at: Time.now)]
|
69
69
|
)
|
70
|
-
representer = UserRepresenter.
|
70
|
+
representer = UserRepresenter.wrap(user)
|
71
71
|
notification = representer.notifications.first
|
72
72
|
assert_instance_of(OpenStruct, notification)
|
73
73
|
end
|
data/test/inheritance_test.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require "test/unit"
|
2
|
-
require "activerepresenter"
|
3
2
|
require "ostruct"
|
3
|
+
require_relative "../lib/active_representer/base.rb"
|
4
4
|
|
5
5
|
class UserRepresenter < ActiveRepresenter::Base
|
6
6
|
def full_name
|
@@ -9,32 +9,32 @@ class UserRepresenter < ActiveRepresenter::Base
|
|
9
9
|
end
|
10
10
|
|
11
11
|
class InheritanceTest < Test::Unit::TestCase
|
12
|
-
test ".
|
12
|
+
test ".wrap does not raise error" do
|
13
13
|
user = OpenStruct.new(first_name: 'John', last_name: 'Appleseed')
|
14
|
-
assert_nothing_raised { UserRepresenter.
|
14
|
+
assert_nothing_raised { UserRepresenter.wrap(user) }
|
15
15
|
end
|
16
16
|
|
17
17
|
test "#wrapped returns user object" do
|
18
18
|
user = OpenStruct.new(first_name: 'John', last_name: 'Appleseed')
|
19
|
-
representer = UserRepresenter.
|
19
|
+
representer = UserRepresenter.wrap(user)
|
20
20
|
assert_equal(representer.wrapped, user)
|
21
21
|
end
|
22
22
|
|
23
23
|
test "#first_name returns John" do
|
24
24
|
user = OpenStruct.new(first_name: 'John', last_name: 'Appleseed')
|
25
|
-
representer = UserRepresenter.
|
25
|
+
representer = UserRepresenter.wrap(user)
|
26
26
|
assert_equal(representer.first_name, 'John')
|
27
27
|
end
|
28
28
|
|
29
29
|
test "#last_name returns Appleseed" do
|
30
30
|
user = OpenStruct.new(first_name: 'John', last_name: 'Appleseed')
|
31
|
-
representer = UserRepresenter.
|
31
|
+
representer = UserRepresenter.wrap(user)
|
32
32
|
assert_equal(representer.last_name, 'Appleseed')
|
33
33
|
end
|
34
34
|
|
35
35
|
test "#full_name returns John Appleseed" do
|
36
36
|
user = OpenStruct.new(first_name: 'John', last_name: 'Appleseed')
|
37
|
-
representer = UserRepresenter.
|
37
|
+
representer = UserRepresenter.wrap(user)
|
38
38
|
assert_equal(representer.full_name, 'John Appleseed')
|
39
39
|
end
|
40
40
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activerepresenter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.13
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryo Hashimoto
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-10-
|
11
|
+
date: 2018-10-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -24,13 +24,33 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.3'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: activemodel
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '5.2'
|
34
|
+
- - "<"
|
35
|
+
- !ruby/object:Gem::Version
|
36
|
+
version: '6'
|
37
|
+
type: :runtime
|
38
|
+
prerelease: false
|
39
|
+
version_requirements: !ruby/object:Gem::Requirement
|
40
|
+
requirements:
|
41
|
+
- - ">="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '5.2'
|
44
|
+
- - "<"
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '6'
|
27
47
|
- !ruby/object:Gem::Dependency
|
28
48
|
name: activesupport
|
29
49
|
requirement: !ruby/object:Gem::Requirement
|
30
50
|
requirements:
|
31
51
|
- - ">="
|
32
52
|
- !ruby/object:Gem::Version
|
33
|
-
version: '5.
|
53
|
+
version: '5.2'
|
34
54
|
- - "<"
|
35
55
|
- !ruby/object:Gem::Version
|
36
56
|
version: '6'
|
@@ -40,7 +60,7 @@ dependencies:
|
|
40
60
|
requirements:
|
41
61
|
- - ">="
|
42
62
|
- !ruby/object:Gem::Version
|
43
|
-
version: '5.
|
63
|
+
version: '5.2'
|
44
64
|
- - "<"
|
45
65
|
- !ruby/object:Gem::Version
|
46
66
|
version: '6'
|
@@ -69,6 +89,7 @@ files:
|
|
69
89
|
- activerepresenter.gemspec
|
70
90
|
- lib/active_representer/base.rb
|
71
91
|
- lib/activerepresenter.rb
|
92
|
+
- test/attribute_test.rb
|
72
93
|
- test/base_test.rb
|
73
94
|
- test/collection_test.rb
|
74
95
|
- test/inheritance_test.rb
|
@@ -98,6 +119,7 @@ specification_version: 4
|
|
98
119
|
summary: Active Representer provides model objects by decorating objects (part of
|
99
120
|
Lightrails).
|
100
121
|
test_files:
|
122
|
+
- test/attribute_test.rb
|
101
123
|
- test/base_test.rb
|
102
124
|
- test/collection_test.rb
|
103
125
|
- test/inheritance_test.rb
|