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.
@@ -2,11 +2,89 @@
2
2
 
3
3
  require File.join(File.dirname(__FILE__), '..', 'helper')
4
4
 
5
- class EasyModel::TestColumn < Test::Unit::TestCase
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 = Class.new
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 = Class.new
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 = Class.new
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 = Class.new
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 = Class.new
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 = Class.new
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 = Class.new
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 = Class.new
140
- model.send(:include, EasyModel::Column)
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 = Class.new
160
- model.send(:include, EasyModel::Column)
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 = Class.new
180
- model.send(:include, EasyModel::Column)
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 = Class.new
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 = Class.new
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 = Class.new
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
@@ -23,5 +23,11 @@ class EasyModel::TestSearchForm < Test::Unit::TestCase
23
23
  assert_equal 'to_xml called', object.to_xml
24
24
  end
25
25
 
26
+ def test_scoped
27
+ assert_raise(NotImplementedError) do
28
+ Class.new(EasyModel::SearchForm).new.scoped
29
+ end
30
+ end
31
+
26
32
  end
27
33
 
data/test/helper.rb CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  if ENV['COVERAGE']
4
4
  require 'simplecov'
5
- SimpleCov.start do
5
+ SimpleCov.start('rails') do
6
6
  coverage_dir File.join('coverage')
7
7
  end
8
8
  end
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: 1.0.5
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-12 00:00:00.000000000 Z
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: '3.0'
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: '3.0'
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: '3.0'
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: '3.0'
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/test_base.rb
117
- - test/easy_model/test_column.rb
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
-