require File.dirname(__FILE__) + '/test_helper' Expectations do expect Tag do Post.new.tags.build end expect Tagging do Post.new.taggings.build end expect Set.new(["is_taggable", "has 'tags' by default"]) do n = Comment.new :tag_list => "is_taggable, has 'tags' by default" n.tag_list end expect Set.new(["one", "two"]) do IsTaggable::TagList.delimiter = " " n = Comment.new :tag_list => "one two" IsTaggable::TagList.delimiter = "," # puts things back to avoid breaking following tests n.tag_list end expect Set.new(["one", "two"]) do n = Comment.new :tag_list => "one, two, one" n.tag_list end expect Set.new(["one one", "two two"]) do n = Comment.new :tag_list => "one one, two two, one one" n.tag_list end expect Set.new(["one", "two"]) do n = Comment.new :tag_list => ["one", "two", ""] n.tag_list end expect Set.new(["something cool", "something else cool"]) do p = Post.new :tag_list => "something cool, something else cool" p.tag_list end expect Set.new(["something cool", "something new"]) do p = Post.new :tag_list => "something cool, something else cool" p.save! p.tag_list = "something cool, something new" p.save! p.tags.reload p.instance_variable_set("@tag_list", nil) p.tag_list end expect Set.new(["something cool"]) do p = Post.new :tag_list => "something cool, something cool" p.save! p.tag_list end expect Set.new(["english", "french"]) do p = Post.new :language_list => "english, french" p.save! p.tags.reload p.instance_variable_set("@language_list", nil) p.language_list end expect Set.new(["english", "french"]) do p = Post.new :language_list => "english, french" p.language_list end expect "english,french" do p = Post.new :language_list => "english, french" p.language_list.to_s end expect "english, french" do IsTaggable::TagList.output_delimiter = ", " p = Post.new :language_list => "english, french" output = p.language_list.to_s IsTaggable::TagList.output_delimiter = nil output end expect "english french german" do IsTaggable::TagList.delimiter = /[, ]/ IsTaggable::TagList.output_delimiter = ' ' p = Post.new :language_list => "english,french, german" output = p.language_list.to_s IsTaggable::TagList.delimiter = ',' IsTaggable::TagList.output_delimiter = nil output end # added - should clean up strings with arbitrary spaces around commas expect Set.new(["spaces","should","not","matter"]) do p = Post.new p.tag_list = "spaces,should, not,matter" p.save! p.tags.reload p.tag_list end expect Set.new(["blank","topics","should be ignored"]) do p = Post.new p.tag_list = "blank, topics, should be ignored, " p.save! p.tags.reload p.tag_list end expect 2 do p = Post.new :language_list => "english, french" p.save! p.tags.length end end