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