active_enum 0.9.6 → 0.9.7
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/CHANGELOG +3 -0
- data/Rakefile +5 -0
- data/lib/active_enum/form_helpers/formtastic2.rb +29 -0
- data/lib/active_enum/version.rb +1 -1
- data/spec/active_enum/acts_as_enum_spec.rb +1 -1
- data/spec/active_enum/base_spec.rb +1 -1
- data/spec/active_enum/extensions_spec.rb +1 -1
- data/spec/active_enum/form_helpers/formtastic2_spec.rb +80 -0
- data/spec/active_enum/form_helpers/formtastic_spec.rb +10 -2
- data/spec/active_enum/form_helpers/simple_form_spec.rb +1 -1
- data/spec/active_enum/storage/memory_store_spec.rb +1 -1
- data/spec/active_enum_spec.rb +1 -1
- data/spec/spec_helper.rb +5 -3
- data/spec/{schema.rb → support/schema.rb} +0 -0
- metadata +9 -6
data/CHANGELOG
CHANGED
data/Rakefile
CHANGED
@@ -0,0 +1,29 @@
|
|
1
|
+
module Formtastic
|
2
|
+
module Inputs
|
3
|
+
class EnumInput < Formtastic::Inputs::SelectInput
|
4
|
+
|
5
|
+
def raw_collection
|
6
|
+
@raw_collection ||= begin
|
7
|
+
raise "Attribute '#{@method}' has no enum class" unless enum = @object.class.active_enum_for(@method)
|
8
|
+
enum.to_select
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
module ActiveEnum
|
17
|
+
module FormHelpers
|
18
|
+
module Formtastic2
|
19
|
+
|
20
|
+
def default_input_type(method, options)
|
21
|
+
return :enum if @object.class.respond_to?(:active_enum_for) && @object.class.active_enum_for(method)
|
22
|
+
super
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
Formtastic::FormBuilder.send :include, ActiveEnum::FormHelpers::Formtastic2
|
data/lib/active_enum/version.rb
CHANGED
@@ -0,0 +1,80 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
require 'formtastic'
|
4
|
+
|
5
|
+
if Formtastic.const_defined?(:VERSION) && Formtastic::VERSION =~ /^2\./
|
6
|
+
require 'active_enum/form_helpers/formtastic2'
|
7
|
+
|
8
|
+
describe ActiveEnum::FormHelpers::Formtastic2, :type => :helper do
|
9
|
+
include Rails.application.routes.url_helpers
|
10
|
+
include Formtastic::Helpers::FormHelper
|
11
|
+
|
12
|
+
before do
|
13
|
+
reset_class Person do
|
14
|
+
enumerate :sex do
|
15
|
+
value :id => 1, :name => 'Male'
|
16
|
+
value :id => 2, :name => 'Female'
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should use enum input type for enumerated attribute" do
|
22
|
+
output = semantic_form_for(Person.new, :url => people_path) do |f|
|
23
|
+
concat f.input(:sex)
|
24
|
+
end
|
25
|
+
output.should have_selector('select#person_sex')
|
26
|
+
output.should have_xpath('//option[@value=1]', :content => 'Male')
|
27
|
+
output.should have_xpath('//option[@value=2]', :content => 'Female')
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should use explicit :enum input type" do
|
31
|
+
output = semantic_form_for(Person.new, :url => people_path) do |f|
|
32
|
+
concat f.input(:sex, :as => :enum)
|
33
|
+
end
|
34
|
+
output.should have_selector('select#person_sex')
|
35
|
+
output.should have_xpath('//option[@value=1]', :content => 'Male')
|
36
|
+
output.should have_xpath('//option[@value=2]', :content => 'Female')
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should not use enum input type if :as option indicates other type" do
|
40
|
+
output = semantic_form_for(Person.new, :url => people_path) do |f|
|
41
|
+
concat f.input(:sex, :as => :string)
|
42
|
+
end
|
43
|
+
output.should have_selector('input#person_sex')
|
44
|
+
end
|
45
|
+
|
46
|
+
it "should raise error if attribute for enum input is not enumerated" do
|
47
|
+
expect {
|
48
|
+
semantic_form_for(Person.new, :url => people_path) do |f|
|
49
|
+
f.input(:attending, :as => :enum)
|
50
|
+
end
|
51
|
+
}.should raise_error "Attribute 'attending' has no enum class"
|
52
|
+
end
|
53
|
+
|
54
|
+
it "should not use enum input type if class does not support ActiveEnum" do
|
55
|
+
output = semantic_form_for(NotActiveRecord.new, :as => :not_active_record, :url => people_path) do |f|
|
56
|
+
concat f.input(:name)
|
57
|
+
end
|
58
|
+
output.should have_selector('input#not_active_record_name')
|
59
|
+
end
|
60
|
+
|
61
|
+
it "should allow non-enum fields to use default input determination" do
|
62
|
+
output = semantic_form_for(Person.new, :url => people_path) do |f|
|
63
|
+
concat f.input(:first_name)
|
64
|
+
end
|
65
|
+
output.should have_selector('input#person_first_name')
|
66
|
+
end
|
67
|
+
|
68
|
+
it "should allow models without enumerated attributes to behave normally" do
|
69
|
+
output = semantic_form_for(NoEnumPerson.new, :url => people_path) do |f|
|
70
|
+
concat f.input(:first_name)
|
71
|
+
end
|
72
|
+
output.should have_selector('input#no_enum_person_first_name')
|
73
|
+
end
|
74
|
+
|
75
|
+
def people_path
|
76
|
+
'/people'
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
end
|
@@ -1,6 +1,12 @@
|
|
1
|
-
require
|
1
|
+
require "spec_helper"
|
2
2
|
|
3
|
-
|
3
|
+
begin
|
4
|
+
require 'formtastic'
|
5
|
+
require 'formtastic/version'
|
6
|
+
rescue LoadError
|
7
|
+
end
|
8
|
+
|
9
|
+
unless Formtastic.const_defined?(:VERSION)
|
4
10
|
require 'active_enum/form_helpers/formtastic'
|
5
11
|
|
6
12
|
describe ActiveEnum::FormHelpers::Formtastic, :type => :helper do
|
@@ -73,3 +79,5 @@ describe ActiveEnum::FormHelpers::Formtastic, :type => :helper do
|
|
73
79
|
'/people'
|
74
80
|
end
|
75
81
|
end
|
82
|
+
|
83
|
+
end
|
data/spec/active_enum_spec.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -2,28 +2,30 @@ require 'rspec'
|
|
2
2
|
|
3
3
|
require 'rails'
|
4
4
|
require 'active_record'
|
5
|
-
require 'action_controller'
|
5
|
+
require 'action_controller/railtie'
|
6
6
|
require 'action_view'
|
7
7
|
require 'action_mailer'
|
8
8
|
|
9
9
|
require 'active_enum'
|
10
10
|
require 'active_enum/acts_as_enum'
|
11
11
|
|
12
|
-
module
|
12
|
+
module ActiveEnum
|
13
13
|
class Application < Rails::Application
|
14
14
|
config.generators do |g|
|
15
15
|
g.orm :active_record
|
16
16
|
g.test_framework :rspec, :fixture => false
|
17
17
|
end
|
18
|
+
config.active_support.deprecation = :notify
|
18
19
|
end
|
19
20
|
end
|
21
|
+
ActiveEnum::Application.initialize!
|
20
22
|
|
21
23
|
require 'rspec/rails'
|
22
24
|
|
23
25
|
ActiveRecord::Migration.verbose = false
|
24
26
|
ActiveRecord::Base.establish_connection({:adapter => 'sqlite3', :database => ':memory:'})
|
25
27
|
|
26
|
-
require 'schema'
|
28
|
+
require 'support/schema'
|
27
29
|
|
28
30
|
class Person < ActiveRecord::Base; end
|
29
31
|
class NoEnumPerson < ActiveRecord::Base
|
File without changes
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_enum
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 53
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 9
|
9
|
-
-
|
10
|
-
version: 0.9.
|
9
|
+
- 7
|
10
|
+
version: 0.9.7
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Adam Meehan
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
18
|
+
date: 2011-12-11 00:00:00 +11:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -55,6 +55,7 @@ files:
|
|
55
55
|
- lib/active_enum/base.rb
|
56
56
|
- lib/active_enum/extensions.rb
|
57
57
|
- lib/active_enum/form_helpers/formtastic.rb
|
58
|
+
- lib/active_enum/form_helpers/formtastic2.rb
|
58
59
|
- lib/active_enum/form_helpers/simple_form.rb
|
59
60
|
- lib/active_enum/railtie.rb
|
60
61
|
- lib/active_enum/storage/abstract_store.rb
|
@@ -65,12 +66,13 @@ files:
|
|
65
66
|
- spec/active_enum/acts_as_enum_spec.rb
|
66
67
|
- spec/active_enum/base_spec.rb
|
67
68
|
- spec/active_enum/extensions_spec.rb
|
69
|
+
- spec/active_enum/form_helpers/formtastic2_spec.rb
|
68
70
|
- spec/active_enum/form_helpers/formtastic_spec.rb
|
69
71
|
- spec/active_enum/form_helpers/simple_form_spec.rb
|
70
72
|
- spec/active_enum/storage/memory_store_spec.rb
|
71
73
|
- spec/active_enum_spec.rb
|
72
|
-
- spec/schema.rb
|
73
74
|
- spec/spec_helper.rb
|
75
|
+
- spec/support/schema.rb
|
74
76
|
has_rdoc: true
|
75
77
|
homepage: http://github.com/adzap/active_enum
|
76
78
|
licenses: []
|
@@ -109,9 +111,10 @@ test_files:
|
|
109
111
|
- spec/active_enum/acts_as_enum_spec.rb
|
110
112
|
- spec/active_enum/base_spec.rb
|
111
113
|
- spec/active_enum/extensions_spec.rb
|
114
|
+
- spec/active_enum/form_helpers/formtastic2_spec.rb
|
112
115
|
- spec/active_enum/form_helpers/formtastic_spec.rb
|
113
116
|
- spec/active_enum/form_helpers/simple_form_spec.rb
|
114
117
|
- spec/active_enum/storage/memory_store_spec.rb
|
115
118
|
- spec/active_enum_spec.rb
|
116
|
-
- spec/schema.rb
|
117
119
|
- spec/spec_helper.rb
|
120
|
+
- spec/support/schema.rb
|