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.
- data/.gitignore +2 -0
- data/MIT-LICENSE +20 -0
- data/README +74 -0
- data/Rakefile +17 -0
- data/has_defaults.gemspec +19 -0
- data/lib/has_defaults/active_record_ext.rb +54 -0
- data/lib/has_defaults/version.rb +5 -0
- data/lib/has_defaults.rb +4 -0
- data/pkg/has_defaults-0.3.0.gem +0 -0
- data/spec/app_root/log/in_memory.log +147 -0
- data/spec/rails2/Gemfile +8 -0
- data/spec/rails2/Gemfile.lock +51 -0
- data/spec/rails2/Rakefile +11 -0
- data/spec/rails2/app_root/app/controllers/application_controller.rb +2 -0
- data/spec/rails2/app_root/app/models/donut.rb +21 -0
- data/spec/rails2/app_root/app/models/model_without_defaults.rb +2 -0
- data/spec/rails2/app_root/app/models/pastry.rb +6 -0
- data/spec/rails2/app_root/config/boot.rb +114 -0
- data/spec/rails2/app_root/config/database.yml +21 -0
- data/spec/rails2/app_root/config/environment.rb +14 -0
- data/spec/rails2/app_root/config/environments/in_memory.rb +0 -0
- data/spec/rails2/app_root/config/environments/mysql.rb +0 -0
- data/spec/rails2/app_root/config/environments/postgresql.rb +0 -0
- data/spec/rails2/app_root/config/environments/sqlite.rb +0 -0
- data/spec/rails2/app_root/config/environments/sqlite3.rb +0 -0
- data/spec/rails2/app_root/config/routes.rb +4 -0
- data/spec/rails2/app_root/db/migrate/001_create_pastries.rb +18 -0
- data/spec/rails2/app_root/db/migrate/002_create_model_without_defaults.rb +12 -0
- data/spec/rails2/app_root/lib/console_with_fixtures.rb +4 -0
- data/spec/rails2/app_root/log/.gitignore +1 -0
- data/spec/rails2/app_root/script/console +7 -0
- data/spec/rails2/has_defaults_spec.rb +79 -0
- data/spec/rails2/rcov.opts +2 -0
- data/spec/rails2/spec.opts +4 -0
- data/spec/rails2/spec_helper.rb +20 -0
- data/spec/rails3/.rspec +2 -0
- data/spec/rails3/Gemfile +9 -0
- data/spec/rails3/Gemfile.lock +101 -0
- data/spec/rails3/Rakefile +10 -0
- data/spec/rails3/app_root/.gitignore +4 -0
- data/spec/rails3/app_root/app/controllers/application_controller.rb +2 -0
- data/spec/rails3/app_root/app/models/donut.rb +21 -0
- data/spec/rails3/app_root/app/models/model_without_defaults.rb +2 -0
- data/spec/rails3/app_root/app/models/pastry.rb +6 -0
- data/spec/rails3/app_root/config/application.rb +32 -0
- data/spec/rails3/app_root/config/boot.rb +13 -0
- data/spec/rails3/app_root/config/database.yml +21 -0
- data/spec/rails3/app_root/config/environment.rb +5 -0
- data/spec/rails3/app_root/config/environments/in_memory.rb +0 -0
- data/spec/rails3/app_root/config/environments/mysql.rb +0 -0
- data/spec/rails3/app_root/config/environments/postgresql.rb +0 -0
- data/spec/rails3/app_root/config/environments/sqlite.rb +0 -0
- data/spec/rails3/app_root/config/environments/sqlite3.rb +0 -0
- data/spec/rails3/app_root/config/environments/test.rb +35 -0
- data/spec/rails3/app_root/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/rails3/app_root/config/initializers/inflections.rb +10 -0
- data/spec/rails3/app_root/config/initializers/mime_types.rb +5 -0
- data/spec/rails3/app_root/config/initializers/secret_token.rb +7 -0
- data/spec/rails3/app_root/config/initializers/session_store.rb +8 -0
- data/spec/rails3/app_root/config/locales/en.yml +5 -0
- data/spec/rails3/app_root/config/routes.rb +58 -0
- data/spec/rails3/app_root/db/migrate/001_create_pastries.rb +18 -0
- data/spec/rails3/app_root/db/migrate/002_create_model_without_defaults.rb +12 -0
- data/spec/rails3/app_root/lib/tasks/.gitkeep +0 -0
- data/spec/rails3/app_root/log/.gitkeep +0 -0
- data/spec/rails3/app_root/script/rails +6 -0
- data/spec/rails3/has_defaults_spec.rb +74 -0
- data/spec/rails3/log/in_memory.log +33 -0
- data/spec/rails3/rcov.opts +2 -0
- data/spec/rails3/spec_helper.rb +21 -0
- 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
|
+
[1m[36mSQL (0.3ms)[0m [1m SELECT name
|
2
|
+
FROM sqlite_master
|
3
|
+
WHERE type = 'table' AND NOT name = 'sqlite_sequence'
|
4
|
+
[0m
|
5
|
+
[1m[35mSQL (0.1ms)[0m select sqlite_version(*)
|
6
|
+
[1m[36mSQL (0.2ms)[0m [1mCREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL) [0m
|
7
|
+
[1m[35mSQL (0.0ms)[0m PRAGMA index_list("schema_migrations")
|
8
|
+
[1m[36mSQL (0.1ms)[0m [1mCREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")[0m
|
9
|
+
[1m[35mSQL (0.1ms)[0m SELECT name
|
10
|
+
FROM sqlite_master
|
11
|
+
WHERE type = 'table' AND NOT name = 'sqlite_sequence'
|
12
|
+
[1m[36mSQL (0.3ms)[0m [1m SELECT name
|
13
|
+
FROM sqlite_master
|
14
|
+
WHERE type = 'table' AND NOT name = 'sqlite_sequence'
|
15
|
+
[0m
|
16
|
+
[1m[35mSQL (0.1ms)[0m select sqlite_version(*)
|
17
|
+
[1m[36mSQL (0.2ms)[0m [1mCREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL) [0m
|
18
|
+
[1m[35mSQL (0.0ms)[0m PRAGMA index_list("schema_migrations")
|
19
|
+
[1m[36mSQL (0.1ms)[0m [1mCREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")[0m
|
20
|
+
[1m[35mSQL (0.1ms)[0m SELECT name
|
21
|
+
FROM sqlite_master
|
22
|
+
WHERE type = 'table' AND NOT name = 'sqlite_sequence'
|
23
|
+
[1m[36mSQL (0.3ms)[0m [1m SELECT name
|
24
|
+
FROM sqlite_master
|
25
|
+
WHERE type = 'table' AND NOT name = 'sqlite_sequence'
|
26
|
+
[0m
|
27
|
+
[1m[35mSQL (0.1ms)[0m select sqlite_version(*)
|
28
|
+
[1m[36mSQL (0.2ms)[0m [1mCREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL) [0m
|
29
|
+
[1m[35mSQL (0.0ms)[0m PRAGMA index_list("schema_migrations")
|
30
|
+
[1m[36mSQL (0.1ms)[0m [1mCREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")[0m
|
31
|
+
[1m[35mSQL (0.1ms)[0m SELECT name
|
32
|
+
FROM sqlite_master
|
33
|
+
WHERE type = 'table' AND NOT name = 'sqlite_sequence'
|
@@ -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
|
+
|