aboutsummaryrefslogtreecommitdiffstats
path: root/lib/strip_attributes/test
diff options
context:
space:
mode:
Diffstat (limited to 'lib/strip_attributes/test')
-rw-r--r--lib/strip_attributes/test/strip_attributes_test.rb90
-rw-r--r--lib/strip_attributes/test/test_helper.rb20
2 files changed, 110 insertions, 0 deletions
diff --git a/lib/strip_attributes/test/strip_attributes_test.rb b/lib/strip_attributes/test/strip_attributes_test.rb
new file mode 100644
index 000000000..8158dc664
--- /dev/null
+++ b/lib/strip_attributes/test/strip_attributes_test.rb
@@ -0,0 +1,90 @@
+require "#{File.dirname(__FILE__)}/test_helper"
+
+module MockAttributes
+ def self.included(base)
+ base.column :foo, :string
+ base.column :bar, :string
+ base.column :biz, :string
+ base.column :baz, :string
+ end
+end
+
+class StripAllMockRecord < ActiveRecord::Base
+ include MockAttributes
+ strip_attributes!
+end
+
+class StripOnlyOneMockRecord < ActiveRecord::Base
+ include MockAttributes
+ strip_attributes! :only => :foo
+end
+
+class StripOnlyThreeMockRecord < ActiveRecord::Base
+ include MockAttributes
+ strip_attributes! :only => [:foo, :bar, :biz]
+end
+
+class StripExceptOneMockRecord < ActiveRecord::Base
+ include MockAttributes
+ strip_attributes! :except => :foo
+end
+
+class StripExceptThreeMockRecord < ActiveRecord::Base
+ include MockAttributes
+ strip_attributes! :except => [:foo, :bar, :biz]
+end
+
+class StripAttributesTest < Test::Unit::TestCase
+ def setup
+ @init_params = { :foo => "\tfoo", :bar => "bar \t ", :biz => "\tbiz ", :baz => "" }
+ end
+
+ def test_should_exist
+ assert Object.const_defined?(:StripAttributes)
+ end
+
+ def test_should_strip_all_fields
+ record = StripAllMockRecord.new(@init_params)
+ record.valid?
+ assert_equal "foo", record.foo
+ assert_equal "bar", record.bar
+ assert_equal "biz", record.biz
+ assert_equal "", record.baz
+ end
+
+ def test_should_strip_only_one_field
+ record = StripOnlyOneMockRecord.new(@init_params)
+ record.valid?
+ assert_equal "foo", record.foo
+ assert_equal "bar \t ", record.bar
+ assert_equal "\tbiz ", record.biz
+ assert_equal "", record.baz
+ end
+
+ def test_should_strip_only_three_fields
+ record = StripOnlyThreeMockRecord.new(@init_params)
+ record.valid?
+ assert_equal "foo", record.foo
+ assert_equal "bar", record.bar
+ assert_equal "biz", record.biz
+ assert_equal "", record.baz
+ end
+
+ def test_should_strip_all_except_one_field
+ record = StripExceptOneMockRecord.new(@init_params)
+ record.valid?
+ assert_equal "\tfoo", record.foo
+ assert_equal "bar", record.bar
+ assert_equal "biz", record.biz
+ assert_equal "", record.baz
+ end
+
+ def test_should_strip_all_except_three_fields
+ record = StripExceptThreeMockRecord.new(@init_params)
+ record.valid?
+ assert_equal "\tfoo", record.foo
+ assert_equal "bar \t ", record.bar
+ assert_equal "\tbiz ", record.biz
+ assert_equal "", record.baz
+ end
+end
diff --git a/lib/strip_attributes/test/test_helper.rb b/lib/strip_attributes/test/test_helper.rb
new file mode 100644
index 000000000..7d06c40db
--- /dev/null
+++ b/lib/strip_attributes/test/test_helper.rb
@@ -0,0 +1,20 @@
+require 'test/unit'
+require 'rubygems'
+require 'active_record'
+
+PLUGIN_ROOT = File.expand_path(File.join(File.dirname(__FILE__), ".."))
+
+$LOAD_PATH.unshift "#{PLUGIN_ROOT}/lib"
+require "#{PLUGIN_ROOT}/init"
+
+class ActiveRecord::Base
+ alias_method :save, :valid?
+ def self.columns()
+ @columns ||= []
+ end
+
+ def self.column(name, sql_type = nil, default = nil, null = true)
+ @columns ||= []
+ @columns << ActiveRecord::ConnectionAdapters::Column.new(name.to_s, default, sql_type, null)
+ end
+end