has_defaults 0.3.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.
Files changed (71) hide show
  1. data/.gitignore +2 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README +74 -0
  4. data/Rakefile +17 -0
  5. data/has_defaults.gemspec +19 -0
  6. data/lib/has_defaults/active_record_ext.rb +54 -0
  7. data/lib/has_defaults/version.rb +5 -0
  8. data/lib/has_defaults.rb +4 -0
  9. data/pkg/has_defaults-0.3.0.gem +0 -0
  10. data/spec/app_root/log/in_memory.log +147 -0
  11. data/spec/rails2/Gemfile +8 -0
  12. data/spec/rails2/Gemfile.lock +51 -0
  13. data/spec/rails2/Rakefile +11 -0
  14. data/spec/rails2/app_root/app/controllers/application_controller.rb +2 -0
  15. data/spec/rails2/app_root/app/models/donut.rb +21 -0
  16. data/spec/rails2/app_root/app/models/model_without_defaults.rb +2 -0
  17. data/spec/rails2/app_root/app/models/pastry.rb +6 -0
  18. data/spec/rails2/app_root/config/boot.rb +114 -0
  19. data/spec/rails2/app_root/config/database.yml +21 -0
  20. data/spec/rails2/app_root/config/environment.rb +14 -0
  21. data/spec/rails2/app_root/config/environments/in_memory.rb +0 -0
  22. data/spec/rails2/app_root/config/environments/mysql.rb +0 -0
  23. data/spec/rails2/app_root/config/environments/postgresql.rb +0 -0
  24. data/spec/rails2/app_root/config/environments/sqlite.rb +0 -0
  25. data/spec/rails2/app_root/config/environments/sqlite3.rb +0 -0
  26. data/spec/rails2/app_root/config/routes.rb +4 -0
  27. data/spec/rails2/app_root/db/migrate/001_create_pastries.rb +18 -0
  28. data/spec/rails2/app_root/db/migrate/002_create_model_without_defaults.rb +12 -0
  29. data/spec/rails2/app_root/lib/console_with_fixtures.rb +4 -0
  30. data/spec/rails2/app_root/log/.gitignore +1 -0
  31. data/spec/rails2/app_root/script/console +7 -0
  32. data/spec/rails2/has_defaults_spec.rb +79 -0
  33. data/spec/rails2/rcov.opts +2 -0
  34. data/spec/rails2/spec.opts +4 -0
  35. data/spec/rails2/spec_helper.rb +20 -0
  36. data/spec/rails3/.rspec +2 -0
  37. data/spec/rails3/Gemfile +9 -0
  38. data/spec/rails3/Gemfile.lock +101 -0
  39. data/spec/rails3/Rakefile +10 -0
  40. data/spec/rails3/app_root/.gitignore +4 -0
  41. data/spec/rails3/app_root/app/controllers/application_controller.rb +2 -0
  42. data/spec/rails3/app_root/app/models/donut.rb +21 -0
  43. data/spec/rails3/app_root/app/models/model_without_defaults.rb +2 -0
  44. data/spec/rails3/app_root/app/models/pastry.rb +6 -0
  45. data/spec/rails3/app_root/config/application.rb +32 -0
  46. data/spec/rails3/app_root/config/boot.rb +13 -0
  47. data/spec/rails3/app_root/config/database.yml +21 -0
  48. data/spec/rails3/app_root/config/environment.rb +5 -0
  49. data/spec/rails3/app_root/config/environments/in_memory.rb +0 -0
  50. data/spec/rails3/app_root/config/environments/mysql.rb +0 -0
  51. data/spec/rails3/app_root/config/environments/postgresql.rb +0 -0
  52. data/spec/rails3/app_root/config/environments/sqlite.rb +0 -0
  53. data/spec/rails3/app_root/config/environments/sqlite3.rb +0 -0
  54. data/spec/rails3/app_root/config/environments/test.rb +35 -0
  55. data/spec/rails3/app_root/config/initializers/backtrace_silencers.rb +7 -0
  56. data/spec/rails3/app_root/config/initializers/inflections.rb +10 -0
  57. data/spec/rails3/app_root/config/initializers/mime_types.rb +5 -0
  58. data/spec/rails3/app_root/config/initializers/secret_token.rb +7 -0
  59. data/spec/rails3/app_root/config/initializers/session_store.rb +8 -0
  60. data/spec/rails3/app_root/config/locales/en.yml +5 -0
  61. data/spec/rails3/app_root/config/routes.rb +58 -0
  62. data/spec/rails3/app_root/db/migrate/001_create_pastries.rb +18 -0
  63. data/spec/rails3/app_root/db/migrate/002_create_model_without_defaults.rb +12 -0
  64. data/spec/rails3/app_root/lib/tasks/.gitkeep +0 -0
  65. data/spec/rails3/app_root/log/.gitkeep +0 -0
  66. data/spec/rails3/app_root/script/rails +6 -0
  67. data/spec/rails3/has_defaults_spec.rb +74 -0
  68. data/spec/rails3/log/in_memory.log +33 -0
  69. data/spec/rails3/rcov.opts +2 -0
  70. data/spec/rails3/spec_helper.rb +21 -0
  71. metadata +149 -0
@@ -0,0 +1,74 @@
1
+ require File.dirname(__FILE__) + "/spec_helper"
2
+
3
+ describe "has_defaults" do
4
+
5
+ context "given a model with defaults" do
6
+
7
+ it "should set defaults" do
8
+ new_donut = Donut.new
9
+ new_donut.flavor.should == "cream"
10
+ new_donut.name.should == "Cream"
11
+ end
12
+
13
+ it "should use setters methods to set the defaults" do
14
+ new_donut = Donut.new
15
+ new_donut.instance_variable_get('@flavor_setter_called').should be_true
16
+ end
17
+
18
+ it "should call procs in the model context when given as defaults" do
19
+ new_donut = Donut.new
20
+ new_donut.weight.should == 'a lot'
21
+ end
22
+
23
+ it "should merge multiple has_defaults directives" do
24
+ new_donut = Donut.new
25
+ new_donut.maker.should == "Dunkin Donuts"
26
+ end
27
+
28
+ it "should set defaults only if attributes are nil" do
29
+ donut = Donut.new(:flavor => 'vanilla')
30
+ donut.flavor.should == "vanilla"
31
+ end
32
+
33
+ it "should not set a default on an attribute that is set to an empty string" do
34
+ donut = Donut.new(:flavor => '')
35
+ donut.flavor.should == ''
36
+ end
37
+
38
+ it "should use getters methods to check if an attribute is nil" do
39
+ new_donut = Donut.new
40
+ new_donut.instance_variable_get('@flavor_getter_called').should be_true
41
+ end
42
+
43
+ it "should return default value for an attribute" do
44
+ Donut.new.default_for(:flavor).should == "cream"
45
+ end
46
+
47
+ it "should not set defaults when loading a saved record" do
48
+ Donut.create(:flavor => "vanilla")
49
+ Donut.first.flavor.should == "vanilla"
50
+ end
51
+
52
+ it "should not redefine defaults in its superclass" do
53
+ pastry = Pastry.new
54
+ pastry.maker.should == 'Mom'
55
+ pastry.default_for(:maker).should == 'Mom'
56
+ end
57
+
58
+ it "should respect defaults from its superclass" do
59
+ donut = Donut.create
60
+ donut.main_ingredient.should == 'flour'
61
+ donut.maker.should_not == 'Mom'
62
+ end
63
+
64
+ end
65
+
66
+ context "given a model without defaults" do
67
+
68
+ it "should not define #after_initialize so initialization remains fast" do
69
+ ModelWithoutDefaults.new.should_not respond_to(:after_initialize)
70
+ end
71
+
72
+ end
73
+
74
+ end
@@ -0,0 +1,33 @@
1
+ SQL (0.3ms)  SELECT name
2
+ FROM sqlite_master
3
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
4
+ 
5
+ SQL (0.1ms) select sqlite_version(*)
6
+ SQL (0.2ms) CREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL) 
7
+ SQL (0.0ms) PRAGMA index_list("schema_migrations")
8
+ SQL (0.1ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
9
+ SQL (0.1ms) SELECT name
10
+ FROM sqlite_master
11
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
12
+ SQL (0.3ms)  SELECT name
13
+ FROM sqlite_master
14
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
15
+ 
16
+ SQL (0.1ms) select sqlite_version(*)
17
+ SQL (0.2ms) CREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL) 
18
+ SQL (0.0ms) PRAGMA index_list("schema_migrations")
19
+ SQL (0.1ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
20
+ SQL (0.1ms) SELECT name
21
+ FROM sqlite_master
22
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
23
+ SQL (0.3ms)  SELECT name
24
+ FROM sqlite_master
25
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
26
+ 
27
+ SQL (0.1ms) select sqlite_version(*)
28
+ SQL (0.2ms) CREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL) 
29
+ SQL (0.0ms) PRAGMA index_list("schema_migrations")
30
+ SQL (0.1ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
31
+ SQL (0.1ms) SELECT name
32
+ FROM sqlite_master
33
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
@@ -0,0 +1,2 @@
1
+ --exclude "spec/*,gems/*"
2
+ --rails
@@ -0,0 +1,21 @@
1
+ $: << File.join(File.dirname(__FILE__), "/../lib" )
2
+
3
+ # Set the default environment to sqlite3's in_memory database
4
+ ENV['RAILS_ENV'] ||= 'in_memory'
5
+ ENV['RAILS_ROOT'] = 'app_root'
6
+
7
+ # Load the Rails environment and testing framework
8
+ require "#{File.dirname(__FILE__)}/app_root/config/environment"
9
+ require "#{File.dirname(__FILE__)}/../../lib/has_defaults"
10
+ require 'rspec/rails'
11
+
12
+ # Undo changes to RAILS_ENV
13
+ silence_warnings {RAILS_ENV = ENV['RAILS_ENV']}
14
+
15
+ # Run the migrations
16
+ ActiveRecord::Migrator.migrate("#{Rails.root}/db/migrate")
17
+
18
+ RSpec.configure do |config|
19
+ config.use_transactional_fixtures = true
20
+ config.use_instantiated_fixtures = false
21
+ end
metadata ADDED
@@ -0,0 +1,149 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: has_defaults
3
+ version: !ruby/object:Gem::Version
4
+ hash: 19
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 3
9
+ - 0
10
+ version: 0.3.0
11
+ platform: ruby
12
+ authors:
13
+ - Henning Koch
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2012-06-28 00:00:00 +02:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: rspec
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 3
30
+ segments:
31
+ - 0
32
+ version: "0"
33
+ type: :runtime
34
+ version_requirements: *id001
35
+ description: Default values for ActiveRecord models.
36
+ email: henning.koch@makandra.de
37
+ executables: []
38
+
39
+ extensions: []
40
+
41
+ extra_rdoc_files: []
42
+
43
+ files:
44
+ - .gitignore
45
+ - MIT-LICENSE
46
+ - README
47
+ - Rakefile
48
+ - has_defaults.gemspec
49
+ - lib/has_defaults.rb
50
+ - lib/has_defaults/active_record_ext.rb
51
+ - lib/has_defaults/version.rb
52
+ - pkg/has_defaults-0.3.0.gem
53
+ - spec/app_root/log/in_memory.log
54
+ - spec/rails2/Gemfile
55
+ - spec/rails2/Gemfile.lock
56
+ - spec/rails2/Rakefile
57
+ - spec/rails2/app_root/app/controllers/application_controller.rb
58
+ - spec/rails2/app_root/app/models/donut.rb
59
+ - spec/rails2/app_root/app/models/model_without_defaults.rb
60
+ - spec/rails2/app_root/app/models/pastry.rb
61
+ - spec/rails2/app_root/config/boot.rb
62
+ - spec/rails2/app_root/config/database.yml
63
+ - spec/rails2/app_root/config/environment.rb
64
+ - spec/rails2/app_root/config/environments/in_memory.rb
65
+ - spec/rails2/app_root/config/environments/mysql.rb
66
+ - spec/rails2/app_root/config/environments/postgresql.rb
67
+ - spec/rails2/app_root/config/environments/sqlite.rb
68
+ - spec/rails2/app_root/config/environments/sqlite3.rb
69
+ - spec/rails2/app_root/config/routes.rb
70
+ - spec/rails2/app_root/db/migrate/001_create_pastries.rb
71
+ - spec/rails2/app_root/db/migrate/002_create_model_without_defaults.rb
72
+ - spec/rails2/app_root/lib/console_with_fixtures.rb
73
+ - spec/rails2/app_root/log/.gitignore
74
+ - spec/rails2/app_root/script/console
75
+ - spec/rails2/has_defaults_spec.rb
76
+ - spec/rails2/rcov.opts
77
+ - spec/rails2/spec.opts
78
+ - spec/rails2/spec_helper.rb
79
+ - spec/rails3/.rspec
80
+ - spec/rails3/Gemfile
81
+ - spec/rails3/Gemfile.lock
82
+ - spec/rails3/Rakefile
83
+ - spec/rails3/app_root/.gitignore
84
+ - spec/rails3/app_root/app/controllers/application_controller.rb
85
+ - spec/rails3/app_root/app/models/donut.rb
86
+ - spec/rails3/app_root/app/models/model_without_defaults.rb
87
+ - spec/rails3/app_root/app/models/pastry.rb
88
+ - spec/rails3/app_root/config/application.rb
89
+ - spec/rails3/app_root/config/boot.rb
90
+ - spec/rails3/app_root/config/database.yml
91
+ - spec/rails3/app_root/config/environment.rb
92
+ - spec/rails3/app_root/config/environments/in_memory.rb
93
+ - spec/rails3/app_root/config/environments/mysql.rb
94
+ - spec/rails3/app_root/config/environments/postgresql.rb
95
+ - spec/rails3/app_root/config/environments/sqlite.rb
96
+ - spec/rails3/app_root/config/environments/sqlite3.rb
97
+ - spec/rails3/app_root/config/environments/test.rb
98
+ - spec/rails3/app_root/config/initializers/backtrace_silencers.rb
99
+ - spec/rails3/app_root/config/initializers/inflections.rb
100
+ - spec/rails3/app_root/config/initializers/mime_types.rb
101
+ - spec/rails3/app_root/config/initializers/secret_token.rb
102
+ - spec/rails3/app_root/config/initializers/session_store.rb
103
+ - spec/rails3/app_root/config/locales/en.yml
104
+ - spec/rails3/app_root/config/routes.rb
105
+ - spec/rails3/app_root/db/migrate/001_create_pastries.rb
106
+ - spec/rails3/app_root/db/migrate/002_create_model_without_defaults.rb
107
+ - spec/rails3/app_root/lib/tasks/.gitkeep
108
+ - spec/rails3/app_root/log/.gitkeep
109
+ - spec/rails3/app_root/script/rails
110
+ - spec/rails3/has_defaults_spec.rb
111
+ - spec/rails3/log/in_memory.log
112
+ - spec/rails3/rcov.opts
113
+ - spec/rails3/spec_helper.rb
114
+ has_rdoc: true
115
+ homepage: https://github.com/makandra/has_defaults
116
+ licenses: []
117
+
118
+ post_install_message:
119
+ rdoc_options: []
120
+
121
+ require_paths:
122
+ - lib
123
+ required_ruby_version: !ruby/object:Gem::Requirement
124
+ none: false
125
+ requirements:
126
+ - - ">="
127
+ - !ruby/object:Gem::Version
128
+ hash: 3
129
+ segments:
130
+ - 0
131
+ version: "0"
132
+ required_rubygems_version: !ruby/object:Gem::Requirement
133
+ none: false
134
+ requirements:
135
+ - - ">="
136
+ - !ruby/object:Gem::Version
137
+ hash: 3
138
+ segments:
139
+ - 0
140
+ version: "0"
141
+ requirements: []
142
+
143
+ rubyforge_project:
144
+ rubygems_version: 1.3.9.4
145
+ signing_key:
146
+ specification_version: 3
147
+ summary: Default values for ActiveRecord models.
148
+ test_files: []
149
+