enum_records 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -6,6 +6,7 @@ source "http://rubygems.org"
6
6
  # Add dependencies to develop your gem here.
7
7
  # Include everything needed to run rake, tests, features, etc.
8
8
  group :development do
9
+ gem "rdoc"
9
10
  gem "rspec", "~> 2.3.0"
10
11
  gem "bundler", "~> 1.0.0"
11
12
  gem "jeweler", "~> 1.6.4"
@@ -1,8 +1,13 @@
1
- = enum_records
1
+ # enum_records
2
2
 
3
3
  Description goes here.
4
4
 
5
- == Contributing to enum_records
5
+ # Versions history
6
+
7
+ * 0.1.1 - added model instnace accessor method `enum_attributes` to access all fields that were passed at enum definition.
8
+ * 0.1.0 - first release
9
+
10
+ # Contributing to enum_records
6
11
 
7
12
  * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
8
13
  * Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it
@@ -12,7 +17,7 @@ Description goes here.
12
17
  * Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
13
18
  * Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.
14
19
 
15
- == Copyright
20
+ # Copyright
16
21
 
17
22
  Copyright (c) 2011 Alex Tkachev. See LICENSE.txt for
18
23
  further details.
data/Rakefile CHANGED
@@ -18,7 +18,7 @@ Jeweler::Tasks.new do |gem|
18
18
  gem.homepage = "http://github.com/alextk/enum_records"
19
19
  gem.license = "MIT"
20
20
  gem.summary = %Q{Allows to create named model records (enums).}
21
- gem.description = %Q{This gem allows to created enum records (named records) and to retrieve them easily. Support globalize3 localization in enum fields initialization. }
21
+ gem.description = %Q{This gem allows to create enum records (named records) and to retrieve them easily. Supports globalize3 localization in enum fields initialization. }
22
22
  gem.email = "tkachev.alex@gmail.com"
23
23
  gem.authors = ["Alex Tkachev"]
24
24
  # dependencies defined in Gemfile
@@ -38,8 +38,8 @@ end
38
38
 
39
39
  task :default => :spec
40
40
 
41
- require 'rake/rdoctask'
42
- Rake::RDocTask.new do |rdoc|
41
+ require 'rdoc/task'
42
+ RDoc::Task.new do |rdoc|
43
43
  version = File.exist?('VERSION') ? File.read('VERSION') : ""
44
44
 
45
45
  rdoc.rdoc_dir = 'rdoc'
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.1.1
data/enum_records.gemspec CHANGED
@@ -5,23 +5,23 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{enum_records}
8
- s.version = "0.1.0"
8
+ s.version = "0.1.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Alex Tkachev"]
12
- s.date = %q{2011-07-24}
13
- s.description = %q{This gem allows to created enum records (named records) and to retrieve them easily. Support globalize3 localization in enum fields initialization. }
12
+ s.date = %q{2011-07-25}
13
+ s.description = %q{This gem allows to create enum records (named records) and to retrieve them easily. Supports globalize3 localization in enum fields initialization. }
14
14
  s.email = %q{tkachev.alex@gmail.com}
15
15
  s.extra_rdoc_files = [
16
16
  "LICENSE.txt",
17
- "README.rdoc"
17
+ "README.md"
18
18
  ]
19
19
  s.files = [
20
20
  ".document",
21
21
  ".rspec",
22
22
  "Gemfile",
23
23
  "LICENSE.txt",
24
- "README.rdoc",
24
+ "README.md",
25
25
  "Rakefile",
26
26
  "VERSION",
27
27
  "enum_records.gemspec",
@@ -45,6 +45,7 @@ Gem::Specification.new do |s|
45
45
  s.specification_version = 3
46
46
 
47
47
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
48
+ s.add_development_dependency(%q<rdoc>, [">= 0"])
48
49
  s.add_development_dependency(%q<rspec>, ["~> 2.3.0"])
49
50
  s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
50
51
  s.add_development_dependency(%q<jeweler>, ["~> 1.6.4"])
@@ -54,6 +55,7 @@ Gem::Specification.new do |s|
54
55
  s.add_development_dependency(%q<sqlite3>, [">= 0"])
55
56
  s.add_development_dependency(%q<globalize3>, [">= 0"])
56
57
  else
58
+ s.add_dependency(%q<rdoc>, [">= 0"])
57
59
  s.add_dependency(%q<rspec>, ["~> 2.3.0"])
58
60
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
59
61
  s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
@@ -64,6 +66,7 @@ Gem::Specification.new do |s|
64
66
  s.add_dependency(%q<globalize3>, [">= 0"])
65
67
  end
66
68
  else
69
+ s.add_dependency(%q<rdoc>, [">= 0"])
67
70
  s.add_dependency(%q<rspec>, ["~> 2.3.0"])
68
71
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
69
72
  s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
data/lib/enum_records.rb CHANGED
@@ -40,7 +40,13 @@ module EnumRecords
40
40
  end
41
41
 
42
42
  module InstanceMethods
43
-
43
+ # return this instance enum atttributes as were passed at enum definition
44
+ # note that all atttributes are returned (both database and non database).
45
+ # note that database atttribute value can be different from enum attribute value (because it was changed in db by someone else)
46
+ def enum_attributes
47
+ enum_column_name = self.class._enums[:column_name]
48
+ self.class._enums[:definitions][self.send(enum_column_name)]
49
+ end
44
50
  end
45
51
 
46
52
  end
@@ -69,6 +69,32 @@ describe "Document" do
69
69
  enums.should_not include(@non_enum)
70
70
  end
71
71
 
72
+ it 'should have non database attributes accessable' do
73
+ enum_doc = Document.enum(:about)
74
+ enum_doc.enum_attributes.should_not be_nil
75
+ enum_doc.enum_attributes[:html_title].should == 'about us'
76
+ end
77
+
78
+ it 'should return nil if it is not enum record and enum attributes requested' do
79
+ @non_enum.enum_attributes.should be_nil
80
+ end
81
+
82
+ context "when document is changed in db" do
83
+ it 'should have db attribute != enum attribute' do
84
+ enum_doc = Document.enum(:home)
85
+ enum_doc.name = '1234'
86
+ enum_doc.save.should be_true
87
+
88
+ Document.enum(:home).name.should_not == Document.enum(:home).enum_attributes[:name]
89
+ Document.enum(:home).enum_attributes[:name].should == 'Home page'
90
+ Document.enum(:home).name.should == '1234'
91
+
92
+ #restore original value
93
+ enum_doc.name = Document.enum(:home).enum_attributes[:name]
94
+ enum_doc.save.should be_true
95
+ end
96
+ end
97
+
72
98
  end
73
99
 
74
100
  describe "Page" do
@@ -78,9 +104,9 @@ describe "Page" do
78
104
 
79
105
  it 'should find 3 defined enums' do
80
106
  enums = Page.enums
81
- enums.length.should == 3
82
- Page.count.should == 4
83
- enums.should include(Page.enum(:home), Page.enum(:profile), Page.enum(:project_categories))
107
+ enums.length.should == 4
108
+ Page.count.should == 5
109
+ enums.should include(Page.enum(:home), Page.enum(:profile), Page.enum(:project_categories), Page.enum(:ContactForm))
84
110
  enums.should_not include(@non_enum)
85
111
  end
86
112
 
@@ -3,7 +3,7 @@ class Document < ActiveRecord::Base
3
3
 
4
4
  define_enums do
5
5
  home :name => 'Home page'
6
- about :name => 'About page'
6
+ about :name => 'About page', :html_title => 'about us'
7
7
  contact_form :name => 'Contact us'
8
8
  end
9
9
 
data/spec/models/page.rb CHANGED
@@ -7,5 +7,6 @@ class Page < ActiveRecord::Base
7
7
  home :position=>1, :published => true, :locales => {'en-US'=>{:title=>'Home'}, 'he-IL'=>{:title=>'דף הבית'}}
8
8
  profile :position=>2, :published => true, :locales=>{'en-US'=>{:title=>'Profile'}, 'he-IL'=>{:title=>'פרופיל'}}
9
9
  project_categories :position=>3, :published=>true, :locales=>{'en-US'=>{:title=>'Projects'}, 'he-IL'=>{:title=>'פרויקטים'}}
10
+ ContactForm :position=>3, :published=>true, :locales=>{'en-US'=>{:title=>'contact us'}, 'he-IL'=>{:title=>'יצירת קשר'}}
10
11
  end
11
12
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: enum_records
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 25
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 0
10
- version: 0.1.0
9
+ - 1
10
+ version: 0.1.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - Alex Tkachev
@@ -15,12 +15,26 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-07-24 00:00:00 +03:00
18
+ date: 2011-07-25 00:00:00 +03:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
22
  prerelease: false
23
23
  requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ hash: 3
29
+ segments:
30
+ - 0
31
+ version: "0"
32
+ type: :development
33
+ name: rdoc
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ prerelease: false
37
+ requirement: &id002 !ruby/object:Gem::Requirement
24
38
  none: false
25
39
  requirements:
26
40
  - - ~>
@@ -33,10 +47,10 @@ dependencies:
33
47
  version: 2.3.0
34
48
  type: :development
35
49
  name: rspec
36
- version_requirements: *id001
50
+ version_requirements: *id002
37
51
  - !ruby/object:Gem::Dependency
38
52
  prerelease: false
39
- requirement: &id002 !ruby/object:Gem::Requirement
53
+ requirement: &id003 !ruby/object:Gem::Requirement
40
54
  none: false
41
55
  requirements:
42
56
  - - ~>
@@ -49,10 +63,10 @@ dependencies:
49
63
  version: 1.0.0
50
64
  type: :development
51
65
  name: bundler
52
- version_requirements: *id002
66
+ version_requirements: *id003
53
67
  - !ruby/object:Gem::Dependency
54
68
  prerelease: false
55
- requirement: &id003 !ruby/object:Gem::Requirement
69
+ requirement: &id004 !ruby/object:Gem::Requirement
56
70
  none: false
57
71
  requirements:
58
72
  - - ~>
@@ -65,10 +79,10 @@ dependencies:
65
79
  version: 1.6.4
66
80
  type: :development
67
81
  name: jeweler
68
- version_requirements: *id003
82
+ version_requirements: *id004
69
83
  - !ruby/object:Gem::Dependency
70
84
  prerelease: false
71
- requirement: &id004 !ruby/object:Gem::Requirement
85
+ requirement: &id005 !ruby/object:Gem::Requirement
72
86
  none: false
73
87
  requirements:
74
88
  - - ">="
@@ -79,10 +93,10 @@ dependencies:
79
93
  version: "0"
80
94
  type: :development
81
95
  name: rcov
82
- version_requirements: *id004
96
+ version_requirements: *id005
83
97
  - !ruby/object:Gem::Dependency
84
98
  prerelease: false
85
- requirement: &id005 !ruby/object:Gem::Requirement
99
+ requirement: &id006 !ruby/object:Gem::Requirement
86
100
  none: false
87
101
  requirements:
88
102
  - - ">="
@@ -95,10 +109,10 @@ dependencies:
95
109
  version: 3.0.9
96
110
  type: :development
97
111
  name: activerecord
98
- version_requirements: *id005
112
+ version_requirements: *id006
99
113
  - !ruby/object:Gem::Dependency
100
114
  prerelease: false
101
- requirement: &id006 !ruby/object:Gem::Requirement
115
+ requirement: &id007 !ruby/object:Gem::Requirement
102
116
  none: false
103
117
  requirements:
104
118
  - - ">="
@@ -111,10 +125,10 @@ dependencies:
111
125
  version: 3.0.9
112
126
  type: :development
113
127
  name: activesupport
114
- version_requirements: *id006
128
+ version_requirements: *id007
115
129
  - !ruby/object:Gem::Dependency
116
130
  prerelease: false
117
- requirement: &id007 !ruby/object:Gem::Requirement
131
+ requirement: &id008 !ruby/object:Gem::Requirement
118
132
  none: false
119
133
  requirements:
120
134
  - - ">="
@@ -125,10 +139,10 @@ dependencies:
125
139
  version: "0"
126
140
  type: :development
127
141
  name: sqlite3
128
- version_requirements: *id007
142
+ version_requirements: *id008
129
143
  - !ruby/object:Gem::Dependency
130
144
  prerelease: false
131
- requirement: &id008 !ruby/object:Gem::Requirement
145
+ requirement: &id009 !ruby/object:Gem::Requirement
132
146
  none: false
133
147
  requirements:
134
148
  - - ">="
@@ -139,8 +153,8 @@ dependencies:
139
153
  version: "0"
140
154
  type: :development
141
155
  name: globalize3
142
- version_requirements: *id008
143
- description: "This gem allows to created enum records (named records) and to retrieve them easily. Support globalize3 localization in enum fields initialization. "
156
+ version_requirements: *id009
157
+ description: "This gem allows to create enum records (named records) and to retrieve them easily. Supports globalize3 localization in enum fields initialization. "
144
158
  email: tkachev.alex@gmail.com
145
159
  executables: []
146
160
 
@@ -148,13 +162,13 @@ extensions: []
148
162
 
149
163
  extra_rdoc_files:
150
164
  - LICENSE.txt
151
- - README.rdoc
165
+ - README.md
152
166
  files:
153
167
  - .document
154
168
  - .rspec
155
169
  - Gemfile
156
170
  - LICENSE.txt
157
- - README.rdoc
171
+ - README.md
158
172
  - Rakefile
159
173
  - VERSION
160
174
  - enum_records.gemspec