caricature 0.5.0 → 0.6.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 (51) hide show
  1. data/VERSION +1 -1
  2. data/caricature.gemspec +5 -2
  3. data/doc/Array.html +2 -2
  4. data/doc/Caricature/ArgumentRecording.html +4 -4
  5. data/doc/Caricature/ClrClassMessenger.html +22 -22
  6. data/doc/Caricature/ClrInterfaceMessenger.html +19 -19
  7. data/doc/Caricature/ClrIsolator.html +1 -1
  8. data/doc/Caricature/Expectation.html +12 -12
  9. data/doc/Caricature/ExpectationBuilder.html +6 -6
  10. data/doc/Caricature/ExpectationSyntax.html +10 -10
  11. data/doc/Caricature/Expectations.html +19 -16
  12. data/doc/Caricature/Interception/ClassMethods.html +120 -2
  13. data/doc/Caricature/Interception.html +130 -12
  14. data/doc/Caricature/Isolation.html +207 -22
  15. data/doc/Caricature/Isolator.html +18 -18
  16. data/doc/Caricature/Messenger.html +87 -9
  17. data/doc/Caricature/MethodCallRecorder.html +20 -56
  18. data/doc/Caricature/MethodCallRecording.html +10 -10
  19. data/doc/Caricature/RubyIsolator.html +13 -13
  20. data/doc/Caricature/RubyMessenger.html +24 -23
  21. data/doc/Caricature/RubyObjectDescriptor.html +4 -4
  22. data/doc/Caricature/TypeDescriptor.html +4 -4
  23. data/doc/Caricature/Verification.html +16 -16
  24. data/doc/Caricature.html +2 -2
  25. data/doc/Class.html +4 -4
  26. data/doc/Hash.html +2 -2
  27. data/doc/Module.html +4 -4
  28. data/doc/Object.html +6 -6
  29. data/doc/String.html +4 -4
  30. data/doc/System/String.html +4 -4
  31. data/doc/System/Type.html +4 -4
  32. data/doc/created.rid +1 -1
  33. data/doc/index.html +102 -82
  34. data/doc/lib/caricature/clr/isolator_rb.html +1 -1
  35. data/doc/lib/caricature/clr/messenger_rb.html +1 -1
  36. data/doc/lib/caricature/clr_rb.html +1 -1
  37. data/doc/lib/caricature/expectation_rb.html +1 -1
  38. data/doc/lib/caricature/isolation_rb.html +1 -1
  39. data/doc/lib/caricature/isolator_rb.html +1 -1
  40. data/doc/lib/caricature/messenger_rb.html +52 -0
  41. data/doc/lib/caricature/method_call_recorder_rb.html +1 -1
  42. data/doc/lib/caricature/verification_rb.html +1 -1
  43. data/doc/lib/caricature_rb.html +1 -1
  44. data/lib/caricature/clr/aspnet_mvc.rb +51 -0
  45. data/lib/caricature/clr/isolator.rb +2 -1
  46. data/lib/caricature/expectation.rb +4 -3
  47. data/lib/caricature/method_call_recorder.rb +2 -2
  48. data/lib/caricature/verification.rb +1 -1
  49. data/pkg/caricature-0.5.0.gem +0 -0
  50. data/spec/isolator_spec.rb +7 -1
  51. metadata +5 -2
@@ -24,7 +24,7 @@
24
24
  <div id="metadata">
25
25
  <dl>
26
26
  <dt class="modified-date">Last Modified</dt>
27
- <dd class="modified-date">Sat May 16 00:22:26 +0200 2009</dd>
27
+ <dd class="modified-date">Tue May 19 14:10:02 +0200 2009</dd>
28
28
 
29
29
 
30
30
  <dt class="requires">Requires</dt>
@@ -24,7 +24,7 @@
24
24
  <div id="metadata">
25
25
  <dl>
26
26
  <dt class="modified-date">Last Modified</dt>
27
- <dd class="modified-date">Mon May 18 14:57:22 +0200 2009</dd>
27
+ <dd class="modified-date">Tue May 19 13:59:00 +0200 2009</dd>
28
28
 
29
29
 
30
30
  <dt class="requires">Requires</dt>
@@ -0,0 +1,51 @@
1
+ load_assembly 'System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'
2
+ load_assembly 'System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'
3
+ load_assembly 'System.Web.Abstractions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'
4
+
5
+ class String
6
+
7
+ def to_url_filename
8
+ return self.gsub(/\?.*/, '') if self =~ /\?/
9
+ self
10
+ end
11
+
12
+ def to_qs_parameters
13
+ if self =~ /\?/
14
+ parameters = NameValueCollection.new
15
+ self.split('?')[1].split("&").each do |pair|
16
+ parts = pair.split('=')
17
+ parameters.add pair.first, pair.last
18
+ end
19
+ return parameters
20
+ end
21
+ nil
22
+ end
23
+
24
+ end
25
+
26
+ def http_context_isolation(url="")
27
+
28
+ context = Caricature::Isolation.for(HttpContextBase)
29
+ request = Caricature::Isolation.for(HttpRequestBase)
30
+ response = Caricature::Isolation.for(HttpResponseBase)
31
+ session = Caricature::Isolation.for(HttpSessionStateBase)
32
+ server = Caricature::Isolation.for(HttpServerUtilityBase)
33
+
34
+ context.when_receiving(:request).return(request)
35
+ context.when_receiving(:response).return(response)
36
+ context.when_receiving(:session).return(session)
37
+ context.when_receiving(:server).return(server)
38
+
39
+ setup_request_url(context.request, url) unless url.nil? or url.empty?
40
+
41
+ context
42
+ end
43
+
44
+ def setup_request_url(request, url)
45
+ raise ArgumentError.new("url should not be nil") if url.nil? or url.empty?
46
+ raise ArgumentError.new("we expect a url to start with '~/'.") unless url =~ /^~\//
47
+
48
+ request.when_receiving(:query_string).return(url.to_s.to_qs_parameters)
49
+ request.when_receiving(:app_relative_current_execution_file_path).return(url.to_s.to_url_filename)
50
+ request.when_receiving(:path_info).return("")
51
+ end
@@ -18,7 +18,8 @@ module Caricature
18
18
  instance = context.subject
19
19
  end
20
20
  @descriptor = ClrClassDescriptor.new sklass
21
- build_isolation sklass, (instance || sklass.new)
21
+ instance ||= sklass.new unless sklass.to_clr_type.is_abstract
22
+ build_isolation sklass, instance
22
23
  end
23
24
 
24
25
  # initializes the messaging strategy for the isolator
@@ -24,7 +24,7 @@ module Caricature
24
24
  def find(method_name, mode=:instance, *args)
25
25
  expectations = mode == :class ? @class_expectations : @instance_expectations
26
26
  candidates = expectations.select { |exp| exp.method_name.to_s.to_sym == method_name.to_s.to_sym }
27
- is_single = args.empty? || args.first == :any || (candidates.size == 1 && candidates.first.any_args?)
27
+ is_single = args.empty? || (args.first.is_a?(Symbol) and args.first == :any) || (candidates.size == 1 && candidates.first.any_args?)
28
28
  return candidates.first if is_single
29
29
 
30
30
  second_pass = candidates.select {|exp| exp.args == args }
@@ -40,7 +40,7 @@ module Caricature
40
40
  # there is a magic argument here +any+ which configures
41
41
  # the expectation to respond to any arguments
42
42
  def with(*args)
43
- @any_args = false unless args.first == :any
43
+ @any_args = args.first.is_a?(Symbol) and args.first == :any
44
44
  @args = args
45
45
  self
46
46
  end
@@ -54,6 +54,7 @@ module Caricature
54
54
  end
55
55
 
56
56
  # tell the expectation it needs to raise an error with the specified arguments
57
+ alias_method :actual_raise, :raise
57
58
  def raise(*args)
58
59
  @error_args = args
59
60
  self
@@ -127,7 +128,7 @@ module Caricature
127
128
  # executes this expectation with its configuration
128
129
  def execute(*margs)
129
130
  ags = any_args? ? (margs.empty? ? :any : margs) : args
130
- raise *@error_args if has_error_args?
131
+ actual_raise *@error_args if has_error_args?
131
132
  return return_value if has_return_value?
132
133
  nil
133
134
  end
@@ -28,7 +28,7 @@ module Caricature
28
28
  # Also takes an array as an argument
29
29
  def ==(other)
30
30
  other = self.class.new(other) if other.respond_to?(:each)
31
- return true if other.args.first == :any
31
+ return true if other.args.first.is_a?(Symbol) and other.args.first == :any
32
32
  other.args == args
33
33
  end
34
34
  end
@@ -77,7 +77,7 @@ module Caricature
77
77
 
78
78
  # finds an argument variation that matches the provided +args+
79
79
  def find_argument_variations(args)
80
- return @variations if args.first == :any
80
+ return @variations if args.first.is_a?(Symbol) and args.first == :any
81
81
  @variations.select { |ar| ar.args == args }
82
82
  end
83
83
  end
@@ -16,7 +16,7 @@ module Caricature
16
16
 
17
17
  # constrain this verification to the provided arguments
18
18
  def with(*args)
19
- @any_args = false unless args.first == :any
19
+ @any_args = args.first.is_a?(Symbol) and args.first == :any
20
20
  @args = args
21
21
  self
22
22
  end
Binary file
@@ -6,7 +6,13 @@ class TestIsolation
6
6
  @instance, @expectations = instance, expectations
7
7
  end
8
8
  def send_message(method_name, return_type, *args, &b)
9
- exp = expectations.find(method_name, *args)
9
+ internal_send method_name, :internal, return_type, *args, &b
10
+ end
11
+ def send_class_message(method_name, return_type, *args, &b)
12
+ internal_send method_name, :class, return_type, *args, &b
13
+ end
14
+ def internal_send(method_name, mode, return_type, *args, &b)
15
+ exp = expectations.find(method_name, mode, *args)
10
16
  if exp
11
17
  res = instance.__send__(method_name, *args, &b) if exp.super_before?
12
18
  res = exp.execute(*args)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: caricature
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ivan Porto Carrero
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-05-19 00:00:00 +02:00
12
+ date: 2009-05-21 00:00:00 +02:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
@@ -98,6 +98,7 @@ files:
98
98
  - doc/lib/caricature/isolation_rb.html
99
99
  - doc/lib/caricature/isolator_rb.html
100
100
  - doc/lib/caricature/messaging_rb.html
101
+ - doc/lib/caricature/messenger_rb.html
101
102
  - doc/lib/caricature/method_call_recorder_rb.html
102
103
  - doc/lib/caricature/verification_rb.html
103
104
  - doc/lib/caricature_rb.html
@@ -116,6 +117,7 @@ files:
116
117
  - lib/bin/Workarounds.pdb
117
118
  - lib/caricature.rb
118
119
  - lib/caricature/clr.rb
120
+ - lib/caricature/clr/aspnet_mvc.rb
119
121
  - lib/caricature/clr/descriptor.rb
120
122
  - lib/caricature/clr/isolation.rb
121
123
  - lib/caricature/clr/isolator.rb
@@ -138,6 +140,7 @@ files:
138
140
  - lib/core_ext/system/type.rb
139
141
  - pkg/.gitignore
140
142
  - pkg/caricature-0.1.0.gem
143
+ - pkg/caricature-0.5.0.gem
141
144
  - spec/bacon_helper.rb
142
145
  - spec/bin/.gitignore
143
146
  - spec/core_ext_spec.rb