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.
@@ -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
-