hexx 4.0.0 → 5.0.0
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/lib/hexx/service.rb +5 -0
- data/lib/hexx/service/message.rb +0 -14
- data/lib/hexx/service/parameters.rb +16 -2
- data/lib/hexx/version.rb +1 -1
- data/spec/hexx/service/message_spec.rb +0 -14
- data/spec/hexx/service_spec.rb +24 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7290018a93943ca2db70630dac37ed9d1b2eabfe
|
4
|
+
data.tar.gz: 04b3a2c21598e88beda09d3f2a8bcee7622ba105
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e93648cc19a96e0dca81731ce200b443a4d10e394356e329f0995061cf5ea9656758f42a382b65d465125baa6bc38013f94f5d39b2d00ffe3c04922c6317c5db
|
7
|
+
data.tar.gz: 4169b5355f71c1a1bb1c431edacb47e68d81990c6b74c6164a71aebc5d0b85c098be054f9f6789239c4c371b26144224e4379e78bc3f36b1b5764af7a909a1fd
|
data/lib/hexx/service.rb
CHANGED
data/lib/hexx/service/message.rb
CHANGED
@@ -42,20 +42,6 @@ module Hexx
|
|
42
42
|
@type, @text = type.to_s, text.to_s
|
43
43
|
end
|
44
44
|
|
45
|
-
# Extracts error messages from ActiveRecord or ActiveModel objects.
|
46
|
-
#
|
47
|
-
# @example
|
48
|
-
# Message.from(object)
|
49
|
-
# # => [#<Hexx::Service::Message ...>]
|
50
|
-
#
|
51
|
-
# @param [ActiveRecord::Base] object The object to extract messages from.
|
52
|
-
# @return [Array<Hexx::Service::Message>] The array of extracted messages.
|
53
|
-
def self.from(object)
|
54
|
-
object.errors.values.flatten.map do |text|
|
55
|
-
new type: "error", text: text
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
45
|
# Distinguishes two messages by type and text.
|
60
46
|
#
|
61
47
|
# @example
|
@@ -35,7 +35,22 @@ module Hexx
|
|
35
35
|
# @param [Array<Symbol, String>] keys The list of allowed parameters.
|
36
36
|
def allow_params(*keys)
|
37
37
|
@params = keys.map(&:to_s)
|
38
|
-
|
38
|
+
define_individual_params
|
39
|
+
end
|
40
|
+
|
41
|
+
def define_individual_params
|
42
|
+
params.each do |name|
|
43
|
+
add_getter(name)
|
44
|
+
add_setter(name)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def add_getter(name)
|
49
|
+
define_method(name) { params[name] }
|
50
|
+
end
|
51
|
+
|
52
|
+
def add_setter(name)
|
53
|
+
define_method("#{name}=") { |value| params[name] = value }
|
39
54
|
end
|
40
55
|
end
|
41
56
|
|
@@ -48,7 +63,6 @@ module Hexx
|
|
48
63
|
# @param [Hash] params ({}) The parameters of the service object.
|
49
64
|
def initialize(params = {})
|
50
65
|
extract_params_from params
|
51
|
-
@params.each { |key, value| public_send "#{ key }=", value }
|
52
66
|
end
|
53
67
|
|
54
68
|
# @!attribute [r] params
|
data/lib/hexx/version.rb
CHANGED
@@ -17,20 +17,6 @@ module Hexx
|
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
20
|
-
describe ".from" do
|
21
|
-
|
22
|
-
subject { Message }
|
23
|
-
let(:service) { Service.new }
|
24
|
-
before { service.public_send(:errors).add :base, :text }
|
25
|
-
|
26
|
-
it "extracts error messages from a record" do
|
27
|
-
message = subject.from(service).first
|
28
|
-
expect(message).to be_kind_of Message
|
29
|
-
expect(message.type).to eq "error"
|
30
|
-
expect(message.text).to eq service.errors.values.flatten.first
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
20
|
describe "#type" do
|
35
21
|
|
36
22
|
subject { Message.new type: "info", text: "text" }
|
data/spec/hexx/service_spec.rb
CHANGED
@@ -42,9 +42,15 @@ module Hexx
|
|
42
42
|
expect(subject.params["wrong"]).to be_nil
|
43
43
|
end
|
44
44
|
|
45
|
-
it "
|
45
|
+
it "define individual params' getters" do
|
46
46
|
expect(subject.name).to eq value
|
47
47
|
end
|
48
|
+
|
49
|
+
it "defines individual params' setters" do
|
50
|
+
subject.name = :another_name
|
51
|
+
expect(subject.name).to eq :another_name
|
52
|
+
expect(subject.params["name"]).to eq :another_name
|
53
|
+
end
|
48
54
|
end
|
49
55
|
|
50
56
|
describe "#with_callbacks" do
|
@@ -98,7 +104,7 @@ module Hexx
|
|
98
104
|
end
|
99
105
|
end
|
100
106
|
|
101
|
-
describe "
|
107
|
+
describe "helpers" do
|
102
108
|
|
103
109
|
let!(:service) { Service.new }
|
104
110
|
subject { service.with_callbacks }
|
@@ -113,6 +119,7 @@ module Hexx
|
|
113
119
|
|
114
120
|
it "defines instance attributes" do
|
115
121
|
expect(Test.instance_methods).to be_include :name
|
122
|
+
expect(Test.instance_methods).to be_include :name=
|
116
123
|
end
|
117
124
|
end
|
118
125
|
|
@@ -167,6 +174,21 @@ module Hexx
|
|
167
174
|
end
|
168
175
|
end
|
169
176
|
|
177
|
+
describe "#on_error" do
|
178
|
+
|
179
|
+
let!(:message) { Service::Message.new(type: "error", text: "error") }
|
180
|
+
|
181
|
+
it "fails with Service::Invalid" do
|
182
|
+
expect { subject.on_error [message] }
|
183
|
+
.to raise_error { Service::Invalid }
|
184
|
+
end
|
185
|
+
|
186
|
+
it "adds errors to the service" do
|
187
|
+
begin; subject.on_error [message]; rescue; end
|
188
|
+
expect(subject.errors.messages).to eq(base: ["error"])
|
189
|
+
end
|
190
|
+
end
|
191
|
+
|
170
192
|
describe "#escape" do
|
171
193
|
|
172
194
|
let(:listener) { double "listener" }
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hexx
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 5.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Kozin
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-12-
|
11
|
+
date: 2014-12-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activemodel
|