dymos 0.1.2 → 0.1.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 +4 -4
- data/lib/dymos.rb +2 -0
- data/lib/dymos/model.rb +37 -12
- data/lib/dymos/version.rb +1 -1
- data/spec/lib/dymos/model_spec.rb +32 -3
- 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: 912347a161333fca91118262b83e43abe53d2d89
|
4
|
+
data.tar.gz: 18e35289cca3e09a2d8f4695772685fa3260717b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e1a4c85c416d29fa8f7f4a2e9d5a654c5c68aac9b48a5d0490596b8cbed2441c277a1421666e06772d10873492006ae6976c79972a60a2f30852bc5c17b93a22
|
7
|
+
data.tar.gz: 822c361c91bc0f0b62f3adc39964ebaaef8b1c177ce234345978cd880bc00481075584259ea02a6275ed39ca70c1ccaa9092fbde25eeadb44a8e1582a5d272e7
|
data/lib/dymos.rb
CHANGED
data/lib/dymos/model.rb
CHANGED
@@ -15,27 +15,42 @@ module Dymos
|
|
15
15
|
super
|
16
16
|
end
|
17
17
|
|
18
|
-
def self.field(attr, type, default: nil, desc:nil)
|
18
|
+
def self.field(attr, type, default: nil, desc: nil)
|
19
|
+
fail StandardError('attribute name is invalid') if attr =~ /[\!\?]$/
|
20
|
+
fail StandardError('require "default" option') if(type == :bool && default.nil?)
|
21
|
+
|
19
22
|
@fields ||= {}
|
20
23
|
@fields[attr]={
|
21
|
-
|
22
|
-
|
24
|
+
type: type,
|
25
|
+
default: default
|
23
26
|
}
|
24
27
|
define_attribute_methods attr
|
25
28
|
define_method(attr) { |raw=false|
|
26
|
-
val=read_attribute(attr) || default
|
27
|
-
return val if raw
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
29
|
+
val = read_attribute(attr) || default
|
30
|
+
return val if raw || !val.present?
|
31
|
+
|
32
|
+
case type
|
33
|
+
when :bool
|
34
|
+
to_b(val)
|
35
|
+
when :time
|
36
|
+
Time.parse val
|
37
|
+
when :integer
|
38
|
+
val.to_i
|
39
|
+
else
|
40
|
+
val
|
34
41
|
end
|
42
|
+
|
35
43
|
}
|
36
44
|
define_method("#{attr}_type") { type }
|
37
45
|
define_method("#{attr}_desc") { desc }
|
38
|
-
define_method("#{attr}?")
|
46
|
+
define_method("#{attr}?") do
|
47
|
+
val = self.send attr
|
48
|
+
if type == :bool
|
49
|
+
val
|
50
|
+
else
|
51
|
+
!val.nil?
|
52
|
+
end
|
53
|
+
end
|
39
54
|
define_method("#{attr}=") do |value, initialize=false|
|
40
55
|
value = value.iso8601 if self.class.fields.include?(attr) && value.is_a?(Time)
|
41
56
|
write_attribute(attr, value, initialize)
|
@@ -123,5 +138,15 @@ module Dymos
|
|
123
138
|
@attributes[name.to_sym] = value
|
124
139
|
end
|
125
140
|
|
141
|
+
def to_b(val)
|
142
|
+
compare_value = val.class == String ? val.downcase : val
|
143
|
+
case compare_value
|
144
|
+
when "yes", "true", "ok", true, "1", 1, :true, :ok, :yes
|
145
|
+
true
|
146
|
+
else
|
147
|
+
false
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
126
151
|
end
|
127
152
|
end
|
data/lib/dymos/version.rb
CHANGED
@@ -1,4 +1,16 @@
|
|
1
1
|
describe Dymos::Model do
|
2
|
+
describe "不正なfield" do
|
3
|
+
it "末尾に?は使えない" do
|
4
|
+
expect { Class.new(Dymos::Model) do
|
5
|
+
field "hoge?", :string
|
6
|
+
end }.to raise_error
|
7
|
+
end
|
8
|
+
it "type:boolには初期値が必須" do
|
9
|
+
expect { Class.new(Dymos::Model) do
|
10
|
+
field "hoge", :bool
|
11
|
+
end }.to raise_error
|
12
|
+
end
|
13
|
+
end
|
2
14
|
class DummyUser < Dymos::Model
|
3
15
|
table :dummy
|
4
16
|
field :id, :string, desc: 'hoge'
|
@@ -6,6 +18,7 @@ describe Dymos::Model do
|
|
6
18
|
field :email, :string
|
7
19
|
field :list, :string_set
|
8
20
|
field :count, :integer
|
21
|
+
field :enable, :bool, default: false
|
9
22
|
|
10
23
|
field :created_at, :time
|
11
24
|
field :updated_at, :time
|
@@ -51,6 +64,8 @@ describe Dymos::Model do
|
|
51
64
|
client.put_item(table_name: 'dummy', item: {id: 'fuga', name: '次郎'})
|
52
65
|
client.put_item(table_name: 'dummy', item: {id: 'piyo', name: '三郎'})
|
53
66
|
client.put_item(table_name: 'dummy', item: {id: 'musashi', name: '巴'}) #削除用
|
67
|
+
client.put_item(table_name: 'dummy', item: {id: 'enable_id', name: 'enable', enable:1})
|
68
|
+
client.put_item(table_name: 'dummy', item: {id: 'disable_id', name: 'disable', enable:0})
|
54
69
|
|
55
70
|
client.delete_table(table_name: 'post') if client.list_tables[:table_names].include?('post')
|
56
71
|
client.create_table(
|
@@ -73,7 +88,7 @@ describe Dymos::Model do
|
|
73
88
|
|
74
89
|
describe :fields do
|
75
90
|
it do
|
76
|
-
expect(DummyUser.fields.keys).to eq([:id, :name, :email, :list, :count, :created_at, :updated_at])
|
91
|
+
expect(DummyUser.fields.keys).to eq([:id, :name, :email, :list, :count, :enable, :created_at, :updated_at])
|
77
92
|
end
|
78
93
|
end
|
79
94
|
describe "クラスマクロのデフォルト値" do
|
@@ -93,7 +108,12 @@ describe Dymos::Model do
|
|
93
108
|
it "bodyは'none'を返す" do
|
94
109
|
expect(DummyModel.new.body).to eq('none')
|
95
110
|
end
|
96
|
-
|
111
|
+
it "enable?はfalseを返す" do
|
112
|
+
model = DummyUser.new
|
113
|
+
expect(model.enable?).to eq(false)
|
114
|
+
model.enable = true
|
115
|
+
expect(model.enable?).to eq(true)
|
116
|
+
end
|
97
117
|
it "上書きすることができる" do
|
98
118
|
model = DummyModel.new
|
99
119
|
model.id=1
|
@@ -201,6 +221,7 @@ describe Dymos::Model do
|
|
201
221
|
user.id = 'aiueo'
|
202
222
|
user.name = '四郎'
|
203
223
|
user.email = 'hoge@sample.net'
|
224
|
+
user.enable = true
|
204
225
|
expect(user.created_at).to eq(nil)
|
205
226
|
now = Time.now
|
206
227
|
Timecop.freeze(now)
|
@@ -229,7 +250,7 @@ describe Dymos::Model do
|
|
229
250
|
describe :all do
|
230
251
|
it "すべてのユーザを抽出" do
|
231
252
|
users = DummyUser.all
|
232
|
-
expect(users.size).to eq(
|
253
|
+
expect(users.size).to eq(7)
|
233
254
|
end
|
234
255
|
end
|
235
256
|
|
@@ -291,6 +312,14 @@ describe Dymos::Model do
|
|
291
312
|
expect(user.destroyed?).to eq(true)
|
292
313
|
expect(DummyUser.get.key(id: 'musashi').execute).to eq(nil)
|
293
314
|
end
|
315
|
+
it 'enableはBoolとして扱われる' do
|
316
|
+
user = DummyUser.get.key(id: 'enable_id').execute
|
317
|
+
expect(user.enable).to eq(true)
|
318
|
+
expect(user.enable?).to eq(true)
|
319
|
+
user = DummyUser.get.key(id: 'disable_id').execute
|
320
|
+
expect(user.enable).to eq(false)
|
321
|
+
expect(user.enable?).to eq(false)
|
322
|
+
end
|
294
323
|
end
|
295
324
|
end
|
296
325
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dymos
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- hoshina85
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-11-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|