jakewendt-simply_testable 1.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.
@@ -0,0 +1,57 @@
1
+ module SimplyTestable::Declarative
2
+
3
+ def self.included(base)
4
+ base.extend ClassMethods
5
+ base.class_eval do
6
+ class << self
7
+ alias_method_chain :test, :verbosity
8
+ end
9
+ end
10
+ end
11
+
12
+ module ClassMethods
13
+
14
+ def test_with_verbosity(name,&block)
15
+ test_without_verbosity(name,&block)
16
+
17
+ test_name = "test_#{name.gsub(/\s+/,'_')}".to_sym
18
+ define_method("_#{test_name}_with_verbosity") do
19
+ print "\n#{self.class.name.gsub(/Test$/,'').titleize} #{name}: "
20
+ send("_#{test_name}_without_verbosity")
21
+ end
22
+ #
23
+ # can't do this.
24
+ # alias_method_chain test_name, :verbosity
25
+ # end up with 2 methods that begin
26
+ # with 'test_' so they both get run
27
+ #
28
+ alias_method "_#{test_name}_without_verbosity".to_sym,
29
+ test_name
30
+ alias_method test_name,
31
+ "_#{test_name}_with_verbosity".to_sym
32
+ end
33
+
34
+ end # ClassMethods
35
+
36
+ end
37
+ require 'active_support'
38
+ require 'active_support/test_case'
39
+ ActiveSupport::TestCase.send(:include,SimplyTestable::Declarative)
40
+
41
+ Rails.backtrace_cleaner.add_silencer {|line|
42
+ # line =~ /\/test\/.*\.\.\/declarative\.rb:/
43
+ # Due to my modification, every error is accompanied by
44
+ # 3 additional and unnecessary lines like ...
45
+ # /test/functional/../declarative.rb:21:in `_test_should_change_locale_to_es_without_verbosity'
46
+ #/test/functional/../declarative.rb:21:in `send'
47
+ #/test/functional/../declarative.rb:21:in `_test_should_change_locale_to_es_with_verbosity']:
48
+ #
49
+ # in rvm/jruby the error is passing through
50
+ # test/declarative.rb:21:in `_test_should_NOT_create_new_user_if_invitation_update_fails_with_verbosity']:
51
+
52
+ # /Users/jakewendt/github_repo/jakewendt/ucb_ccls_clic/vendor/plugins/ucb_ccls_engine/rails/../test/helpers/declarative.rb:21:in `_test_AWiHTTP_should_get_show_with_admin_login_with_verbosity'
53
+
54
+ # This doesn't seem to work at all in the plugin engine.
55
+ # line =~ /test.*\/declarative\.rb:/
56
+ line =~ /simply_testable\/declarative\.rb:/
57
+ } if defined? Rails
@@ -0,0 +1,14 @@
1
+ module SimplyTestable::Errors
2
+ def self.included(base)
3
+ base.send(:include,InstanceMethods)
4
+ end
5
+ module InstanceMethods
6
+ def on_attr_and_type(attribute,type)
7
+ attribute = attribute.to_s
8
+ return nil unless @errors.has_key?(attribute)
9
+ @errors[attribute].collect(&:type).include?(type)
10
+ end
11
+ end
12
+ end # SimplyTestable::Errors
13
+ ActiveRecord::Errors.send(:include,
14
+ SimplyTestable::Errors)
@@ -0,0 +1,73 @@
1
+ # Some code from jeremymcanally's "pending"
2
+ # http://github.com/jeremymcanally/pending/tree/master
3
+
4
+ module ActiveSupport
5
+ module Testing
6
+ module Pending
7
+
8
+ unless defined?(Spec)
9
+
10
+ @@pending_cases = []
11
+ @@at_exit = false
12
+
13
+ def pending(description = "", &block)
14
+ if description.is_a?(Symbol)
15
+ is_pending = $tags[description]
16
+ return block.call unless is_pending
17
+ end
18
+
19
+ if block_given?
20
+ failed = false
21
+
22
+ begin
23
+ block.call
24
+ rescue Exception
25
+ failed = true
26
+ end
27
+
28
+ flunk("<#{description}> did not fail.") unless failed
29
+ end
30
+
31
+ caller[0] =~ (/(.*):(.*):in `(.*)'/)
32
+ #puts caller.inspect
33
+
34
+ # looks like we lose the name of the 'method' in 1.9.1
35
+ #"/Users/jakewendt/github_repo/jakewendt/ucb_ccls_homex/test/unit/subject_test.rb:145:in `block in <class:SubjectTest>'",
36
+
37
+ # @@pending_cases << "#{$3} at #{$1}, line #{$2}"
38
+ # Gotta remember these as the next Regex will overwrite them.
39
+ filename = $1
40
+ linenumber = $2
41
+ # ruby 1.8.7
42
+ # Hx/Addresses Controller should NOT create new address with employee login and invalid address:
43
+ # ruby 1.9.1
44
+ #Hx/Addresses Controller block (2 levels) in <class:AddressesControllerTest>:
45
+ testmethod = $3
46
+
47
+ model = self.class.to_s.gsub(/Test$/,'').titleize
48
+ method = testmethod.gsub(/_/,' ').gsub(/^test /,'')
49
+ @@pending_cases << "#{model} #{method}:\n.\t#{filename} line #{linenumber}"
50
+ # @@pending_cases << "#{testmethod} at #{filename}, line #{linenumber}"
51
+ print "P"
52
+
53
+ @@at_exit ||= begin
54
+ at_exit do
55
+ # For some reason, special characters don't always
56
+ # print the way you would expect. Leading white space (tabs)
57
+ # and some carriage returns just weren't happening?
58
+ # Is this at_exit doing some parsing??
59
+ puts "\nPending Cases:"
60
+ @@pending_cases.each do |test_case|
61
+ puts test_case
62
+ end
63
+ puts " \n"
64
+ end
65
+ end
66
+ end
67
+ end
68
+
69
+ end
70
+ end
71
+ end
72
+ require 'active_support/test_case'
73
+ ActiveSupport::TestCase.send(:include, ActiveSupport::Testing::Pending)
@@ -0,0 +1,65 @@
1
+ module SimplyTestable::TestCase
2
+
3
+ def self.included(base)
4
+ base.extend(ClassMethods)
5
+ base.send(:include, InstanceMethods)
6
+ base.class_eval do
7
+ # class << self
8
+ alias_method_chain :method_missing, :create_object
9
+ # end
10
+ end
11
+ end
12
+
13
+ module ClassMethods
14
+
15
+ # I don't like this quick and dirty name
16
+ def st_model_name
17
+ self.name.demodulize.sub(/Test$/,'')
18
+ end
19
+
20
+ end
21
+
22
+ module InstanceMethods
23
+
24
+ def model_name
25
+ # self.class.name.sub(/Test$/,'')
26
+ # self.class.name.demodulize.sub(/Test$/,'')
27
+ self.class.st_model_name
28
+ end
29
+
30
+ def method_missing_with_create_object(symb,*args, &block)
31
+ method = symb.to_s
32
+ # if method =~ /^create_(.+)(\!?)$/
33
+ if method =~ /^create_([^!]+)(!?)$/
34
+ factory = if( $1 == 'object' )
35
+ # doesn't work for controllers yet. Need to consider
36
+ # singular and plural as well as "tests" method.
37
+ # Probably should just use the explicit factory
38
+ # name in the controller tests.
39
+ # self.class.name.sub(/Test$/,'').underscore
40
+ model_name.underscore
41
+ else
42
+ $1
43
+ end
44
+ bang = $2
45
+ options = args.extract_options!
46
+ if bang.blank?
47
+ record = Factory.build(factory,options)
48
+ record.attributes = options # occassionally needed (study_subject_id)
49
+ record.save
50
+ record
51
+ else
52
+ Factory(factory,options)
53
+ end
54
+ else
55
+ # super(symb,*args, &block)
56
+ method_missing_without_create_object(symb,*args, &block)
57
+ end
58
+ end
59
+
60
+ end # InstanceMethods
61
+ end # SimplyTestable::TestCase
62
+ require 'active_support'
63
+ require 'active_support/test_case'
64
+ ActiveSupport::TestCase.send(:include,
65
+ SimplyTestable::TestCase)
metadata ADDED
@@ -0,0 +1,102 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: jakewendt-simply_testable
3
+ version: !ruby/object:Gem::Version
4
+ hash: 15
5
+ prerelease:
6
+ segments:
7
+ - 1
8
+ - 6
9
+ - 0
10
+ version: 1.6.0
11
+ platform: ruby
12
+ authors:
13
+ - Jake
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-02-10 00:00:00 -08:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: ssl_requirement
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 27
30
+ segments:
31
+ - 0
32
+ - 1
33
+ - 0
34
+ version: 0.1.0
35
+ type: :runtime
36
+ version_requirements: *id001
37
+ description: longer description of your gem
38
+ email: github@jake.otherinbox.com
39
+ executables: []
40
+
41
+ extensions: []
42
+
43
+ extra_rdoc_files:
44
+ - LICENSE
45
+ - README.rdoc
46
+ files:
47
+ - generators/simply_testable/USAGE
48
+ - generators/simply_testable/simply_testable_generator.rb
49
+ - lib/jakewendt-simply_testable.rb
50
+ - lib/simply_testable.rb
51
+ - lib/simply_testable/action_controller_extension.rb
52
+ - lib/simply_testable/action_controller_extension/accessible_via_format.rb
53
+ - lib/simply_testable/action_controller_extension/accessible_via_protocol.rb
54
+ - lib/simply_testable/action_controller_extension/accessible_via_user.rb
55
+ - lib/simply_testable/action_controller_extension/routing.rb
56
+ - lib/simply_testable/action_controller_extension/test_case.rb
57
+ - lib/simply_testable/acts_as_list.rb
58
+ - lib/simply_testable/assertions.rb
59
+ - lib/simply_testable/associations.rb
60
+ - lib/simply_testable/attributes.rb
61
+ - lib/simply_testable/declarative.rb
62
+ - lib/simply_testable/errors.rb
63
+ - lib/simply_testable/pending.rb
64
+ - lib/simply_testable/test_case.rb
65
+ - LICENSE
66
+ - README.rdoc
67
+ has_rdoc: true
68
+ homepage: http://github.com/jakewendt/simply_testable
69
+ licenses: []
70
+
71
+ post_install_message:
72
+ rdoc_options: []
73
+
74
+ require_paths:
75
+ - lib
76
+ required_ruby_version: !ruby/object:Gem::Requirement
77
+ none: false
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ hash: 3
82
+ segments:
83
+ - 0
84
+ version: "0"
85
+ required_rubygems_version: !ruby/object:Gem::Requirement
86
+ none: false
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ hash: 3
91
+ segments:
92
+ - 0
93
+ version: "0"
94
+ requirements: []
95
+
96
+ rubyforge_project:
97
+ rubygems_version: 1.5.0
98
+ signing_key:
99
+ specification_version: 3
100
+ summary: one-line summary of your gem
101
+ test_files: []
102
+