easy_model 1.0.5 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +6 -2
- data/README.rdoc +32 -78
- data/README_ja.rdoc +104 -0
- data/VERSION +1 -1
- data/easy_model.gemspec +15 -14
- data/lib/easy_model/base.rb +2 -58
- data/lib/easy_model/column.rb +6 -42
- data/lib/easy_model/column_for_active_model.rb +116 -0
- data/lib/easy_model/column_for_active_record.rb +95 -0
- data/lib/easy_model/search_form.rb +3 -1
- data/test/easy_model/test_column_for_active_model.rb +355 -0
- data/test/easy_model/{test_column.rb → test_column_for_active_record.rb} +107 -41
- data/test/easy_model/test_search_form.rb +6 -0
- data/test/helper.rb +1 -1
- metadata +12 -22
- data/test/easy_model/test_base.rb +0 -47
@@ -2,11 +2,89 @@
|
|
2
2
|
|
3
3
|
require File.join(File.dirname(__FILE__), '..', 'helper')
|
4
4
|
|
5
|
-
class EasyModel::
|
5
|
+
class EasyModel::TestColumnForActiveRecord < Test::Unit::TestCase
|
6
|
+
|
7
|
+
def setup
|
8
|
+
Time.zone = 'Hawaii'
|
9
|
+
I18n.load_path = [File.join(File.dirname(__FILE__), 'ja.yml')]
|
10
|
+
I18n.default_locale = :ja
|
11
|
+
ActiveRecord::Base.establish_connection(adapter: 'sqlite3', database: 'test.sqlite3')
|
12
|
+
ActiveRecord::Base.connection.execute('BEGIN')
|
13
|
+
ActiveRecord::Base.connection.execute('DROP TABLE IF EXISTS users')
|
14
|
+
ActiveRecord::Base.connection.execute('CREATE TABLE users (id INTEGER PRIMARY KEY)')
|
15
|
+
end
|
16
|
+
|
17
|
+
def teardown
|
18
|
+
ActiveRecord::Base.connection.execute('ROLLBACK')
|
19
|
+
end
|
20
|
+
|
21
|
+
def new_model
|
22
|
+
Class.new(ActiveRecord::Base) do
|
23
|
+
self.table_name = 'users'
|
24
|
+
include EasyModel::Column
|
25
|
+
column :name, :string
|
26
|
+
column :email, :string
|
27
|
+
column :age, :integer
|
28
|
+
def self.name; 'User'; end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_initialize
|
33
|
+
user = new_model.new(:name => 'taro', :email => 'taro@example.com', :age => 20)
|
34
|
+
assert_equal 'taro', user.name
|
35
|
+
assert_equal 'taro@example.com', user.email
|
36
|
+
assert_equal 20, user.age
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_easy_model_attribute_names_class_method
|
40
|
+
assert_equal %w(name email age), new_model.easy_model_attribute_names
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_easy_model_attribute_names_instance_method
|
44
|
+
assert_equal %w(name email age), new_model.new.easy_model_attribute_names
|
45
|
+
end
|
46
|
+
|
47
|
+
def test_attribute_names_class_method
|
48
|
+
assert_equal %w(id), new_model.attribute_names
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_attribute_names_instance_method
|
52
|
+
assert_equal %w(id), new_model.new.attribute_names
|
53
|
+
end
|
54
|
+
|
55
|
+
def test_easy_model_attributes
|
56
|
+
attributes = {:name => 'taro', :email => 'taro@example.com', :age => 20}
|
57
|
+
assert_equal attributes.stringify_keys, new_model.new(attributes).easy_model_attributes
|
58
|
+
end
|
59
|
+
|
60
|
+
def test_attributes
|
61
|
+
attributes = {:name => 'taro', :email => 'taro@example.com', :age => 20}
|
62
|
+
assert_equal({'id' => nil}, new_model.new(attributes).attributes)
|
63
|
+
end
|
64
|
+
|
65
|
+
def test_attributes=
|
66
|
+
object = new_model.new
|
67
|
+
object.attributes = {:name => 'taro', :email => 'taro@example.com', :age => 20}
|
68
|
+
assert_equal 'taro', object.name
|
69
|
+
assert_equal 'taro@example.com', object.email
|
70
|
+
assert_equal 20, object.age
|
71
|
+
end
|
72
|
+
|
73
|
+
def test_i18n_scope
|
74
|
+
model = new_model
|
75
|
+
assert_equal :easy_model, model.i18n_scope
|
76
|
+
assert_equal 'ユーザ', model.model_name.human
|
77
|
+
assert_equal '名前', model.human_attribute_name(:name)
|
78
|
+
assert_equal 'メールアドレス', model.human_attribute_name(:email)
|
79
|
+
assert_equal '年齢', model.human_attribute_name(:age)
|
80
|
+
end
|
81
|
+
|
82
|
+
def test_persisted?
|
83
|
+
assert_equal false, new_model.new.persisted?
|
84
|
+
end
|
6
85
|
|
7
86
|
def test_has_column_method
|
8
|
-
model =
|
9
|
-
model.send(:include, EasyModel::Column)
|
87
|
+
model = new_model
|
10
88
|
model.send(:column, :integer_column, :integer)
|
11
89
|
assert model.protected_methods.include?(:column)
|
12
90
|
|
@@ -17,8 +95,7 @@ class EasyModel::TestColumn < Test::Unit::TestCase
|
|
17
95
|
end
|
18
96
|
|
19
97
|
def test_before_type_cast
|
20
|
-
model =
|
21
|
-
model.send(:include, EasyModel::Column)
|
98
|
+
model = new_model
|
22
99
|
model.send(:column, :integer_column, :integer)
|
23
100
|
object = model.new
|
24
101
|
|
@@ -40,8 +117,7 @@ class EasyModel::TestColumn < Test::Unit::TestCase
|
|
40
117
|
end
|
41
118
|
|
42
119
|
def test_string_column
|
43
|
-
model =
|
44
|
-
model.send(:include, EasyModel::Column)
|
120
|
+
model = new_model
|
45
121
|
model.send(:column, :column_with_default, :string, :default => 'default value')
|
46
122
|
model.send(:column, :column_without_default, :string)
|
47
123
|
object = model.new
|
@@ -56,8 +132,7 @@ class EasyModel::TestColumn < Test::Unit::TestCase
|
|
56
132
|
end
|
57
133
|
|
58
134
|
def test_text_column
|
59
|
-
model =
|
60
|
-
model.send(:include, EasyModel::Column)
|
135
|
+
model = new_model
|
61
136
|
model.send(:column, :column_with_default, :text, :default => 'default value')
|
62
137
|
model.send(:column, :column_without_default, :text)
|
63
138
|
object = model.new
|
@@ -72,8 +147,7 @@ class EasyModel::TestColumn < Test::Unit::TestCase
|
|
72
147
|
end
|
73
148
|
|
74
149
|
def test_integer_column
|
75
|
-
model =
|
76
|
-
model.send(:include, EasyModel::Column)
|
150
|
+
model = new_model
|
77
151
|
model.send(:column, :column_with_default, :integer, :default => 777)
|
78
152
|
model.send(:column, :column_without_default, :integer)
|
79
153
|
object = model.new
|
@@ -92,8 +166,7 @@ class EasyModel::TestColumn < Test::Unit::TestCase
|
|
92
166
|
end
|
93
167
|
|
94
168
|
def test_float_column
|
95
|
-
model =
|
96
|
-
model.send(:include, EasyModel::Column)
|
169
|
+
model = new_model
|
97
170
|
model.send(:column, :column_with_default, :float, :default => 1.5)
|
98
171
|
model.send(:column, :column_without_default, :float)
|
99
172
|
object = model.new
|
@@ -114,8 +187,7 @@ class EasyModel::TestColumn < Test::Unit::TestCase
|
|
114
187
|
end
|
115
188
|
|
116
189
|
def test_decimal_column
|
117
|
-
model =
|
118
|
-
model.send(:include, EasyModel::Column)
|
190
|
+
model = new_model
|
119
191
|
model.send(:column, :column_with_default, :decimal, :default => 1.5)
|
120
192
|
model.send(:column, :column_without_default, :decimal)
|
121
193
|
object = model.new
|
@@ -136,49 +208,46 @@ class EasyModel::TestColumn < Test::Unit::TestCase
|
|
136
208
|
end
|
137
209
|
|
138
210
|
def test_datetime_column
|
139
|
-
model =
|
140
|
-
model.send(:
|
141
|
-
model.send(:column, :column_with_default, :datetime, :default => Time.parse('2000-01-01 10:20:30'))
|
211
|
+
model = new_model
|
212
|
+
model.send(:column, :column_with_default, :datetime, :default => Time.zone.parse('2000-01-01 10:20:30'))
|
142
213
|
model.send(:column, :column_without_default, :datetime)
|
143
214
|
object = model.new
|
144
215
|
|
145
216
|
# 未代入の場合にデフォルト値が取得できること.
|
146
217
|
assert_nil object.column_without_default
|
147
|
-
assert_equal Time.parse('2000-01-01 10:20:30'), object.column_with_default
|
218
|
+
assert_equal Time.zone.parse('2000-01-01 10:20:30'), object.column_with_default
|
148
219
|
|
149
220
|
# 代入した値が取得できること.
|
150
|
-
object.column_with_default = Time.parse('2000-02-01 10:20:30')
|
151
|
-
assert_equal Time.parse('2000-02-01 10:20:30'), object.column_with_default
|
221
|
+
object.column_with_default = Time.zone.parse('2000-02-01 10:20:30')
|
222
|
+
assert_equal Time.zone.parse('2000-02-01 10:20:30'), object.column_with_default
|
152
223
|
|
153
224
|
# 値の変換が行われること.
|
154
|
-
object.column_with_default = '2000-03-01 10:20:30'
|
155
|
-
assert_equal Time.parse('2000-03-01 10:20:30'), object.column_with_default
|
225
|
+
object.column_with_default = Time.zone.parse('2000-03-01 10:20:30')
|
226
|
+
assert_equal Time.zone.parse('2000-03-01 10:20:30'), object.column_with_default
|
156
227
|
end
|
157
228
|
|
158
229
|
def test_timestamp_column
|
159
|
-
model =
|
160
|
-
model.send(:
|
161
|
-
model.send(:column, :column_with_default, :timestamp, :default => Time.parse('2000-01-01 10:20:30'))
|
230
|
+
model = new_model
|
231
|
+
model.send(:column, :column_with_default, :timestamp, :default => Time.zone.parse('2000-01-01 10:20:30'))
|
162
232
|
model.send(:column, :column_without_default, :timestamp)
|
163
233
|
object = model.new
|
164
234
|
|
165
235
|
# 未代入の場合にデフォルト値が取得できること.
|
166
236
|
assert_nil object.column_without_default
|
167
|
-
assert_equal Time.parse('2000-01-01 10:20:30'), object.column_with_default
|
237
|
+
assert_equal Time.zone.parse('2000-01-01 10:20:30'), object.column_with_default
|
168
238
|
|
169
239
|
# 代入した値が取得できること.
|
170
|
-
object.column_with_default = Time.parse('2000-02-01 10:20:30')
|
171
|
-
assert_equal Time.parse('2000-02-01 10:20:30'), object.column_with_default
|
240
|
+
object.column_with_default = Time.zone.parse('2000-02-01 10:20:30')
|
241
|
+
assert_equal Time.zone.parse('2000-02-01 10:20:30'), object.column_with_default
|
172
242
|
|
173
243
|
# 値の変換が行われること.
|
174
|
-
object.column_with_default = '2000-03-01 10:20:30'
|
175
|
-
assert_equal Time.parse('2000-03-01 10:20:30'), object.column_with_default
|
244
|
+
object.column_with_default = Time.zone.parse('2000-03-01 10:20:30')
|
245
|
+
assert_equal Time.zone.parse('2000-03-01 10:20:30'), object.column_with_default
|
176
246
|
end
|
177
247
|
|
178
248
|
def test_time_column
|
179
|
-
model =
|
180
|
-
model.send(:
|
181
|
-
model.send(:column, :column_with_default, :time, :default => Time.parse('2000-01-01 10:20:30'))
|
249
|
+
model = new_model
|
250
|
+
model.send(:column, :column_with_default, :time, :default => Time.zone.parse('2000-01-01 10:20:30'))
|
182
251
|
model.send(:column, :column_without_default, :time)
|
183
252
|
object = model.new
|
184
253
|
|
@@ -189,15 +258,14 @@ class EasyModel::TestColumn < Test::Unit::TestCase
|
|
189
258
|
assert_equal 30, object.column_with_default.sec
|
190
259
|
|
191
260
|
# 代入した値が取得できること.
|
192
|
-
object.column_with_default = Time.parse('2000-02-01 20:30:40')
|
261
|
+
object.column_with_default = Time.zone.parse('2000-02-01 20:30:40')
|
193
262
|
assert_equal 20, object.column_with_default.hour
|
194
263
|
assert_equal 30, object.column_with_default.min
|
195
264
|
assert_equal 40, object.column_with_default.sec
|
196
265
|
end
|
197
266
|
|
198
267
|
def test_date_column
|
199
|
-
model =
|
200
|
-
model.send(:include, EasyModel::Column)
|
268
|
+
model = new_model
|
201
269
|
model.send(:column, :column_with_default, :date, :default => Date.parse('2000-01-01'))
|
202
270
|
model.send(:column, :column_without_default, :date)
|
203
271
|
object = model.new
|
@@ -216,8 +284,7 @@ class EasyModel::TestColumn < Test::Unit::TestCase
|
|
216
284
|
end
|
217
285
|
|
218
286
|
def test_binary_column
|
219
|
-
model =
|
220
|
-
model.send(:include, EasyModel::Column)
|
287
|
+
model = new_model
|
221
288
|
model.send(:column, :column_with_default, :binary, :default => 'default value')
|
222
289
|
model.send(:column, :column_without_default, :binary)
|
223
290
|
object = model.new
|
@@ -232,8 +299,7 @@ class EasyModel::TestColumn < Test::Unit::TestCase
|
|
232
299
|
end
|
233
300
|
|
234
301
|
def test_boolean_column
|
235
|
-
model =
|
236
|
-
model.send(:include, EasyModel::Column)
|
302
|
+
model = new_model
|
237
303
|
model.send(:column, :column_with_default, :boolean, :default => true)
|
238
304
|
model.send(:column, :column_without_default, :boolean)
|
239
305
|
object = model.new
|
data/test/helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: easy_model
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- SUZUKI Kei
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-10-
|
11
|
+
date: 2013-10-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activemodel
|
@@ -16,28 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ~>
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '4.0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ~>
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '4.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: activerecord
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - ~>
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '4.0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - ~>
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '4.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rdoc
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -80,20 +80,6 @@ dependencies:
|
|
80
80
|
- - '>='
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: 1.8.4
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: simplecov
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - '>='
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: '0'
|
90
|
-
type: :development
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - '>='
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: '0'
|
97
83
|
description: データベースに依存しないモデルの基本クラスや, ActiveRecord と同じ型変換を行う属性定義メソッドを提供します.
|
98
84
|
email: info-techscore@synergy101.jp
|
99
85
|
executables: []
|
@@ -101,20 +87,24 @@ extensions: []
|
|
101
87
|
extra_rdoc_files:
|
102
88
|
- LICENSE.txt
|
103
89
|
- README.rdoc
|
90
|
+
- README_ja.rdoc
|
104
91
|
files:
|
105
92
|
- Gemfile
|
106
93
|
- LICENSE.txt
|
107
94
|
- README.rdoc
|
95
|
+
- README_ja.rdoc
|
108
96
|
- Rakefile
|
109
97
|
- VERSION
|
110
98
|
- easy_model.gemspec
|
111
99
|
- lib/easy_model.rb
|
112
100
|
- lib/easy_model/base.rb
|
113
101
|
- lib/easy_model/column.rb
|
102
|
+
- lib/easy_model/column_for_active_model.rb
|
103
|
+
- lib/easy_model/column_for_active_record.rb
|
114
104
|
- lib/easy_model/search_form.rb
|
115
105
|
- test/easy_model/ja.yml
|
116
|
-
- test/easy_model/
|
117
|
-
- test/easy_model/
|
106
|
+
- test/easy_model/test_column_for_active_model.rb
|
107
|
+
- test/easy_model/test_column_for_active_record.rb
|
118
108
|
- test/easy_model/test_search_form.rb
|
119
109
|
- test/helper.rb
|
120
110
|
homepage: http://github.com/techscore/easy_model
|
@@ -1,47 +0,0 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
|
3
|
-
require File.join(File.dirname(__FILE__), '..', 'helper')
|
4
|
-
|
5
|
-
class User < EasyModel::Base
|
6
|
-
column :name, :string
|
7
|
-
column :email, :string
|
8
|
-
column :age, :integer
|
9
|
-
end
|
10
|
-
|
11
|
-
class EasyModel::TestBase < Test::Unit::TestCase
|
12
|
-
|
13
|
-
def setup
|
14
|
-
I18n.load_path = [File.join(File.dirname(__FILE__), 'ja.yml')]
|
15
|
-
I18n.default_locale = :ja
|
16
|
-
end
|
17
|
-
|
18
|
-
def test_initialize
|
19
|
-
user = User.new(:name => 'taro', :email => 'taro@example.com', :age => 20)
|
20
|
-
assert_equal 'taro', user.name
|
21
|
-
assert_equal 'taro@example.com', user.email
|
22
|
-
assert_equal 20, user.age
|
23
|
-
end
|
24
|
-
|
25
|
-
def test_attributes=
|
26
|
-
user = User.new
|
27
|
-
user.attributes = {:name => 'taro', :email => 'taro@example.com', :age => 20}
|
28
|
-
assert_equal 'taro', user.name
|
29
|
-
assert_equal 'taro@example.com', user.email
|
30
|
-
assert_equal 20, user.age
|
31
|
-
end
|
32
|
-
|
33
|
-
def test_i18n_scope
|
34
|
-
assert_equal :easy_model, User.i18n_scope
|
35
|
-
assert_equal 'ユーザ', User.model_name.human
|
36
|
-
assert_equal '名前', User.human_attribute_name(:name)
|
37
|
-
assert_equal 'メールアドレス', User.human_attribute_name(:email)
|
38
|
-
assert_equal '年齢', User.human_attribute_name(:age)
|
39
|
-
end
|
40
|
-
|
41
|
-
def test_persisted?
|
42
|
-
user = User.new
|
43
|
-
assert_equal false, user.persisted?
|
44
|
-
end
|
45
|
-
|
46
|
-
end
|
47
|
-
|