Sha256: 51a2cbaa62be22fd8645a4a3885ae6dad8178139f8dd42600665e9d2539b1248

Contents?: true

Size: 1.38 KB

Versions: 1

Compression:

Stored size: 1.38 KB

Contents

module Html
	module Test
		class ValidateFilter
			attr_accessor :request, :response, :params, :validators
			
			include ::Test::Unit::Assertions
			include ::Html::Test::Assertions

			def initialize(controller)
				self.request = controller.request
				self.response = controller.response
				self.params = controller.params
				self.validators = controller.class.validators
			end

			def validate_page
				url = request.request_uri
				return if (!should_validate? || ValidateFilter.already_validated?(url))
#				assert_validates(validators, response.body.strip, url, :verbose => true)
				assert_validates(validators, response.body.strip, url )
				ValidateFilter.mark_url_validated(url)
			end

			def self.already_validated?(url)
				if Html::Test::Validator.revalidate_all
					false
				else
					validated_urls[url]
				end
			end

			def self.mark_url_validated(url)
				validated_urls[url] = true				
			end

			def self.validated_urls
				@validated_urls ||= {}
			end

			# Override this method if you only want to validate a subset of pages
			def should_validate?
				response.status =~ /200/ &&
					(response.headers['Content-Type'] =~ /text\/html/i || response.body =~ /<html/)
			end			

			#	Used in testing (of html_test_extension plugin)
			#	to remove the validated_urls hash
			#	so can test with the same url.
			def self.clear_validated_urls
				@validated_urls = {}
			end

		end
	end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
jakewendt-html_test-0.2.3 lib/validate_filter.rb