tvdeyen-fleximage 1.1.1 → 1.2.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.
- data/lib/fleximage.rb +2 -3
- data/lib/fleximage/model.rb +4 -4
- data/lib/fleximage/version.rb +3 -0
- data/test/rails_root/app/locales/de.yml +1 -1
- data/test/rails_root/app/locales/en.yml +1 -1
- data/test/rails_root/app/models/photo_custom_error.rb +1 -1
- data/test/test_helper.rb +0 -8
- data/test/unit/basic_model_test.rb +0 -4
- data/test/unit/file_upload_from_local_test.rb +2 -2
- data/test/unit/file_upload_from_url_test.rb +2 -2
- data/test/unit/file_upload_to_db_test.rb +2 -2
- data/test/unit/i18n_messages_test.rb +11 -9
- data/test/unit/minimum_image_size_test.rb +2 -2
- data/tvdeyen-fleximage.gemspec +6 -4
- metadata +21 -13
- data/VERSION +0 -1
- data/lib/dsl_accessor.rb +0 -55
- data/test/rails_root/vendor/plugins/fleximage/init.rb +0 -2
- data/test/unit/dsl_accessor_test.rb +0 -120
data/lib/fleximage.rb
CHANGED
|
@@ -7,7 +7,6 @@ require 'RMagick' unless defined?(Magick)
|
|
|
7
7
|
# Apply a few RMagick patches
|
|
8
8
|
require 'fleximage/rmagick_image_patch'
|
|
9
9
|
|
|
10
|
-
# Load dsl_accessor from lib
|
|
11
10
|
require 'dsl_accessor'
|
|
12
11
|
|
|
13
12
|
# Load Operators
|
|
@@ -53,5 +52,5 @@ ActionController::Base.class_eval{ include Fleximage::AviaryController }
|
|
|
53
52
|
|
|
54
53
|
# Register mime types
|
|
55
54
|
Mime::Type.register "image/jpeg", :jpg, ["image/pjpeg"], ["jpeg"]
|
|
56
|
-
Mime::Type.register "image/gif", :gif
|
|
57
|
-
Mime::Type.register "image/png", :png
|
|
55
|
+
Mime::Type.register "image/gif", :gif if Rails.version.to_f <= 3.1
|
|
56
|
+
Mime::Type.register "image/png", :png if Rails.version.to_f <= 3.1
|
data/lib/fleximage/model.rb
CHANGED
|
@@ -119,7 +119,7 @@ module Fleximage
|
|
|
119
119
|
# Put uploads from different days into different subdirectories
|
|
120
120
|
dsl_accessor :use_creation_date_based_directories, :default => true
|
|
121
121
|
|
|
122
|
-
# The format
|
|
122
|
+
# The format that master images are stored in
|
|
123
123
|
dsl_accessor :image_storage_format, :default => Proc.new { :png }
|
|
124
124
|
|
|
125
125
|
# Require a valid image. Defaults to true. Set to false if its ok to have no image for
|
|
@@ -166,13 +166,13 @@ module Fleximage
|
|
|
166
166
|
# Image too small message
|
|
167
167
|
# Should include {{minimum}}
|
|
168
168
|
def self.image_too_small_message(str = nil)
|
|
169
|
-
fb = "is too small (Minimum: {
|
|
169
|
+
fb = "is too small (Minimum: %{minimum})"
|
|
170
170
|
if str.nil?
|
|
171
171
|
minimum_size = Fleximage::Operator::Base.size_to_xy(validates_image_size).join('x')
|
|
172
172
|
if @image_too_small_message
|
|
173
|
-
@image_too_small_message.gsub("{
|
|
173
|
+
@image_too_small_message.gsub("%{minimum}", minimum_size)
|
|
174
174
|
else
|
|
175
|
-
translate_error_message("image_too_small", fb.gsub("{
|
|
175
|
+
translate_error_message("image_too_small", fb.gsub("%{minimum}", minimum_size), :minimum => minimum_size)
|
|
176
176
|
end
|
|
177
177
|
else
|
|
178
178
|
@image_too_small_message = str
|
|
@@ -5,6 +5,6 @@ class PhotoCustomError < ActiveRecord::Base
|
|
|
5
5
|
validates_image_size '2x2'
|
|
6
6
|
missing_image_message "needs to be attached"
|
|
7
7
|
invalid_image_message "seems to be broken"
|
|
8
|
-
image_too_small_message "must be bigger (min. size: {
|
|
8
|
+
image_too_small_message "must be bigger (min. size: %{minimum})"
|
|
9
9
|
end
|
|
10
10
|
end
|
data/test/test_helper.rb
CHANGED
|
@@ -9,12 +9,7 @@ silence_warnings { RAILS_ENV = ENV['RAILS_ENV'] }
|
|
|
9
9
|
# Run the migrations
|
|
10
10
|
ActiveRecord::Migrator.migrate("#{Rails.root}/db/migrate")
|
|
11
11
|
|
|
12
|
-
# Setup the fixtures path
|
|
13
|
-
Test::Unit::TestCase.fixture_path = File.dirname(__FILE__) + "/fixtures/"
|
|
14
|
-
$LOAD_PATH.unshift(Test::Unit::TestCase.fixture_path)
|
|
15
|
-
|
|
16
12
|
require File.dirname(__FILE__) + '/mock_file'
|
|
17
|
-
require File.dirname(__FILE__) + '/s3_stubs'
|
|
18
13
|
require 'open-uri'
|
|
19
14
|
|
|
20
15
|
unless Magick::QuantumDepth == 16
|
|
@@ -31,9 +26,6 @@ class Test::Unit::TestCase #:nodoc:
|
|
|
31
26
|
Fixtures.create_fixtures(Test::Unit::TestCase.fixture_path, table_names)
|
|
32
27
|
end
|
|
33
28
|
end
|
|
34
|
-
|
|
35
|
-
self.use_transactional_fixtures = true
|
|
36
|
-
self.use_instantiated_fixtures = false
|
|
37
29
|
|
|
38
30
|
def files(name)
|
|
39
31
|
case name
|
|
@@ -10,14 +10,14 @@ class FleximageFileUploadFromLocalTest < Test::Unit::TestCase
|
|
|
10
10
|
p = PhotoBare.new
|
|
11
11
|
assert !p.save, 'Record expected to not be allowed to save'
|
|
12
12
|
assert_equal 1, p.errors.size
|
|
13
|
-
assert_equal 'is required', p.errors.
|
|
13
|
+
assert_equal 'is required', p.errors.messages[:image_file].join()
|
|
14
14
|
end
|
|
15
15
|
|
|
16
16
|
def test_should_require_an_valid_image
|
|
17
17
|
p = PhotoBare.new(:image_file => files(:not_a_photo))
|
|
18
18
|
assert !p.save, 'Record expected to not be allowed to save'
|
|
19
19
|
assert_equal 1, p.errors.size
|
|
20
|
-
assert_equal 'was not a readable image', p.errors.
|
|
20
|
+
assert_equal 'was not a readable image', p.errors.messages[:image_file].join()
|
|
21
21
|
end
|
|
22
22
|
|
|
23
23
|
def test_should_correct_colorspace_and_dpi
|
|
@@ -12,7 +12,7 @@ class FleximageFileUploadFromUrlTest < Test::Unit::TestCase
|
|
|
12
12
|
p = PhotoBare.new(:image_file_url => 'http://www.google.com/')
|
|
13
13
|
assert !p.save, 'Record expected to be invalid after upload via URL'
|
|
14
14
|
assert_equal 1, p.errors.size
|
|
15
|
-
assert_equal 'was not a readable image', p.errors.
|
|
15
|
+
assert_equal 'was not a readable image', p.errors.messages[:image_file_url].join()
|
|
16
16
|
rescue SocketError
|
|
17
17
|
print '!'
|
|
18
18
|
end
|
|
@@ -21,7 +21,7 @@ class FleximageFileUploadFromUrlTest < Test::Unit::TestCase
|
|
|
21
21
|
p = PhotoBare.new(:image_file_url => 'foo')
|
|
22
22
|
assert !p.save, 'Record expected to be invalid after upload via URL'
|
|
23
23
|
assert_equal 1, p.errors.size
|
|
24
|
-
assert_equal 'was not a readable image', p.errors.
|
|
24
|
+
assert_equal 'was not a readable image', p.errors.messages[:image_file_url].join()
|
|
25
25
|
rescue SocketError
|
|
26
26
|
print '!'
|
|
27
27
|
end
|
|
@@ -14,14 +14,14 @@ class FleximageFileUploadToDbTest < Test::Unit::TestCase
|
|
|
14
14
|
p = PhotoDb.new
|
|
15
15
|
assert !p.save, 'Record expected to not be allowed to save'
|
|
16
16
|
assert_equal 1, p.errors.size
|
|
17
|
-
assert_equal 'is required', p.errors.
|
|
17
|
+
assert_equal 'is required', p.errors.messages[:image_file].join()
|
|
18
18
|
end
|
|
19
19
|
|
|
20
20
|
def test_should_require_an_valid_image
|
|
21
21
|
p = PhotoDb.new(:image_file => files(:not_a_photo))
|
|
22
22
|
assert !p.save, 'Record expected to not be allowed to save'
|
|
23
23
|
assert_equal 1, p.errors.size
|
|
24
|
-
assert_equal 'was not a readable image', p.errors.
|
|
24
|
+
assert_equal 'was not a readable image', p.errors.messages[:image_file].join()
|
|
25
25
|
end
|
|
26
26
|
|
|
27
27
|
def test_should_retrieve_a_stored_image
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
|
2
|
+
|
|
1
3
|
require File.dirname(__FILE__) + '/../../test/test_helper'
|
|
2
4
|
|
|
3
5
|
|
|
@@ -5,30 +7,30 @@ class I18nMessagesTest < Test::Unit::TestCase
|
|
|
5
7
|
def test_should_have_default_message
|
|
6
8
|
p = PhotoBare.new
|
|
7
9
|
p.save
|
|
8
|
-
assert_equal "is required", p.errors["image_file"]
|
|
10
|
+
assert_equal "is required", p.errors["image_file"].join()
|
|
9
11
|
|
|
10
12
|
p = PhotoBare.new(:image_file => files(:not_a_photo))
|
|
11
13
|
p.save
|
|
12
|
-
assert_equal "was not a readable image", p.errors["image_file"]
|
|
14
|
+
assert_equal "was not a readable image", p.errors["image_file"].join()
|
|
13
15
|
|
|
14
16
|
p = PhotoBare.new(:image_file => files(:i1x1))
|
|
15
17
|
p.save
|
|
16
|
-
assert_equal "is too small (Minimum: 2x2)", p.errors["image_file"]
|
|
18
|
+
assert_equal "is too small (Minimum: 2x2)", p.errors["image_file"].join()
|
|
17
19
|
end
|
|
18
20
|
|
|
19
21
|
def test_should_have_german_message
|
|
20
22
|
I18n.locale = "de"
|
|
21
23
|
p = PhotoBare.new
|
|
22
24
|
p.save
|
|
23
|
-
assert_equal "ist erforderlich", p.errors["image_file"]
|
|
25
|
+
assert_equal "ist erforderlich", p.errors["image_file"].join()
|
|
24
26
|
|
|
25
27
|
p = PhotoBare.new(:image_file => files(:not_a_photo))
|
|
26
28
|
p.save
|
|
27
|
-
assert_equal "war nicht lesbar", p.errors["image_file"]
|
|
29
|
+
assert_equal "war nicht lesbar", p.errors["image_file"].join()
|
|
28
30
|
|
|
29
31
|
p = PhotoBare.new(:image_file => files(:i1x1))
|
|
30
32
|
p.save
|
|
31
|
-
assert_equal "ist zu klein (Minimalgröße: 2x2)", p.errors["image_file"]
|
|
33
|
+
assert_equal "ist zu klein (Minimalgröße: 2x2)", p.errors["image_file"].join()
|
|
32
34
|
ensure
|
|
33
35
|
I18n.locale = "en"
|
|
34
36
|
end
|
|
@@ -36,14 +38,14 @@ class I18nMessagesTest < Test::Unit::TestCase
|
|
|
36
38
|
def test_should_have_model_specific_message
|
|
37
39
|
p = PhotoCustomError.new
|
|
38
40
|
assert !p.save
|
|
39
|
-
assert_equal "needs to be attached", p.errors["image_file"]
|
|
41
|
+
assert_equal "needs to be attached", p.errors["image_file"].join()
|
|
40
42
|
|
|
41
43
|
p = PhotoCustomError.new(:image_file => files(:not_a_photo))
|
|
42
44
|
p.save
|
|
43
|
-
assert_equal "seems to be broken", p.errors["image_file"]
|
|
45
|
+
assert_equal "seems to be broken", p.errors["image_file"].join()
|
|
44
46
|
|
|
45
47
|
p = PhotoCustomError.new(:image_file => files(:i1x1))
|
|
46
48
|
assert !p.save
|
|
47
|
-
assert_equal "must be bigger (min. size: 2x2)", p.errors["image_file"]
|
|
49
|
+
assert_equal "must be bigger (min. size: 2x2)", p.errors["image_file"].join()
|
|
48
50
|
end
|
|
49
51
|
end
|
|
@@ -26,7 +26,7 @@ class MinimumImageSizeTest < Test::Unit::TestCase
|
|
|
26
26
|
def test_should_not_save_small_image
|
|
27
27
|
p = BigPhoto.new(:image_file => files(:i1x1))
|
|
28
28
|
assert !p.save
|
|
29
|
-
assert p.errors["image_file"].match(/is too small/)
|
|
29
|
+
assert p.errors["image_file"].join().match(/is too small/)
|
|
30
30
|
end
|
|
31
31
|
|
|
32
32
|
def test_should_save_big_image
|
|
@@ -51,6 +51,6 @@ class MinimumImageSizeTest < Test::Unit::TestCase
|
|
|
51
51
|
def test_should_include_minimum_dimensions_in_message
|
|
52
52
|
p = BigPhoto.new(:image_file => files(:i1x1))
|
|
53
53
|
p.save
|
|
54
|
-
assert_equal "is too small (Minimum: 80x60)", p.errors["image_file"]
|
|
54
|
+
assert_equal "is too small (Minimum: 80x60)", p.errors["image_file"].join()
|
|
55
55
|
end
|
|
56
56
|
end
|
data/tvdeyen-fleximage.gemspec
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
|
2
|
+
require File.join(File.dirname(__FILE__), 'lib/fleximage/version')
|
|
2
3
|
|
|
3
4
|
Gem::Specification.new do |s|
|
|
4
5
|
s.name = "tvdeyen-fleximage"
|
|
5
|
-
s.version =
|
|
6
|
+
s.version = Fleximage::VERSION
|
|
6
7
|
|
|
7
8
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
|
8
|
-
s.authors =
|
|
9
|
-
s.date = "2012-
|
|
9
|
+
s.authors = `git log --format='%aN' | sort -u`.split("\n")
|
|
10
|
+
s.date = "2012-04-06"
|
|
10
11
|
s.description = "Fleximage is a Rails plugin that tries to make image uploading and rendering\nsuper easy.\n"
|
|
11
12
|
s.email = "tvdeyen@gmail.com"
|
|
12
13
|
s.extra_rdoc_files = [
|
|
@@ -19,6 +20,7 @@ Gem::Specification.new do |s|
|
|
|
19
20
|
s.rubygems_version = "1.8.10"
|
|
20
21
|
s.summary = "Rails plugin for uploading images as resources, with support for resizing, text stamping, and other special effects."
|
|
21
22
|
|
|
22
|
-
s.add_runtime_dependency(%q<rmagick>, [">=
|
|
23
|
+
s.add_runtime_dependency(%q<rmagick>, [">= 2"])
|
|
24
|
+
s.add_runtime_dependency(%q<dsl_accessor>, ["~> 0.4.0"])
|
|
23
25
|
s.add_development_dependency(%q<rails>, ["~> 3.2.1"])
|
|
24
26
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: tvdeyen-fleximage
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.2.0
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -32,22 +32,33 @@ authors:
|
|
|
32
32
|
autorequire:
|
|
33
33
|
bindir: bin
|
|
34
34
|
cert_chain: []
|
|
35
|
-
date: 2012-
|
|
35
|
+
date: 2012-04-06 00:00:00.000000000 Z
|
|
36
36
|
dependencies:
|
|
37
37
|
- !ruby/object:Gem::Dependency
|
|
38
38
|
name: rmagick
|
|
39
|
-
requirement: &
|
|
39
|
+
requirement: &70108112024400 !ruby/object:Gem::Requirement
|
|
40
40
|
none: false
|
|
41
41
|
requirements:
|
|
42
42
|
- - ! '>='
|
|
43
43
|
- !ruby/object:Gem::Version
|
|
44
|
-
version: '
|
|
44
|
+
version: '2'
|
|
45
45
|
type: :runtime
|
|
46
46
|
prerelease: false
|
|
47
|
-
version_requirements: *
|
|
47
|
+
version_requirements: *70108112024400
|
|
48
|
+
- !ruby/object:Gem::Dependency
|
|
49
|
+
name: dsl_accessor
|
|
50
|
+
requirement: &70108112023660 !ruby/object:Gem::Requirement
|
|
51
|
+
none: false
|
|
52
|
+
requirements:
|
|
53
|
+
- - ~>
|
|
54
|
+
- !ruby/object:Gem::Version
|
|
55
|
+
version: 0.4.0
|
|
56
|
+
type: :runtime
|
|
57
|
+
prerelease: false
|
|
58
|
+
version_requirements: *70108112023660
|
|
48
59
|
- !ruby/object:Gem::Dependency
|
|
49
60
|
name: rails
|
|
50
|
-
requirement: &
|
|
61
|
+
requirement: &70108112022880 !ruby/object:Gem::Requirement
|
|
51
62
|
none: false
|
|
52
63
|
requirements:
|
|
53
64
|
- - ~>
|
|
@@ -55,7 +66,7 @@ dependencies:
|
|
|
55
66
|
version: 3.2.1
|
|
56
67
|
type: :development
|
|
57
68
|
prerelease: false
|
|
58
|
-
version_requirements: *
|
|
69
|
+
version_requirements: *70108112022880
|
|
59
70
|
description: ! 'Fleximage is a Rails plugin that tries to make image uploading and
|
|
60
71
|
rendering
|
|
61
72
|
|
|
@@ -74,10 +85,8 @@ files:
|
|
|
74
85
|
- MIT-LICENSE
|
|
75
86
|
- README.rdoc
|
|
76
87
|
- Rakefile
|
|
77
|
-
- VERSION
|
|
78
88
|
- autotest.rb
|
|
79
89
|
- init.rb
|
|
80
|
-
- lib/dsl_accessor.rb
|
|
81
90
|
- lib/fleximage.rb
|
|
82
91
|
- lib/fleximage/aviary_controller.rb
|
|
83
92
|
- lib/fleximage/blank.rb
|
|
@@ -97,6 +106,7 @@ files:
|
|
|
97
106
|
- lib/fleximage/operator/unsharp_mask.rb
|
|
98
107
|
- lib/fleximage/rails3_view.rb
|
|
99
108
|
- lib/fleximage/rmagick_image_patch.rb
|
|
109
|
+
- lib/fleximage/version.rb
|
|
100
110
|
- lib/fleximage/view.rb
|
|
101
111
|
- lib/tasks/fleximage_tasks.rake
|
|
102
112
|
- test/fixtures/100x1.jpg
|
|
@@ -194,13 +204,11 @@ files:
|
|
|
194
204
|
- test/rails_root/public/robots.txt
|
|
195
205
|
- test/rails_root/public/stylesheets/scaffold.css
|
|
196
206
|
- test/rails_root/script/rails
|
|
197
|
-
- test/rails_root/vendor/plugins/fleximage/init.rb
|
|
198
207
|
- test/test_helper.rb
|
|
199
208
|
- test/unit/abstract_test.rb
|
|
200
209
|
- test/unit/basic_model_test.rb
|
|
201
210
|
- test/unit/blank_test.rb
|
|
202
211
|
- test/unit/default_image_path_option_test.rb
|
|
203
|
-
- test/unit/dsl_accessor_test.rb
|
|
204
212
|
- test/unit/file_upload_from_local_test.rb
|
|
205
213
|
- test/unit/file_upload_from_strings_test.rb
|
|
206
214
|
- test/unit/file_upload_from_url_test.rb
|
|
@@ -233,7 +241,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
233
241
|
version: '0'
|
|
234
242
|
segments:
|
|
235
243
|
- 0
|
|
236
|
-
hash:
|
|
244
|
+
hash: -1294711722270480675
|
|
237
245
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
238
246
|
none: false
|
|
239
247
|
requirements:
|
|
@@ -242,7 +250,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
242
250
|
version: '0'
|
|
243
251
|
requirements: []
|
|
244
252
|
rubyforge_project:
|
|
245
|
-
rubygems_version: 1.8.
|
|
253
|
+
rubygems_version: 1.8.15
|
|
246
254
|
signing_key:
|
|
247
255
|
specification_version: 3
|
|
248
256
|
summary: Rails plugin for uploading images as resources, with support for resizing,
|
data/VERSION
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
1.1.0
|
data/lib/dsl_accessor.rb
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
require 'active_support' unless defined?(ActiveSupport)
|
|
2
|
-
|
|
3
|
-
class Class
|
|
4
|
-
def dsl_accessor(name, options = {})
|
|
5
|
-
raise TypeError, "DSL Error: options should be a hash. but got `#{options.class}'" unless options.is_a?(Hash)
|
|
6
|
-
writer = options[:writer] || options[:setter]
|
|
7
|
-
writer =
|
|
8
|
-
case writer
|
|
9
|
-
when NilClass then Proc.new{|value| value}
|
|
10
|
-
when Symbol then Proc.new{|value| __send__(writer, value)}
|
|
11
|
-
when Proc then writer
|
|
12
|
-
else raise TypeError, "DSL Error: writer should be a symbol or proc. but got `#{options[:writer].class}'"
|
|
13
|
-
end
|
|
14
|
-
class_attribute :"#{name}_writer"
|
|
15
|
-
class_attribute :"#{name}_value"
|
|
16
|
-
self.send(:"#{name}_writer=", writer)
|
|
17
|
-
|
|
18
|
-
default =
|
|
19
|
-
case options[:default]
|
|
20
|
-
when NilClass then nil
|
|
21
|
-
when [] then Proc.new{[]}
|
|
22
|
-
when {} then Proc.new{{}}
|
|
23
|
-
when Symbol then Proc.new{__send__(options[:default])}
|
|
24
|
-
when Proc then options[:default]
|
|
25
|
-
else Proc.new{options[:default]}
|
|
26
|
-
end
|
|
27
|
-
class_attribute :"#{name}_default"
|
|
28
|
-
self.send(:"#{name}_default=", default)
|
|
29
|
-
|
|
30
|
-
self.class.class_eval do
|
|
31
|
-
define_method("#{name}=") do |value|
|
|
32
|
-
writer = self.send(:"#{name}_writer")
|
|
33
|
-
value = writer.call(value) if writer
|
|
34
|
-
self.send(:"#{name}_value=", value)
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
define_method(name) do |*values|
|
|
38
|
-
if values.empty?
|
|
39
|
-
# getter method
|
|
40
|
-
key = :"#{name}"
|
|
41
|
-
if !self.respond_to?(key)
|
|
42
|
-
default = self.send(:"#{name}_default")
|
|
43
|
-
value = default ? default.call(self) : nil
|
|
44
|
-
self.send("#{name}_value=", value)
|
|
45
|
-
end
|
|
46
|
-
self.send("#{key}_value")
|
|
47
|
-
else
|
|
48
|
-
# setter method
|
|
49
|
-
__send__("#{name}_value=", *values)
|
|
50
|
-
end
|
|
51
|
-
end
|
|
52
|
-
end
|
|
53
|
-
end
|
|
54
|
-
end
|
|
55
|
-
|
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
require File.dirname(__FILE__) + '/../test_helper.rb'
|
|
2
|
-
|
|
3
|
-
class DslAccessorTest < Test::Unit::TestCase
|
|
4
|
-
class CoolActiveRecord
|
|
5
|
-
dsl_accessor :primary_key
|
|
6
|
-
dsl_accessor :table_name
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
class Item < CoolActiveRecord
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
class LegacyItem < CoolActiveRecord
|
|
13
|
-
primary_key :itcd
|
|
14
|
-
table_name :item
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
def test_accessor_without_initialization
|
|
19
|
-
assert_equal nil, Item.primary_key
|
|
20
|
-
assert_equal nil, Item.table_name
|
|
21
|
-
|
|
22
|
-
Item.primary_key :itcd
|
|
23
|
-
Item.table_name :item
|
|
24
|
-
|
|
25
|
-
assert_equal :itcd, Item.primary_key
|
|
26
|
-
assert_equal :item, Item.table_name
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
def test_accessor_with_initialization
|
|
30
|
-
assert_equal :itcd, LegacyItem.primary_key
|
|
31
|
-
assert_equal :item, LegacyItem.table_name
|
|
32
|
-
|
|
33
|
-
LegacyItem.primary_key :item_id
|
|
34
|
-
LegacyItem.table_name :item_table
|
|
35
|
-
|
|
36
|
-
assert_equal :item_id, LegacyItem.primary_key
|
|
37
|
-
assert_equal :item_table, LegacyItem.table_name
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
class DslDefaultAccessorTest < Test::Unit::TestCase
|
|
43
|
-
|
|
44
|
-
class CoolActiveRecord
|
|
45
|
-
dsl_accessor :primary_key, :default=>"id"
|
|
46
|
-
dsl_accessor :table_name, :default=>proc{|klass| klass.name.demodulize.underscore.pluralize}
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
class Item < CoolActiveRecord
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
class User < CoolActiveRecord
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
class Folder
|
|
56
|
-
dsl_accessor :array_folder, :default=>[]
|
|
57
|
-
dsl_accessor :hash_folder, :default=>{}
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
class SubFolder < Folder
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
def test_default_accessor_with_string
|
|
64
|
-
assert_equal "id", Item.primary_key
|
|
65
|
-
assert_equal "id", User.primary_key
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
def test_default_accessor_with_proc
|
|
69
|
-
assert_equal "items", Item.table_name
|
|
70
|
-
assert_equal "users", User.table_name
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
def test_default_accessor_should_duplicate_empty_array_or_hash
|
|
74
|
-
Folder.array_folder << 1
|
|
75
|
-
Folder.hash_folder[:name] = "maiha"
|
|
76
|
-
|
|
77
|
-
assert_equal([1], Folder.array_folder)
|
|
78
|
-
assert_equal({:name=>"maiha"}, Folder.hash_folder)
|
|
79
|
-
|
|
80
|
-
assert_equal([], SubFolder.array_folder)
|
|
81
|
-
assert_equal({}, SubFolder.hash_folder)
|
|
82
|
-
end
|
|
83
|
-
end
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
class DslOverwritenDefaultAccessorTest < Test::Unit::TestCase
|
|
87
|
-
class CoolActiveRecord
|
|
88
|
-
dsl_accessor :primary_key, :default=>"id"
|
|
89
|
-
dsl_accessor :table_name, :default=>proc{|klass| klass.name.demodulize.underscore.pluralize}
|
|
90
|
-
end
|
|
91
|
-
|
|
92
|
-
class Item < CoolActiveRecord
|
|
93
|
-
primary_key :item_id
|
|
94
|
-
table_name :item_table
|
|
95
|
-
end
|
|
96
|
-
|
|
97
|
-
def test_overwrite_default_accessor
|
|
98
|
-
assert_equal :item_id, Item.primary_key
|
|
99
|
-
assert_equal :item_table, Item.table_name
|
|
100
|
-
end
|
|
101
|
-
end
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
class DslWriterAccessorTest < Test::Unit::TestCase
|
|
105
|
-
class Item
|
|
106
|
-
dsl_accessor :primary_key, :writer=>proc{|value| value.to_s}
|
|
107
|
-
end
|
|
108
|
-
|
|
109
|
-
def test_string_writer
|
|
110
|
-
assert_equal "", Item.primary_key
|
|
111
|
-
|
|
112
|
-
Item.primary_key :id
|
|
113
|
-
assert_equal "id", Item.primary_key
|
|
114
|
-
|
|
115
|
-
Item.primary_key "id"
|
|
116
|
-
assert_equal "id", Item.primary_key
|
|
117
|
-
end
|
|
118
|
-
end
|
|
119
|
-
|
|
120
|
-
|