remockable 0.0.9 → 0.0.10

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.
@@ -1,16 +1,18 @@
1
1
  RSpec::Matchers.define(:allow_mass_assignment_of) do |*attributes|
2
2
  @attributes = attributes
3
3
 
4
+ def authorizer(actual)
5
+ @authorizer ||= actual.class.active_authorizer
6
+ @authorizer = @authorizer[:default] if @authorizer.is_a?(Hash)
7
+ @authorizer
8
+ end
9
+
4
10
  match_for_should do |actual|
5
- @attributes.all? do |attribute|
6
- !actual.class.active_authorizer.deny?(attribute)
7
- end
11
+ @attributes.all? { |attribute| !authorizer(actual).deny?(attribute) }
8
12
  end
9
13
 
10
14
  match_for_should_not do |actual|
11
- @attributes.all? do |attribute|
12
- actual.class.active_authorizer.deny?(attribute)
13
- end
15
+ @attributes.all? { |attribute| authorizer(actual).deny?(attribute) }
14
16
  end
15
17
 
16
18
  failure_message_for_should do |actual|
@@ -0,0 +1,36 @@
1
+ RSpec::Matchers.define(:allow_values_for) do |*attributes_and_values|
2
+ @attribute = attributes_and_values.shift
3
+ @values = attributes_and_values
4
+
5
+ match_for_should do |actual|
6
+ instance = subject.class.new
7
+
8
+ @values.all? do |value|
9
+ instance.stub(@attribute).and_return(value)
10
+ instance.valid?
11
+ instance.errors[@attribute].empty?
12
+ end
13
+ end
14
+
15
+ match_for_should_not do |actual|
16
+ instance = subject.class.new
17
+
18
+ @values.none? do |value|
19
+ instance.stub(@attribute).and_return(value)
20
+ instance.valid?
21
+ instance.errors[@attribute].empty?
22
+ end
23
+ end
24
+
25
+ failure_message_for_should do |actual|
26
+ "Expected #{actual.class.name} to #{description}"
27
+ end
28
+
29
+ failure_message_for_should_not do |actual|
30
+ "Did not expect #{actual.class.name} to #{description}"
31
+ end
32
+
33
+ description do
34
+ "allow the values #{@values.collect(&:inspect).to_sentence} for #{@attribute}"
35
+ end
36
+ end
@@ -1,5 +1,8 @@
1
1
  require 'remockable/active_model/helpers'
2
+
2
3
  require 'remockable/active_model/allow_mass_assignment_of'
4
+
5
+ require 'remockable/active_model/allow_values_for'
3
6
  require 'remockable/active_model/validate_acceptance_of'
4
7
  require 'remockable/active_model/validate_confirmation_of'
5
8
  require 'remockable/active_model/validate_exclusion_of'
@@ -0,0 +1,28 @@
1
+ RSpec::Matchers.define(:accept_nested_attributes_for) do |*attributes|
2
+ extend Remockable::ActiveRecord::Helpers
3
+
4
+ @expected = attributes.extract_options!
5
+ @association = attributes.first
6
+
7
+ unsupported_options %w(reject_if)
8
+ valid_options %w(allow_destroy limit update_only)
9
+
10
+ match do |actual|
11
+ if options = subject.class.nested_attributes_options[@association]
12
+ options.slice(*expected.keys) == expected
13
+ end
14
+ end
15
+
16
+ failure_message_for_should do |actual|
17
+ "Expected #{subject.class.name} to #{description}"
18
+ end
19
+
20
+ failure_message_for_should_not do |actual|
21
+ "Did not expect #{subject.class.name} to #{description}"
22
+ end
23
+
24
+ description do
25
+ with = " with #{expected.inspect}" if expected.any?
26
+ "accept nested attributes for #{@association}#{with}"
27
+ end
28
+ end
@@ -19,7 +19,9 @@ RSpec::Matchers.define(:have_default_scope) do |*expected|
19
19
  readonly_matches = scope.readonly_value == @relation.readonly_value
20
20
 
21
21
  query_matches && eager_load_matches && includes_matches && lock_matches && preload_matches && readonly_matches
22
- elsif subject.class.respond_to?(:default_scoping)
22
+ elsif subject.class.respond_to?(:default_scopes) # Rails 3.1
23
+ subject.class.default_scopes.any?
24
+ elsif subject.class.respond_to?(:default_scoping) # Rails 3.0
23
25
  subject.class.default_scoping.any?
24
26
  end
25
27
  end
@@ -27,33 +29,11 @@ RSpec::Matchers.define(:have_default_scope) do |*expected|
27
29
  end
28
30
 
29
31
  def method_missing(method, *args, &block)
30
- unsupposed_query_methods = %(
31
- create_with
32
- )
33
-
34
- query_methods = %w(
35
- eager_load
36
- from
37
- group
38
- having
39
- includes
40
- joins
41
- limit
42
- lock
43
- offset
44
- order
45
- preload
46
- readonly
47
- reorder
48
- select
49
- where
50
- )
32
+ unsupported_query_methods = %(create_with eager_load includes lock preload readonly)
33
+ query_methods = %w(from group having joins limit offset order reorder select where)
51
34
 
52
35
  if query_methods.include?(method.to_s)
53
- @relation ||= subject.class.send(:with_exclusive_scope) do
54
- subject.class.scoped
55
- end
56
-
36
+ @relation ||= subject.class.unscoped
57
37
  @relation = @relation.send(method, *args)
58
38
  self
59
39
  else
@@ -33,27 +33,8 @@ RSpec::Matchers.define(:have_scope) do |*expected|
33
33
  end
34
34
 
35
35
  def method_missing(method, *args, &block)
36
- unsupposed_query_methods = %(
37
- create_with
38
- )
39
-
40
- query_methods = %w(
41
- eager_load
42
- from
43
- group
44
- having
45
- includes
46
- joins
47
- limit
48
- lock
49
- offset
50
- order
51
- preload
52
- readonly
53
- reorder
54
- select
55
- where
56
- )
36
+ unsupported_query_methods = %(create_with)
37
+ query_methods = %w(eager_load from group having includes joins limit lock offset order preload readonly reorder select where)
57
38
 
58
39
  if query_methods.include?(method.to_s)
59
40
  @relation ||= subject.class.scoped
@@ -13,3 +13,5 @@ require 'remockable/active_record/have_scope'
13
13
 
14
14
  require 'remockable/active_record/validate_associated'
15
15
  require 'remockable/active_record/validate_uniqueness_of'
16
+
17
+ require 'remockable/active_record/accept_nested_attributes_for'
@@ -1,3 +1,3 @@
1
1
  module Remockable
2
- VERSION = '0.0.9'
2
+ VERSION = '0.0.10'
3
3
  end
metadata CHANGED
@@ -1,107 +1,103 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: remockable
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.10
4
5
  prerelease:
5
- version: 0.0.9
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Tyler Hunt
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2011-07-12 00:00:00 -04:00
14
- default_executable:
15
- dependencies:
16
- - !ruby/object:Gem::Dependency
12
+ date: 2011-10-29 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
17
15
  name: activemodel
18
- prerelease: false
19
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &70354128603640 !ruby/object:Gem::Requirement
20
17
  none: false
21
- requirements:
18
+ requirements:
22
19
  - - ~>
23
- - !ruby/object:Gem::Version
24
- version: "3.0"
20
+ - !ruby/object:Gem::Version
21
+ version: '3.0'
25
22
  type: :runtime
26
- version_requirements: *id001
27
- - !ruby/object:Gem::Dependency
28
- name: activerecord
29
23
  prerelease: false
30
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: *70354128603640
25
+ - !ruby/object:Gem::Dependency
26
+ name: activerecord
27
+ requirement: &70354128603140 !ruby/object:Gem::Requirement
31
28
  none: false
32
- requirements:
29
+ requirements:
33
30
  - - ~>
34
- - !ruby/object:Gem::Version
35
- version: "3.0"
31
+ - !ruby/object:Gem::Version
32
+ version: '3.0'
36
33
  type: :runtime
37
- version_requirements: *id002
38
- - !ruby/object:Gem::Dependency
39
- name: activesupport
40
34
  prerelease: false
41
- requirement: &id003 !ruby/object:Gem::Requirement
35
+ version_requirements: *70354128603140
36
+ - !ruby/object:Gem::Dependency
37
+ name: activesupport
38
+ requirement: &70354128602680 !ruby/object:Gem::Requirement
42
39
  none: false
43
- requirements:
40
+ requirements:
44
41
  - - ~>
45
- - !ruby/object:Gem::Version
46
- version: "3.0"
42
+ - !ruby/object:Gem::Version
43
+ version: '3.0'
47
44
  type: :runtime
48
- version_requirements: *id003
49
- - !ruby/object:Gem::Dependency
50
- name: rspec-core
51
45
  prerelease: false
52
- requirement: &id004 !ruby/object:Gem::Requirement
46
+ version_requirements: *70354128602680
47
+ - !ruby/object:Gem::Dependency
48
+ name: rspec-core
49
+ requirement: &70354128602220 !ruby/object:Gem::Requirement
53
50
  none: false
54
- requirements:
51
+ requirements:
55
52
  - - ~>
56
- - !ruby/object:Gem::Version
57
- version: "2.0"
53
+ - !ruby/object:Gem::Version
54
+ version: '2.0'
58
55
  type: :runtime
59
- version_requirements: *id004
60
- - !ruby/object:Gem::Dependency
61
- name: rspec-expectations
62
56
  prerelease: false
63
- requirement: &id005 !ruby/object:Gem::Requirement
57
+ version_requirements: *70354128602220
58
+ - !ruby/object:Gem::Dependency
59
+ name: rspec-expectations
60
+ requirement: &70354128601760 !ruby/object:Gem::Requirement
64
61
  none: false
65
- requirements:
62
+ requirements:
66
63
  - - ~>
67
- - !ruby/object:Gem::Version
68
- version: "2.0"
64
+ - !ruby/object:Gem::Version
65
+ version: '2.0'
69
66
  type: :runtime
70
- version_requirements: *id005
71
- - !ruby/object:Gem::Dependency
72
- name: rspec-mocks
73
67
  prerelease: false
74
- requirement: &id006 !ruby/object:Gem::Requirement
68
+ version_requirements: *70354128601760
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec-mocks
71
+ requirement: &70354128601300 !ruby/object:Gem::Requirement
75
72
  none: false
76
- requirements:
73
+ requirements:
77
74
  - - ~>
78
- - !ruby/object:Gem::Version
79
- version: "2.0"
75
+ - !ruby/object:Gem::Version
76
+ version: '2.0'
80
77
  type: :development
81
- version_requirements: *id006
82
- - !ruby/object:Gem::Dependency
83
- name: sqlite3
84
78
  prerelease: false
85
- requirement: &id007 !ruby/object:Gem::Requirement
79
+ version_requirements: *70354128601300
80
+ - !ruby/object:Gem::Dependency
81
+ name: sqlite3
82
+ requirement: &70354128600840 !ruby/object:Gem::Requirement
86
83
  none: false
87
- requirements:
84
+ requirements:
88
85
  - - ~>
89
- - !ruby/object:Gem::Version
90
- version: 1.3.3
86
+ - !ruby/object:Gem::Version
87
+ version: 1.3.4
91
88
  type: :development
92
- version_requirements: *id007
89
+ prerelease: false
90
+ version_requirements: *70354128600840
93
91
  description:
94
92
  email:
95
93
  executables: []
96
-
97
94
  extensions: []
98
-
99
95
  extra_rdoc_files: []
100
-
101
- files:
96
+ files:
102
97
  - README.markdown
103
98
  - LICENSE
104
99
  - lib/remockable/active_model/allow_mass_assignment_of.rb
100
+ - lib/remockable/active_model/allow_values_for.rb
105
101
  - lib/remockable/active_model/helpers.rb
106
102
  - lib/remockable/active_model/validate_acceptance_of.rb
107
103
  - lib/remockable/active_model/validate_confirmation_of.rb
@@ -112,6 +108,7 @@ files:
112
108
  - lib/remockable/active_model/validate_numericality_of.rb
113
109
  - lib/remockable/active_model/validate_presence_of.rb
114
110
  - lib/remockable/active_model.rb
111
+ - lib/remockable/active_record/accept_nested_attributes_for.rb
115
112
  - lib/remockable/active_record/belong_to.rb
116
113
  - lib/remockable/active_record/have_and_belong_to_many.rb
117
114
  - lib/remockable/active_record/have_column.rb
@@ -127,33 +124,28 @@ files:
127
124
  - lib/remockable/helpers.rb
128
125
  - lib/remockable/version.rb
129
126
  - lib/remockable.rb
130
- has_rdoc: true
131
127
  homepage: http://github.com/tylerhunt/remockable
132
128
  licenses: []
133
-
134
129
  post_install_message:
135
130
  rdoc_options: []
136
-
137
- require_paths:
131
+ require_paths:
138
132
  - lib
139
- required_ruby_version: !ruby/object:Gem::Requirement
133
+ required_ruby_version: !ruby/object:Gem::Requirement
140
134
  none: false
141
- requirements:
142
- - - ">="
143
- - !ruby/object:Gem::Version
144
- version: "0"
145
- required_rubygems_version: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ! '>='
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ required_rubygems_version: !ruby/object:Gem::Requirement
146
140
  none: false
147
- requirements:
148
- - - ">="
149
- - !ruby/object:Gem::Version
150
- version: "0"
141
+ requirements:
142
+ - - ! '>='
143
+ - !ruby/object:Gem::Version
144
+ version: '0'
151
145
  requirements: []
152
-
153
146
  rubyforge_project:
154
- rubygems_version: 1.6.2
147
+ rubygems_version: 1.8.6
155
148
  signing_key:
156
149
  specification_version: 3
157
150
  summary: A collection of RSpec matchers to simplify your web app specs.
158
151
  test_files: []
159
-