easy_model 1.0.5 → 2.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/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
|
-
|