Module: RailsExtension::ActiveSupportExtension::TestCase::ClassMethods

Defined in:
lib/rails_extension/active_support_extension/test_case.rb

Instance Method Summary collapse

Instance Method Details

#assert_requires_complete_date(*attr_names) ⇒ Object



107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
# File 'lib/rails_extension/active_support_extension/test_case.rb', line 107

def assert_requires_complete_date(*attr_names)
	attr_names.each do |attr_name|
		test "should require a complete date for #{attr_name}" do
#
#
#	What?  No successful test?
#
#
			assert_difference( "#{model_name}.count", 0 ) do
				object = create_object( attr_name => "Sept 2010")
				assert object.errors.on_attr_and_type(attr_name,:not_complete_date)
			end
			assert_difference( "#{model_name}.count", 0 ) do
				object = create_object( attr_name => "9/2010")
				assert object.errors.on_attr_and_type(attr_name,:not_complete_date)
			end
		end
	end
end

#assert_requires_past_date(*attr_names) ⇒ Object

What? No assert_requires_absence method??? Its usually conditional so would be pretty pointless



93
94
95
96
97
98
99
100
101
102
103
104
105
# File 'lib/rails_extension/active_support_extension/test_case.rb', line 93

def assert_requires_past_date(*attr_names)
	attr_names.each do |attr_name|
		test "should require #{attr_name} be in the past" do
			#	can't assert difference of 1 as may be other errors
			object = create_object( attr_name => Chronic.parse('yesterday'))
			assert !object.errors.on_attr_and_type(attr_name,:not_past_date)
			assert_difference( "#{model_name}.count", 0 ) do
				object = create_object( attr_name => Chronic.parse('tomorrow'))
				assert object.errors.on_attr_and_type(attr_name,:not_past_date)
			end
		end
	end
end

#assert_should_act_as_list(*args) ⇒ Object



61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# File 'lib/rails_extension/active_support_extension/test_case.rb', line 61

def assert_should_act_as_list(*args)
	options = args.extract_options!
	scope = options[:scope]

	test "#{brand}should act as list" do
		model = create_object.class.name
		model.constantize.destroy_all
		object = create_object
		assert_equal 1, object.position
		attrs = {}
		Array(scope).each do |attr|
			attrs[attr.to_sym] = object.send(attr)
		end if scope
		object = create_object(attrs)
		assert_equal 2, object.position

		# gotta be a relative test as there may already
		# by existing objects (unless I destroy them)
		assert_difference("#{model}.last.position",1) do
			create_object(attrs)
		end
	end

end

#st_model_nameObject

I don’t like this quick and dirty name



37
38
39
# File 'lib/rails_extension/active_support_extension/test_case.rb', line 37

def st_model_name
	self.name.demodulize.sub(/Test$/,'')
end

#test_with_verbosity(name, &block) ⇒ Object



41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/rails_extension/active_support_extension/test_case.rb', line 41

def test_with_verbosity(name,&block)
	test_without_verbosity(name,&block)

	test_name = "test_#{name.gsub(/\s+/,'_')}".to_sym
	define_method("_#{test_name}_with_verbosity") do
		print "\n#{self.class.name.gsub(/Test$/,'').titleize} #{name}: "
		send("_#{test_name}_without_verbosity")
	end
	#
	#	can't do this.  
	#		alias_method_chain test_name, :verbosity
	#	end up with 2 methods that begin
	#	with 'test_' so they both get run
	#
	alias_method "_#{test_name}_without_verbosity".to_sym,
		test_name
	alias_method test_name,
		"_#{test_name}_with_verbosity".to_sym
end