simple_enum 1.6.9 → 2.3.2
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/.gitignore +1 -0
- data/Gemfile +9 -6
- data/LICENSE +1 -1
- data/README.md +331 -0
- data/Rakefile +9 -17
- data/lib/simple_enum/accessors/accessor.rb +61 -0
- data/lib/simple_enum/accessors/ignore_accessor.rb +11 -0
- data/lib/simple_enum/accessors/whiny_accessor.rb +12 -0
- data/lib/simple_enum/accessors.rb +28 -0
- data/lib/simple_enum/attribute.rb +109 -0
- data/lib/simple_enum/enum.rb +58 -0
- data/lib/simple_enum/hasher.rb +26 -0
- data/lib/simple_enum/mongoid.rb +16 -18
- data/lib/simple_enum/railtie.rb +17 -0
- data/lib/simple_enum/translation.rb +21 -0
- data/lib/simple_enum/version.rb +2 -2
- data/lib/simple_enum/view_helpers.rb +55 -0
- data/lib/simple_enum.rb +22 -278
- data/simple_enum.gemspec +9 -9
- data/spec/simple_enum/accessors_spec.rb +298 -0
- data/spec/simple_enum/attribute_spec.rb +272 -0
- data/spec/simple_enum/enum_spec.rb +136 -0
- data/spec/simple_enum/hasher_spec.rb +63 -0
- data/spec/simple_enum/mongoid_spec.rb +44 -0
- data/spec/simple_enum/translation_spec.rb +70 -0
- data/spec/simple_enum/view_helpers_spec.rb +71 -0
- data/spec/spec_helper.rb +27 -0
- data/spec/support/active_record_support.rb +27 -0
- data/spec/support/i18n_support.rb +12 -0
- data/spec/support/model_support.rb +47 -0
- data/spec/support/mongoid_support.rb +47 -0
- metadata +55 -57
- data/README.rdoc +0 -293
- data/lib/simple_enum/enum_hash.rb +0 -64
- data/lib/simple_enum/validation.rb +0 -58
- data/locales/en.yml +0 -10
- data/test/array_conversions_test.rb +0 -21
- data/test/class_methods_test.rb +0 -114
- data/test/dirty_attributes_test.rb +0 -37
- data/test/enum_hash_test.rb +0 -73
- data/test/finders_test.rb +0 -45
- data/test/locales.yml +0 -25
- data/test/mongoid_test.rb +0 -66
- data/test/object_backed_test.rb +0 -61
- data/test/orm/active_record.rb +0 -114
- data/test/orm/common.rb +0 -23
- data/test/orm/mongoid.rb +0 -114
- data/test/poro_test.rb +0 -20
- data/test/prefixes_test.rb +0 -36
- data/test/simple_enum_test.rb +0 -314
- data/test/test_helper.rb +0 -40
- data/test/without_shortcuts_test.rb +0 -39
data/test/finders_test.rb
DELETED
@@ -1,45 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class FindersTest < MiniTest::Unit::TestCase
|
4
|
-
def setup
|
5
|
-
reload_db
|
6
|
-
end
|
7
|
-
|
8
|
-
def test_find_all_female_genders
|
9
|
-
girls = Dummy.where(:gender_cd => Dummy.genders[:female]).sort { |a,b| a.name <=> b.name }
|
10
|
-
|
11
|
-
assert_equal 2, girls.length
|
12
|
-
|
13
|
-
assert_equal 'Anna', girls.first.name
|
14
|
-
assert_equal :female, girls.first.gender
|
15
|
-
assert_equal true, girls.first.female?
|
16
|
-
end
|
17
|
-
|
18
|
-
def test_find_all_gamma_words
|
19
|
-
gammas = Dummy.where(:word_cd => Dummy.words(:gamma)).all
|
20
|
-
|
21
|
-
assert_equal 1, gammas.length
|
22
|
-
assert_equal 'Chris', gammas.first.name
|
23
|
-
assert_equal true, gammas.first.male?
|
24
|
-
assert_equal 'gamma', gammas.first.word_cd
|
25
|
-
assert_equal :gamma, gammas.first.word
|
26
|
-
end
|
27
|
-
|
28
|
-
def test_find_all_with_attribute_didum_equal_to_foo
|
29
|
-
skip('Not available in Mongoid') if mongoid?
|
30
|
-
|
31
|
-
foos = Dummy.where('other = ?', Dummy.didums(:foo)).all
|
32
|
-
|
33
|
-
assert_equal 1, foos.length
|
34
|
-
assert_equal false, foos.first.foobar?
|
35
|
-
end
|
36
|
-
|
37
|
-
def test_find_using_insecure_inline_string_conditions
|
38
|
-
skip('Not available in Mongoid') if mongoid?
|
39
|
-
|
40
|
-
men = Dummy.where("gender_cd = #{Dummy.genders(:male)}").all
|
41
|
-
|
42
|
-
assert_equal 1, men.length
|
43
|
-
assert_equal true, men.first.male?
|
44
|
-
end
|
45
|
-
end
|
data/test/locales.yml
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
# english translation
|
2
|
-
en:
|
3
|
-
activerecord:
|
4
|
-
errors:
|
5
|
-
models:
|
6
|
-
validated_computer:
|
7
|
-
attributes:
|
8
|
-
operating_system:
|
9
|
-
invalid_enum: y u no os?
|
10
|
-
mongoid:
|
11
|
-
errors:
|
12
|
-
models:
|
13
|
-
validated_computer:
|
14
|
-
attributes:
|
15
|
-
operating_system:
|
16
|
-
invalid_enum: y u no os?
|
17
|
-
|
18
|
-
enums:
|
19
|
-
dummy:
|
20
|
-
genders:
|
21
|
-
female: Girl
|
22
|
-
didums:
|
23
|
-
foo:
|
24
|
-
one: Foo
|
25
|
-
other: Foos
|
data/test/mongoid_test.rb
DELETED
@@ -1,66 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class MongoidTest < MiniTest::Unit::TestCase
|
4
|
-
def setup
|
5
|
-
@default_options = SimpleEnum.default_options
|
6
|
-
reload_db
|
7
|
-
end
|
8
|
-
|
9
|
-
def teardown
|
10
|
-
SimpleEnum.default_options.clear.update(@default_options)
|
11
|
-
end
|
12
|
-
|
13
|
-
def test_creates_a_field_per_default
|
14
|
-
skip('Only available in mongoid') unless mongoid?
|
15
|
-
klass = anonymous_dummy do
|
16
|
-
as_enum :gender, [:male, :female]
|
17
|
-
end
|
18
|
-
refute_nil klass.new.fields['gender_cd']
|
19
|
-
end
|
20
|
-
|
21
|
-
def test_passing_custom_field_options
|
22
|
-
skip('Only available in mongoid') unless mongoid?
|
23
|
-
klass = anonymous_dummy do
|
24
|
-
field :verify, :type => Integer
|
25
|
-
as_enum :gender, [:male, :female], :field => { :type => Integer, :default => 1 }
|
26
|
-
end
|
27
|
-
|
28
|
-
gender_field = klass.new.fields['gender_cd']
|
29
|
-
refute_nil gender_field
|
30
|
-
assert_equal 1, gender_field.default
|
31
|
-
assert_equal klass.fields['verify'].class, gender_field.class
|
32
|
-
assert_equal :female, klass.new.gender
|
33
|
-
end
|
34
|
-
|
35
|
-
def test_skip_field_creation_if_field_false
|
36
|
-
skip('Only available in mongoid') unless mongoid?
|
37
|
-
klass = anonymous_dummy do
|
38
|
-
as_enum :gender, [:male, :female], :field => false
|
39
|
-
end
|
40
|
-
|
41
|
-
assert_nil klass.new.fields['gender_cd']
|
42
|
-
end
|
43
|
-
|
44
|
-
def test_default_field_options
|
45
|
-
skip('Only available in mongoid') unless mongoid?
|
46
|
-
SimpleEnum.default_options[:field] = { :type => String }
|
47
|
-
klass = anonymous_dummy do
|
48
|
-
as_enum :gender, [:male, :female]
|
49
|
-
end
|
50
|
-
|
51
|
-
refute_nil klass.new.fields['gender_cd']
|
52
|
-
assert_equal String, klass.new.fields['gender_cd'].options[:type]
|
53
|
-
end
|
54
|
-
|
55
|
-
def test_default_field_options_are_merged_recursivly
|
56
|
-
skip('Only available in mongoid') unless mongoid?
|
57
|
-
SimpleEnum.default_options[:field] = { :type => String }
|
58
|
-
klass = anonymous_dummy do
|
59
|
-
as_enum :gender, [:male, :female], :field => { :default => "0" }
|
60
|
-
end
|
61
|
-
|
62
|
-
refute_nil klass.new.fields['gender_cd']
|
63
|
-
assert_equal String, klass.new.fields['gender_cd'].options[:type]
|
64
|
-
assert_equal "0", klass.new.fields['gender_cd'].options[:default]
|
65
|
-
end
|
66
|
-
end
|
data/test/object_backed_test.rb
DELETED
@@ -1,61 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class ObjectBackedTest < MiniTest::Unit::TestCase
|
4
|
-
def setup
|
5
|
-
reload_db :genders => true
|
6
|
-
end
|
7
|
-
|
8
|
-
def test_how_working_with_object_backed_columns_work
|
9
|
-
# simple object -> not db backed instance
|
10
|
-
simple_obj = Class.new do
|
11
|
-
attr_accessor :name
|
12
|
-
def initialize(name)
|
13
|
-
@name = name
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
# create new class by using simple_obj
|
18
|
-
with_object = anonymous_dummy do
|
19
|
-
as_enum :gender, { simple_obj.new('Male') => 0, simple_obj.new('Female') => 1 }
|
20
|
-
end
|
21
|
-
|
22
|
-
d = with_object.where(:name => 'Anna').first
|
23
|
-
|
24
|
-
assert_same simple_obj, d.gender.class
|
25
|
-
assert_equal 'Female', d.gender.name
|
26
|
-
assert_same true, d.female?
|
27
|
-
assert_same false, d.male?
|
28
|
-
assert_same 0, with_object.male
|
29
|
-
end
|
30
|
-
|
31
|
-
def test_db_backed_objects
|
32
|
-
# using method described in 'Advanced Rails Recipes - Recipe 61: Look Up Constant Data Efficiently'
|
33
|
-
# "cache" as defined in ARR#61
|
34
|
-
genders = Gender.all
|
35
|
-
# works without mapping... .map { |g| [g, g.id] }
|
36
|
-
|
37
|
-
# use cached array of values
|
38
|
-
with_db_obj = anonymous_dummy do
|
39
|
-
as_enum :gender, genders
|
40
|
-
end
|
41
|
-
|
42
|
-
d = with_db_obj.where(:name => 'Bella').first
|
43
|
-
|
44
|
-
assert_respond_to with_db_obj, :female
|
45
|
-
assert_respond_to with_db_obj, :male
|
46
|
-
assert_equal 0, with_db_obj.male
|
47
|
-
end
|
48
|
-
|
49
|
-
def test_that_accesing_keys_and_values_of_each_enumeration_value_works_as_expected
|
50
|
-
|
51
|
-
with_db_obj = anonymous_dummy do
|
52
|
-
as_enum :gender, Gender.all.to_a
|
53
|
-
end
|
54
|
-
|
55
|
-
assert_same 0, with_db_obj.male
|
56
|
-
assert_equal @male.id, with_db_obj.male(true).id
|
57
|
-
|
58
|
-
assert_same :male, Dummy.male(true)
|
59
|
-
assert_same 0, Dummy.male
|
60
|
-
end
|
61
|
-
end
|
data/test/orm/active_record.rb
DELETED
@@ -1,114 +0,0 @@
|
|
1
|
-
require 'active_record/version'
|
2
|
-
|
3
|
-
def orm_version
|
4
|
-
ActiveRecord::VERSION::STRING
|
5
|
-
end
|
6
|
-
|
7
|
-
def ar32?
|
8
|
-
ActiveRecord::VERSION::MAJOR >= 3 && ActiveRecord::VERSION::MINOR >= 2
|
9
|
-
end
|
10
|
-
|
11
|
-
def setup_db
|
12
|
-
# create database connection (in memory db!)
|
13
|
-
ActiveRecord::Base.establish_connection({
|
14
|
-
:adapter => RUBY_PLATFORM =~ /java/ ? 'jdbcsqlite3' : 'sqlite3',
|
15
|
-
:database => ':memory:'})
|
16
|
-
|
17
|
-
# Fix visitor, for JRuby
|
18
|
-
if RUBY_PLATFORM =~ /java/ && ar32?
|
19
|
-
ActiveRecord::ConnectionAdapters::SQLiteAdapter.send(:define_method, :visitor) do
|
20
|
-
@visitor ||= Arel::Visitors::SQLite.new(self)
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
# Reload database
|
26
|
-
def reload_db(options = {})
|
27
|
-
ActiveRecord::Base.connection.create_table :dummies, :force => true do |t|
|
28
|
-
t.column :name, :string
|
29
|
-
t.column :gender_cd, :integer
|
30
|
-
t.column :word_cd, :string, :limit => 5
|
31
|
-
t.column :role_cd, :string
|
32
|
-
t.column :other, :integer
|
33
|
-
t.column :numeric_cd, :string
|
34
|
-
t.column :nilish_cd, :string
|
35
|
-
end
|
36
|
-
|
37
|
-
# Create ref-data table and fill with records
|
38
|
-
ActiveRecord::Base.connection.create_table :genders, :force => true do |t|
|
39
|
-
t.column :name, :string
|
40
|
-
end
|
41
|
-
|
42
|
-
# Validations
|
43
|
-
ActiveRecord::Base.connection.create_table :computers, :force => true do |t|
|
44
|
-
t.column :name, :string
|
45
|
-
t.column :operating_system_cd, :integer
|
46
|
-
t.column :manufacturer_cd, :integer
|
47
|
-
end
|
48
|
-
|
49
|
-
fill_db(options)
|
50
|
-
end
|
51
|
-
|
52
|
-
# Models
|
53
|
-
def anonymous_dummy(&block)
|
54
|
-
Class.new(ActiveRecord::Base) do
|
55
|
-
ar32? ? self.table_name = 'dummies' : set_table_name('dummies')
|
56
|
-
instance_eval &block
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
def extend_computer(current_i18n_name = "Computer", &block)
|
61
|
-
Class.new(Computer) do
|
62
|
-
ar32? ? self.table_name = 'computers' : set_table_name('computers')
|
63
|
-
instance_eval &block
|
64
|
-
instance_eval <<-RUBY
|
65
|
-
def self.model_name; MockName.mock!(#{current_i18n_name.inspect}) end
|
66
|
-
RUBY
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
def extend_dummy(current_i18n_name = "Dummy", &block)
|
71
|
-
Class.new(Dummy) do
|
72
|
-
ar32? ? self.table_name = 'dummies' : set_table_name('dummies')
|
73
|
-
instance_eval &block
|
74
|
-
instance_eval <<-RUBY
|
75
|
-
def self.model_name; MockName.mock!(#{current_i18n_name.inspect}) end
|
76
|
-
RUBY
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
|
-
def named_dummy(class_name, &block)
|
81
|
-
begin
|
82
|
-
return class_name.constantize
|
83
|
-
rescue NameError
|
84
|
-
klass = Object.const_set(class_name, Class.new(ActiveRecord::Base))
|
85
|
-
klass.module_eval do
|
86
|
-
ar32? ? self.table_name = 'dummies' : set_table_name('dummies')
|
87
|
-
instance_eval &block
|
88
|
-
end
|
89
|
-
klass
|
90
|
-
end
|
91
|
-
end
|
92
|
-
|
93
|
-
class Dummy < ActiveRecord::Base
|
94
|
-
as_enum :gender, [:male, :female]
|
95
|
-
as_enum :word, { :alpha => 'alpha', :beta => 'beta', :gamma => 'gamma'}
|
96
|
-
as_enum :didum, [ :foo, :bar, :foobar ], :column => 'other'
|
97
|
-
as_enum :role, [:admin, :member, :anon], :strings => true
|
98
|
-
as_enum :numeric, [:"100", :"3.14"], :strings => true
|
99
|
-
as_enum :nilish, [:nil], :strings => true
|
100
|
-
end
|
101
|
-
|
102
|
-
class Gender < ActiveRecord::Base
|
103
|
-
end
|
104
|
-
|
105
|
-
class Computer < ActiveRecord::Base
|
106
|
-
as_enum :manufacturer, [:dell, :compaq, :apple]
|
107
|
-
as_enum :operating_system, [:windows, :osx, :linux, :bsd]
|
108
|
-
end
|
109
|
-
|
110
|
-
# Used to test STI stuff
|
111
|
-
class SpecificDummy < Dummy
|
112
|
-
ar32? ? self.table_name = 'dummies' : set_table_name('dummies')
|
113
|
-
end
|
114
|
-
|
data/test/orm/common.rb
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
class MockName < String
|
2
|
-
def name; to_s end
|
3
|
-
|
4
|
-
def self.mock!(name)
|
5
|
-
ActiveModel::Name.new(MockName.new(name))
|
6
|
-
end
|
7
|
-
end
|
8
|
-
|
9
|
-
def fill_db(options={})
|
10
|
-
options = { :fill => true, :genders => false }.merge(options)
|
11
|
-
|
12
|
-
if options[:fill]
|
13
|
-
# fill db with some rows
|
14
|
-
Dummy.create({ :name => 'Anna', :gender_cd => 1, :word_cd => 'alpha', :other => 0})
|
15
|
-
Dummy.create({ :name => 'Bella', :gender_cd => 1, :word_cd => 'beta', :other => 1})
|
16
|
-
Dummy.create({ :name => 'Chris', :gender_cd => 0, :word_cd => 'gamma', :other => 2})
|
17
|
-
end
|
18
|
-
|
19
|
-
if options[:genders]
|
20
|
-
@male = Gender.create!({ :name => 'male' })
|
21
|
-
@female = Gender.create!({ :name => 'female' })
|
22
|
-
end
|
23
|
-
end
|
data/test/orm/mongoid.rb
DELETED
@@ -1,114 +0,0 @@
|
|
1
|
-
require 'mongoid/version'
|
2
|
-
require 'simple_enum/mongoid'
|
3
|
-
|
4
|
-
def orm_version
|
5
|
-
Mongoid::VERSION
|
6
|
-
end
|
7
|
-
|
8
|
-
def setup_db
|
9
|
-
# create database connection
|
10
|
-
Mongoid.configure do |config|
|
11
|
-
config.master = Mongo::Connection.new('localhost').db("simple-enum-test-suite")
|
12
|
-
config.use_utc = true
|
13
|
-
config.include_root_in_json = true
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
|
18
|
-
# Reload database
|
19
|
-
def reload_db(options = {})
|
20
|
-
|
21
|
-
# clear collections except system
|
22
|
-
Mongoid.master.collections.select do |collection|
|
23
|
-
collection.name !~ /system/
|
24
|
-
end.each(&:drop)
|
25
|
-
|
26
|
-
fill_db(options)
|
27
|
-
end
|
28
|
-
|
29
|
-
# models
|
30
|
-
def anonymous_dummy(&block)
|
31
|
-
Class.new do
|
32
|
-
include Mongoid::Document
|
33
|
-
include SimpleEnum::Mongoid
|
34
|
-
self.collection_name = 'dummies'
|
35
|
-
instance_eval &block
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
def extend_computer(current_i18n_name = "Computer", &block)
|
40
|
-
Class.new(Computer) do
|
41
|
-
self.collection_name = 'computers'
|
42
|
-
instance_eval &block
|
43
|
-
instance_eval <<-RUBY
|
44
|
-
def self.model_name; MockName.mock!(#{current_i18n_name.inspect}) end
|
45
|
-
RUBY
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
def extend_dummy(current_i18n_name = "Dummy", &block)
|
50
|
-
Class.new(Dummy) do
|
51
|
-
self.collection_name = 'dummies'
|
52
|
-
instance_eval &block
|
53
|
-
instance_eval <<-RUBY
|
54
|
-
def self.model_name; MockName.mock!(#{current_i18n_name.inspect}) end
|
55
|
-
RUBY
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
def named_dummy(class_name, &block)
|
60
|
-
begin
|
61
|
-
return class_name.constantize
|
62
|
-
rescue NameError
|
63
|
-
klass = Object.const_set(class_name, Class.new)
|
64
|
-
klass.module_eval do
|
65
|
-
include Mongoid::Document
|
66
|
-
include SimpleEnum::Mongoid
|
67
|
-
|
68
|
-
self.collection_name = 'dummies'
|
69
|
-
instance_eval &block
|
70
|
-
end
|
71
|
-
|
72
|
-
klass
|
73
|
-
end
|
74
|
-
|
75
|
-
end
|
76
|
-
|
77
|
-
class Dummy
|
78
|
-
include Mongoid::Document
|
79
|
-
include SimpleEnum::Mongoid
|
80
|
-
|
81
|
-
as_enum :gender, [:male, :female]
|
82
|
-
as_enum :word, { :alpha => 'alpha', :beta => 'beta', :gamma => 'gamma'}
|
83
|
-
as_enum :didum, [ :foo, :bar, :foobar ], :column => 'other'
|
84
|
-
as_enum :role, [:admin, :member, :anon], :strings => true
|
85
|
-
as_enum :numeric, [:"100", :"3.14"], :strings => true
|
86
|
-
as_enum :nilish, [:nil], :strings => true
|
87
|
-
|
88
|
-
before_save :check_typed
|
89
|
-
|
90
|
-
def check_typed
|
91
|
-
attributes['_type'] = nil unless (self.hereditary? || self.polymorphic?)
|
92
|
-
end
|
93
|
-
|
94
|
-
end
|
95
|
-
|
96
|
-
class Gender
|
97
|
-
include Mongoid::Document
|
98
|
-
include SimpleEnum::Mongoid
|
99
|
-
|
100
|
-
field :name, :type => String
|
101
|
-
end
|
102
|
-
|
103
|
-
class Computer
|
104
|
-
include Mongoid::Document
|
105
|
-
include SimpleEnum::Mongoid
|
106
|
-
|
107
|
-
field :name, :type => String
|
108
|
-
|
109
|
-
as_enum :manufacturer, [:dell, :compaq, :apple]
|
110
|
-
as_enum :operating_system, [:windows, :osx, :linux, :bsd]
|
111
|
-
end
|
112
|
-
|
113
|
-
# Used to test STI stuff
|
114
|
-
class SpecificDummy < Dummy; end
|
data/test/poro_test.rb
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class POROTest < MiniTest::Unit::TestCase
|
4
|
-
class MyPORO
|
5
|
-
include SimpleEnum
|
6
|
-
|
7
|
-
attr_accessor :gender_cd
|
8
|
-
as_enum :gender, [:male, :female]
|
9
|
-
end
|
10
|
-
|
11
|
-
def test_reading_and_writing
|
12
|
-
poro = POROTest::MyPORO.new
|
13
|
-
poro.gender_cd = 1
|
14
|
-
assert_equal :female, poro.gender
|
15
|
-
|
16
|
-
poro.male!
|
17
|
-
assert_equal 0, poro.gender_cd
|
18
|
-
assert_equal :male, poro.gender
|
19
|
-
end
|
20
|
-
end
|
data/test/prefixes_test.rb
DELETED
@@ -1,36 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class PrefixesTest < MiniTest::Unit::TestCase
|
4
|
-
def setup
|
5
|
-
reload_db
|
6
|
-
end
|
7
|
-
|
8
|
-
def test_that_gender_is_prefixed_in_getters_and_setters
|
9
|
-
with_prefix = anonymous_dummy do
|
10
|
-
as_enum :gender, [:male, :female], :prefix => true
|
11
|
-
end
|
12
|
-
|
13
|
-
d = with_prefix.new :gender => :male
|
14
|
-
assert_respond_to d, :gender_male?
|
15
|
-
assert_respond_to d, :gender_male!
|
16
|
-
assert_respond_to d, :gender_female?
|
17
|
-
assert_respond_to d, :gender_female!
|
18
|
-
|
19
|
-
# just ensure that it DOES NOT RESPOND TO good old male!
|
20
|
-
assert !d.respond_to?(:male!)
|
21
|
-
end
|
22
|
-
|
23
|
-
def test_that_custom_prefix_is_applied_to_getters_and_setters
|
24
|
-
with_string_prefix = anonymous_dummy do
|
25
|
-
as_enum :gender, [:male, :female], :prefix => 'didum'
|
26
|
-
end
|
27
|
-
|
28
|
-
d = with_string_prefix.new :gender => :female
|
29
|
-
assert_respond_to d, :didum_female?
|
30
|
-
assert_respond_to d, :didum_female!
|
31
|
-
|
32
|
-
# just check wheter the results are still correct :)
|
33
|
-
assert d.didum_female?
|
34
|
-
assert !d.didum_male?
|
35
|
-
end
|
36
|
-
end
|