rspec_candy 0.2.7 → 0.2.8

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/README.md CHANGED
@@ -154,7 +154,7 @@ If you only care about the matchers or helpers you can also more specifically re
154
154
 
155
155
  ### Extensions to **ActiveRecord::Base**
156
156
 
157
- **create_without_callbacks**
157
+ **store_with_values**
158
158
 
159
159
  Only on Rails.
160
160
 
@@ -164,7 +164,8 @@ If you only care about the matchers or helpers you can also more specifically re
164
164
 
165
165
  ##Changes from previous versions:
166
166
 
167
- - `new_and_store` has been renamed `create_without_callbacks`
167
+ - `new_and_store` has been renamed to `store_with_values`
168
+ - `create_without_callbacks` has been renamed to `store_with_values`
168
169
  - `keep_invalid!` has been renamed to `prevent_storage`
169
170
  - `Object#should_not_receive_and_execute` has been removed (same as `Object#should_not_receive`)
170
171
  - `should_receive_all_with` (over-generic method name for a helper that is rarely useful)
@@ -9,7 +9,7 @@ require 'rspec_candy/helpers/stub_any_instance'
9
9
  require 'rspec_candy/helpers/stub_existing'
10
10
 
11
11
  if RSpecCandy::Switcher.rails_loaded?
12
- require 'rspec_candy/helpers/rails/create_without_callbacks'
12
+ require 'rspec_candy/helpers/rails/store_with_values'
13
13
  require 'rspec_candy/helpers/rails/it_should_run_callbacks'
14
14
  require 'rspec_candy/helpers/rails/prevent_storage'
15
15
  end
@@ -0,0 +1,34 @@
1
+ module RSpecCandy
2
+ module Helpers
3
+ module Rails
4
+ module StoreWithValues
5
+
6
+ def store_with_values(values = {})
7
+ record = new
8
+ if Switcher.rails_version == :rails2
9
+ record.send(:attributes=, values, false)
10
+ record.send(:create_without_callbacks)
11
+ else
12
+ require 'sneaky-save'
13
+ record.assign_attributes(values, :without_protection => true)
14
+ record.sneaky_save
15
+ end
16
+ record
17
+ end
18
+
19
+ def new_and_store(*args)
20
+ warn 'new_and_store is deprecated. Use store_with_values instead.'
21
+ store_with_values(*args)
22
+ end
23
+
24
+ def create_without_callbacks(*args)
25
+ warn 'create_without_callbacks is deprecated because the name suggested that it honors mass-assignment protection. Use store_with_values instead.'
26
+ store_with_values(*args)
27
+ end
28
+
29
+ ActiveRecord::Base.send(:extend, self)
30
+
31
+ end
32
+ end
33
+ end
34
+ end
@@ -1,3 +1,3 @@
1
1
  module RSpecCandy
2
- VERSION = '0.2.7'
2
+ VERSION = '0.2.8'
3
3
  end
@@ -16,4 +16,5 @@ Gem::Specification.new do |s|
16
16
  s.require_paths = ["lib"]
17
17
 
18
18
  s.add_dependency('rspec')
19
+ s.add_dependency('sneaky-save')
19
20
  end
@@ -2,6 +2,7 @@ source :rubygems
2
2
 
3
3
  gem 'sqlite3'
4
4
  gem 'rails', '~>2'
5
+ gem 'has_defaults'
5
6
  gem 'rspec', '~>1'
6
7
  gem 'rspec-rails', '~>1'
7
8
  gem 'ruby-debug', :platforms => :ruby_18
@@ -9,8 +10,6 @@ gem 'debugger', :platforms => :ruby_19
9
10
  gem 'rspec_candy', :path => '../..'
10
11
  gem 'test-unit', '~>1.2', :platforms => :ruby_19
11
12
 
12
-
13
13
  group :state_machine do
14
14
  gem 'state_machine'
15
15
  end
16
-
@@ -2,6 +2,7 @@ source :rubygems
2
2
 
3
3
  gem 'sqlite3'
4
4
  gem 'rails', '~>3'
5
+ gem 'has_defaults'
5
6
  gem 'rspec', '~>2'
6
7
  gem 'rspec-rails', '~>2'
7
8
  gem 'ruby-debug', :platforms => :ruby_18
@@ -10,4 +11,4 @@ gem 'rspec_candy', :path => '../..'
10
11
 
11
12
  group :state_machine do
12
13
  gem 'state_machine'
13
- end
14
+ end
@@ -4,6 +4,8 @@ class Model < ActiveRecord::Base
4
4
  after_save :after_save_callback1, :after_save_callback2
5
5
  before_save :before_save_callback1, :before_save_callback2
6
6
 
7
+ belongs_to :associated_model, :class_name => 'Model'
8
+
7
9
  if respond_to? :around_save
8
10
  around_save :around_save_callback1, :around_save_callback2
9
11
  end
@@ -3,6 +3,7 @@ class CreateModel < ActiveRecord::Migration
3
3
  def self.up
4
4
  create_table :models do |t|
5
5
  t.string :string_field
6
+ t.references :associated_model
6
7
  end
7
8
  end
8
9
 
@@ -0,0 +1,84 @@
1
+ require 'spec_helper'
2
+ require 'has_defaults'
3
+
4
+ describe RSpecCandy::Helpers::Rails::StoreWithValues do
5
+
6
+ describe ActiveRecord::Base do
7
+
8
+ describe '.store_with_values' do
9
+
10
+ it 'should run after_initialize callbacks' do
11
+ model = Model.disposable_copy do
12
+ has_defaults :string_field => 'Hello Universe'
13
+ end
14
+
15
+ record = model.store_with_values
16
+ record.string_field.should == 'Hello Universe'
17
+ end
18
+
19
+ it 'should allow setting associations' do
20
+ associated_model = Model.create!
21
+
22
+ record = Model.store_with_values(:associated_model => associated_model)
23
+ record.reload
24
+ record.associated_model.should == associated_model
25
+ end
26
+
27
+ it 'should allow setting primary keys' do
28
+ record = Model.store_with_values(:id => 1337)
29
+ record.id.should == 1337
30
+ end
31
+
32
+ it 'should create a record without running callbacks or validations' do
33
+ model = Model.disposable_copy do
34
+ before_save :crash
35
+ validate :crash
36
+ def crash
37
+ raise 'callback was run'
38
+ end
39
+ end
40
+ record = nil
41
+ expect do
42
+ record = model.store_with_values(:string_field => 'foo')
43
+ end.to_not raise_error
44
+ record.string_field.should == 'foo'
45
+ record.should be_a(Model)
46
+ record.id.should be_a(Fixnum)
47
+ record.should_not be_new_record
48
+ end
49
+
50
+ it 'should work with single table inheritance' do
51
+ child = StiChild.store_with_values(:string_field => 'foo')
52
+ child.string_field.should == 'foo'
53
+ child.should be_a(StiChild)
54
+ child.id.should be_a(Fixnum)
55
+ child.type.should == 'StiChild'
56
+ child.should_not be_new_record
57
+ StiChild.all.should == [child]
58
+ end
59
+
60
+ end
61
+
62
+ describe '.create_without_callbacks' do
63
+
64
+ it 'should print a deprecation warning urging to use .store_with_values instead' do
65
+ Model.should_receive(:warn).with(/Use store_with_values instead/i)
66
+ Model.should_receive(:store_with_values).with('args')
67
+ Model.create_without_callbacks('args')
68
+ end
69
+
70
+ end
71
+
72
+ describe '.new_and_store' do
73
+
74
+ it 'should print a deprecation warning urging to use .store_with_values instead' do
75
+ Model.should_receive(:warn).with(/Use store_with_values instead/i)
76
+ Model.should_receive(:store_with_values).with('args')
77
+ Model.new_and_store('args')
78
+ end
79
+
80
+ end
81
+
82
+ end
83
+
84
+ end
metadata CHANGED
@@ -1,39 +1,61 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: rspec_candy
3
- version: !ruby/object:Gem::Version
4
- version: 0.2.7
3
+ version: !ruby/object:Gem::Version
4
+ hash: 7
5
5
  prerelease:
6
+ segments:
7
+ - 0
8
+ - 2
9
+ - 8
10
+ version: 0.2.8
6
11
  platform: ruby
7
- authors:
12
+ authors:
8
13
  - Henning Koch
9
14
  - Tobias Kraze
10
15
  autorequire:
11
16
  bindir: bin
12
17
  cert_chain: []
13
- date: 2013-02-18 00:00:00.000000000 Z
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
18
+
19
+ date: 2013-02-22 00:00:00 +01:00
20
+ default_executable:
21
+ dependencies:
22
+ - !ruby/object:Gem::Dependency
16
23
  name: rspec
17
- requirement: !ruby/object:Gem::Requirement
24
+ prerelease: false
25
+ requirement: &id001 !ruby/object:Gem::Requirement
18
26
  none: false
19
- requirements:
20
- - - ! '>='
21
- - !ruby/object:Gem::Version
22
- version: '0'
27
+ requirements:
28
+ - - ">="
29
+ - !ruby/object:Gem::Version
30
+ hash: 3
31
+ segments:
32
+ - 0
33
+ version: "0"
23
34
  type: :runtime
35
+ version_requirements: *id001
36
+ - !ruby/object:Gem::Dependency
37
+ name: sneaky-save
24
38
  prerelease: false
25
- version_requirements: !ruby/object:Gem::Requirement
39
+ requirement: &id002 !ruby/object:Gem::Requirement
26
40
  none: false
27
- requirements:
28
- - - ! '>='
29
- - !ruby/object:Gem::Version
30
- version: '0'
41
+ requirements:
42
+ - - ">="
43
+ - !ruby/object:Gem::Version
44
+ hash: 3
45
+ segments:
46
+ - 0
47
+ version: "0"
48
+ type: :runtime
49
+ version_requirements: *id002
31
50
  description: RSpec helpers and matchers we use in our daily work at makandra.
32
51
  email: henning.koch@makandra.de
33
52
  executables: []
53
+
34
54
  extensions: []
55
+
35
56
  extra_rdoc_files: []
36
- files:
57
+
58
+ files:
37
59
  - .gitignore
38
60
  - .travis.yml
39
61
  - README.md
@@ -45,9 +67,9 @@ files:
45
67
  - lib/rspec_candy/helpers/disposable_copy.rb
46
68
  - lib/rspec_candy/helpers/it_should_act_like.rb
47
69
  - lib/rspec_candy/helpers/new_with_stubs.rb
48
- - lib/rspec_candy/helpers/rails/create_without_callbacks.rb
49
70
  - lib/rspec_candy/helpers/rails/it_should_run_callbacks.rb
50
71
  - lib/rspec_candy/helpers/rails/prevent_storage.rb
72
+ - lib/rspec_candy/helpers/rails/store_with_values.rb
51
73
  - lib/rspec_candy/helpers/should_receive_and_execute.rb
52
74
  - lib/rspec_candy/helpers/should_receive_and_return.rb
53
75
  - lib/rspec_candy/helpers/should_receive_chain.rb
@@ -106,9 +128,9 @@ files:
106
128
  - spec/shared/rspec_candy/helpers/disposable_copy_spec.rb
107
129
  - spec/shared/rspec_candy/helpers/it_should_act_like_spec.rb
108
130
  - spec/shared/rspec_candy/helpers/new_with_stubs_spec.rb
109
- - spec/shared/rspec_candy/helpers/rails/create_without_callbacks_spec.rb
110
131
  - spec/shared/rspec_candy/helpers/rails/it_should_run_callbacks_spec.rb
111
132
  - spec/shared/rspec_candy/helpers/rails/prevent_storage_spec.rb
133
+ - spec/shared/rspec_candy/helpers/rails/store_with_values_spec.rb
112
134
  - spec/shared/rspec_candy/helpers/should_receive_and_execute_spec.rb
113
135
  - spec/shared/rspec_candy/helpers/should_receive_and_return_spec.rb
114
136
  - spec/shared/rspec_candy/helpers/should_receive_chain_spec.rb
@@ -119,28 +141,39 @@ files:
119
141
  - spec/shared/rspec_candy/matchers/include_hash_spec.rb
120
142
  - spec/shared/support/matchers/pass_as_describe_block.rb
121
143
  - spec/shared/support/matchers/pass_as_example.rb
144
+ has_rdoc: true
122
145
  homepage: https://github.com/makandra/rspec_candy
123
146
  licenses: []
147
+
124
148
  post_install_message:
125
149
  rdoc_options: []
126
- require_paths:
150
+
151
+ require_paths:
127
152
  - lib
128
- required_ruby_version: !ruby/object:Gem::Requirement
153
+ required_ruby_version: !ruby/object:Gem::Requirement
129
154
  none: false
130
- requirements:
131
- - - ! '>='
132
- - !ruby/object:Gem::Version
133
- version: '0'
134
- required_rubygems_version: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - ">="
157
+ - !ruby/object:Gem::Version
158
+ hash: 3
159
+ segments:
160
+ - 0
161
+ version: "0"
162
+ required_rubygems_version: !ruby/object:Gem::Requirement
135
163
  none: false
136
- requirements:
137
- - - ! '>='
138
- - !ruby/object:Gem::Version
139
- version: '0'
164
+ requirements:
165
+ - - ">="
166
+ - !ruby/object:Gem::Version
167
+ hash: 3
168
+ segments:
169
+ - 0
170
+ version: "0"
140
171
  requirements: []
172
+
141
173
  rubyforge_project:
142
- rubygems_version: 1.8.25
174
+ rubygems_version: 1.3.9.5
143
175
  signing_key:
144
176
  specification_version: 3
145
177
  summary: RSpec helpers and matchers we use in our daily work at makandra.
146
178
  test_files: []
179
+
@@ -1,29 +0,0 @@
1
- module RSpecCandy
2
- module Helpers
3
- module Rails
4
- module CreateWithoutCallbacks
5
-
6
- def create_without_callbacks(*args)
7
- table_name = self.table_name
8
- plain_model = Class.new(ActiveRecord::Base) do
9
- self.table_name = table_name
10
- end
11
- plain_record = plain_model.new(*args)
12
- if plain_record.respond_to?(:type=)
13
- plain_record.type = name
14
- end
15
- plain_record.save!
16
- find plain_record.id
17
- end
18
-
19
- def new_and_store(*args)
20
- warn 'new_and_store is deprecated. Use create_without_callbacks instead.'
21
- create_without_callbacks(*args)
22
- end
23
-
24
- ActiveRecord::Base.send(:extend, self)
25
-
26
- end
27
- end
28
- end
29
- end
@@ -1,51 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe RSpecCandy::Helpers::Rails::CreateWithoutCallbacks do
4
-
5
- describe ActiveRecord::Base do
6
-
7
- describe '.create_without_callbacks' do
8
-
9
- it 'should create a record without running callbacks or validations' do
10
- model = Model.disposable_copy do
11
- before_save :crash
12
- validate :crash
13
- def crash
14
- raise 'callback was run'
15
- end
16
- end
17
- record = nil
18
- expect do
19
- record = model.create_without_callbacks(:string_field => 'foo')
20
- end.to_not raise_error
21
- record.string_field.should == 'foo'
22
- record.should be_a(Model)
23
- record.id.should be_a(Fixnum)
24
- record.should_not be_new_record
25
- end
26
-
27
- it 'should work with single table inheritance' do
28
- child = StiChild.create_without_callbacks(:string_field => 'foo')
29
- child.string_field.should == 'foo'
30
- child.should be_a(StiChild)
31
- child.id.should be_a(Fixnum)
32
- child.type.should == 'StiChild'
33
- child.should_not be_new_record
34
- StiChild.all.should == [child]
35
- end
36
-
37
- end
38
-
39
- describe '.new_and_store' do
40
-
41
- it 'should print a deprecation warning urging to use .create_without_callbacks instead' do
42
- Model.should_receive(:warn).with(/Use create_without_callbacks instead/i)
43
- Model.should_receive(:create_without_callbacks).with('args')
44
- Model.new_and_store('args')
45
- end
46
-
47
- end
48
-
49
- end
50
-
51
- end