stratagem 0.2.0 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (81) hide show
  1. data/LICENSE +29 -0
  2. data/Manifest +40 -38
  3. data/Rakefile +3 -3
  4. data/lib/stratagem.rb +22 -7
  5. data/lib/stratagem/authentication.rb +2 -1
  6. data/lib/stratagem/auto_mock/aquifer.rb +88 -15
  7. data/lib/stratagem/auto_mock/factory.rb +19 -30
  8. data/lib/stratagem/auto_mock/value_generator.rb +3 -1
  9. data/lib/stratagem/client.rb +3 -2
  10. data/lib/stratagem/crawler/authentication.rb +10 -3
  11. data/lib/stratagem/crawler/form.rb +2 -2
  12. data/lib/stratagem/crawler/html_utils.rb +12 -1
  13. data/lib/stratagem/crawler/parameter_resolver.rb +18 -4
  14. data/lib/stratagem/crawler/route_invoker.rb +58 -16
  15. data/lib/stratagem/crawler/session.rb +13 -5
  16. data/lib/stratagem/crawler/site_model.rb +20 -8
  17. data/lib/stratagem/extensions/object.rb +2 -2
  18. data/lib/stratagem/extensions/string.rb +2 -2
  19. data/lib/stratagem/instrumentation.rb +18 -0
  20. data/lib/stratagem/{framework_extensions → instrumentation}/method_invocation.rb +1 -1
  21. data/lib/stratagem/instrumentation/models.rb +25 -0
  22. data/lib/stratagem/instrumentation/models/annotations.rb +114 -0
  23. data/lib/stratagem/instrumentation/models/association.rb +40 -0
  24. data/lib/stratagem/instrumentation/models/authentication.rb +7 -0
  25. data/lib/stratagem/{framework_extensions/models/adapters → instrumentation/models/authentication}/authlogic/detect.rb +2 -2
  26. data/lib/stratagem/instrumentation/models/authentication/authlogic/instrumentation.rb +13 -0
  27. data/lib/stratagem/{framework_extensions/models/adapters → instrumentation/models/authentication}/authlogic/metadata.rb +1 -3
  28. data/lib/stratagem/instrumentation/models/authentication/devise/detect.rb +11 -0
  29. data/lib/stratagem/instrumentation/models/authentication/devise/instrumentation.rb +18 -0
  30. data/lib/stratagem/{framework_extensions/models/adapters → instrumentation/models/authentication}/devise/metadata.rb +7 -3
  31. data/lib/stratagem/{framework_extensions/models/adapters/util/authentication_metadata.rb → instrumentation/models/authentication/metadata.rb} +2 -2
  32. data/lib/stratagem/{framework_extensions/models/adapters → instrumentation/models/authentication}/restful_authentication/detect.rb +2 -4
  33. data/lib/stratagem/{framework_extensions/models/adapters/restful_authentication/extensions.rb → instrumentation/models/authentication/restful_authentication/instrumentation.rb} +1 -1
  34. data/lib/stratagem/{framework_extensions/models/adapters → instrumentation/models/authentication}/restful_authentication/metadata.rb +2 -2
  35. data/lib/stratagem/{framework_extensions → instrumentation}/models/detect.rb +1 -1
  36. data/lib/stratagem/{framework_extensions → instrumentation}/models/metadata.rb +6 -4
  37. data/lib/stratagem/{framework_extensions → instrumentation}/models/mocking.rb +1 -1
  38. data/lib/stratagem/instrumentation/models/persistence.rb +9 -0
  39. data/lib/stratagem/instrumentation/models/persistence/active_record/detect.rb +18 -0
  40. data/lib/stratagem/{framework_extensions/models/adapters → instrumentation/models/persistence}/active_record/extensions.rb +5 -1
  41. data/lib/stratagem/{framework_extensions/models/adapters → instrumentation/models/persistence}/active_record/metadata.rb +25 -9
  42. data/lib/stratagem/{framework_extensions/models/adapters → instrumentation/models/persistence}/active_record/tracing.rb +4 -2
  43. data/lib/stratagem/instrumentation/models/persistence/common/detect.rb +7 -0
  44. data/lib/stratagem/{framework_extensions/models/adapters → instrumentation/models/persistence}/common/extensions.rb +0 -0
  45. data/lib/stratagem/{framework_extensions/models/adapters → instrumentation/models/persistence}/common/metadata.rb +6 -2
  46. data/lib/stratagem/instrumentation/models/persistence/common/tracing.rb +4 -0
  47. data/lib/stratagem/instrumentation/models/support_libraries.rb +7 -0
  48. data/lib/stratagem/{framework_extensions/models/adapters → instrumentation/models/support_libraries}/friendly_id/detect.rb +2 -2
  49. data/lib/stratagem/{framework_extensions/models/adapters → instrumentation/models/support_libraries}/friendly_id/metadata.rb +2 -2
  50. data/lib/stratagem/instrumentation/models/support_libraries/state_machine/detect.rb +11 -0
  51. data/lib/stratagem/instrumentation/models/support_libraries/state_machine/metadata.rb +17 -0
  52. data/lib/stratagem/{framework_extensions → instrumentation}/models/tracing.rb +2 -2
  53. data/lib/stratagem/{framework_extensions → instrumentation}/rails.rb +0 -0
  54. data/lib/stratagem/{framework_extensions → instrumentation}/rails2/action_controller.rb +0 -0
  55. data/lib/stratagem/{framework_extensions → instrumentation}/rails2/action_mailer.rb +0 -0
  56. data/lib/stratagem/{framework_extensions → instrumentation}/rails3/parameters.rb +0 -0
  57. data/lib/stratagem/{framework_extensions → instrumentation}/request_forgery_protection.rb +0 -0
  58. data/lib/stratagem/model/application.rb +30 -15
  59. data/lib/stratagem/model/components/controller.rb +2 -2
  60. data/lib/stratagem/model/components/reference.rb +2 -2
  61. data/lib/stratagem/model/components/view.rb +1 -1
  62. data/lib/stratagem/model_builder.rb +19 -8
  63. data/lib/stratagem/scanner.rb +1 -1
  64. data/lib/stratagem/site_crawler.rb +4 -2
  65. data/stratagem.gemspec +7 -7
  66. data/templates/install/tasks/stratagem.rake +9 -1
  67. metadata +86 -82
  68. data/lib/stratagem/framework_extensions.rb +0 -18
  69. data/lib/stratagem/framework_extensions/models.rb +0 -21
  70. data/lib/stratagem/framework_extensions/models/adapters/active_record/detect.rb +0 -7
  71. data/lib/stratagem/framework_extensions/models/adapters/authlogic/extensions.rb +0 -10
  72. data/lib/stratagem/framework_extensions/models/adapters/authlogic/tracing.rb +0 -4
  73. data/lib/stratagem/framework_extensions/models/adapters/common/detect.rb +0 -7
  74. data/lib/stratagem/framework_extensions/models/adapters/common/tracing.rb +0 -4
  75. data/lib/stratagem/framework_extensions/models/adapters/devise/detect.rb +0 -11
  76. data/lib/stratagem/framework_extensions/models/adapters/devise/extensions.rb +0 -0
  77. data/lib/stratagem/framework_extensions/models/adapters/devise/tracing.rb +0 -4
  78. data/lib/stratagem/framework_extensions/models/adapters/friendly_id/extensions.rb +0 -0
  79. data/lib/stratagem/framework_extensions/models/adapters/friendly_id/tracing.rb +0 -4
  80. data/lib/stratagem/framework_extensions/models/adapters/restful_authentication/tracing.rb +0 -4
  81. data/lib/stratagem/framework_extensions/models/annotations.rb +0 -78
@@ -1,18 +0,0 @@
1
- module Stratagem::ApplicationExtensions; end
2
-
3
- require 'stratagem/framework_extensions/rails'
4
- require 'stratagem/framework_extensions/method_invocation'
5
- require 'stratagem/framework_extensions/models'
6
- require 'stratagem/framework_extensions/request_forgery_protection'
7
-
8
- if (Stratagem.rails_3?)
9
- require 'stratagem/framework_extensions/rails3/parameters'
10
- elsif (Stratagem.rails_2?)
11
- require 'stratagem/framework_extensions/rails2/action_controller'
12
- require 'stratagem/framework_extensions/rails2/action_mailer'
13
- else
14
- raise "Unsupported Rails version #{Stratagem.rails_version}"
15
- end
16
-
17
-
18
-
@@ -1,21 +0,0 @@
1
- module Stratagem::ApplicationExtensions::Models; end
2
- module Stratagem::ApplicationExtensions::Models::Adapters; end
3
-
4
- require 'stratagem/framework_extensions/models/mocking'
5
- require 'stratagem/framework_extensions/models/metadata'
6
- require 'stratagem/framework_extensions/models/tracing'
7
- require 'stratagem/framework_extensions/models/annotations'
8
- require 'stratagem/framework_extensions/models/detect'
9
-
10
- base = File.join(File.dirname(__FILE__), 'models', 'adapters', 'util')
11
- Dir.entries(base).select {|s| s =~ /\.rb$/}.each {|helper|
12
- require File.join(base, helper.gsub(/\.rb/, ''))
13
- }
14
-
15
- base = File.join(File.dirname(__FILE__), 'models', 'adapters')
16
- Dir.entries(base).select {|s| s !~ /^\./ && s != 'util' }.each {|adapter_dir|
17
- require File.join(base, adapter_dir, 'detect')
18
- require File.join(base, adapter_dir, 'tracing')
19
- require File.join(base, adapter_dir, 'metadata')
20
- require File.join(base, adapter_dir, 'extensions')
21
- }
@@ -1,7 +0,0 @@
1
- module Stratagem::ApplicationExtensions::Models::Adapters::ActiveRecord
2
- class Detect < Stratagem::ApplicationExtensions::Models::Detect
3
- def self.supports?(model)
4
- model.ancestors.include?(ActiveRecord::Base)
5
- end
6
- end
7
- end
@@ -1,10 +0,0 @@
1
- if defined?(Authlogic)
2
- module Authlogic::ActsAsAuthentic::MagicColumns::Methods
3
- def self.included(model)
4
- # automatically activate the account
5
- model.class_eval do
6
- before_save { |record| record.active = true if record.methods_include?(:active) }
7
- end
8
- end
9
- end
10
- end
@@ -1,4 +0,0 @@
1
- module Stratagem::ApplicationExtensions::Models::Adapters::Authlogic
2
- module Tracing
3
- end
4
- end
@@ -1,7 +0,0 @@
1
- module Stratagem::ApplicationExtensions::Models::Adapters::Common
2
- class Detect < Stratagem::ApplicationExtensions::Models::Detect
3
- def self.supports?(model)
4
- true
5
- end
6
- end
7
- end
@@ -1,4 +0,0 @@
1
- module Stratagem::ApplicationExtensions::Models::Adapters::Common
2
- module Tracing
3
- end
4
- end
@@ -1,11 +0,0 @@
1
- module Stratagem::ApplicationExtensions::Models::Adapters::Devise
2
- class Detect < Stratagem::ApplicationExtensions::Models::Detect
3
- def self.supports?(model)
4
- begin
5
- model.methods.include?(:devise_modules)
6
- rescue
7
- false
8
- end
9
- end
10
- end
11
- end
@@ -1,4 +0,0 @@
1
- module Stratagem::ApplicationExtensions::Models::Adapters::Devise
2
- module Tracing
3
- end
4
- end
@@ -1,4 +0,0 @@
1
- module Stratagem::ApplicationExtensions::Models::Adapters::FriendlyId
2
- module Tracing
3
- end
4
- end
@@ -1,4 +0,0 @@
1
- module Stratagem::ApplicationExtensions::Models::Adapters::RestfulAuthentication
2
- module Tracing
3
- end
4
- end
@@ -1,78 +0,0 @@
1
- # Defines the stratagem namespace attached to the model
2
- module Stratagem::ApplicationExtensions::Models
3
- ValidatorDefinition = Struct.new(:validation, :field, :args, :model_class)
4
-
5
- class InstanceAnnotations
6
- include Mocking
7
-
8
- def initialize(object)
9
- @object = object
10
- end
11
-
12
- def method_missing(method, *args, &block)
13
- @object.class.stratagem.send(method, *args, &block)
14
- end
15
- end
16
-
17
- class Annotations
18
- include Metadata
19
- include Tracing
20
-
21
- attr_reader :model
22
-
23
- AdapterDescriptor = Struct.new(:tracing, :metadata, :detector)
24
-
25
- class << self
26
- def configure(model)
27
- puts "configuring #{model.name}"
28
-
29
- # add the stratagem namespace
30
- model.class_eval do
31
- def self.stratagem
32
- # one stratagem instance per subclass
33
- @@stratagem ||= {}
34
- @@stratagem[self] ||= Stratagem::ApplicationExtensions::Models::Annotations.new(self)
35
- end
36
-
37
-
38
- def stratagem
39
- @stratagem ||= Stratagem::ApplicationExtensions::Models::InstanceAnnotations.new(self)
40
- end
41
- end
42
-
43
- # connect the adapters
44
- detect_adapters(model).each {|adapter|
45
- if adapter.detector.supports?(model)
46
- model.send(:include, adapter.tracing)
47
- end
48
- }
49
- end
50
-
51
- def detect_adapters(model)
52
- Detect.subclasses.map do |detector|
53
- namespace = detector.name.split('::')
54
- namespace.pop
55
- namespace = namespace.join('::')
56
-
57
- tracing = module_eval(namespace+"::Tracing")
58
- metadata = module_eval(namespace+"::Metadata").new(model)
59
-
60
- AdapterDescriptor.new(tracing, metadata, detector)
61
- end
62
- end
63
- end
64
-
65
- def initialize(model)
66
- puts "initializing stratagem for #{model.name}"
67
- @model = model
68
- end
69
-
70
- def adapters
71
- # supported adapters may change throughout the lifecycle of a class / object
72
- @adapters ||= self.class.detect_adapters(model)
73
- end
74
-
75
-
76
- end
77
-
78
- end