activerepresenter 0.0.12 → 0.0.13
Sign up to get free protection for your applications and to get access to all the features.
- 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
|