forked from jviney/acts_as_taggable_on_steroids
-
Notifications
You must be signed in to change notification settings - Fork 2
/
tag_list_test.rb
119 lines (93 loc) · 3.56 KB
/
tag_list_test.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
require File.dirname(__FILE__) + '/abstract_unit'
class TagListTest < ActiveSupport::TestCase
def test_from_leaves_string_unchanged
tags = '"One ", Two'
original = tags.dup
TagList.from(tags)
assert_equal tags, original
end
def test_from_single_name
assert_equal %w(Fun), TagList.from("Fun")
assert_equal %w(Fun), TagList.from('"Fun"')
end
def test_from_blank
assert_equal [], TagList.from(nil)
assert_equal [], TagList.from("")
end
def test_from_single_quoted_tag
assert_equal ['with, comma'], TagList.from('"with, comma"')
end
def test_spaces_do_not_delineate
assert_equal ['A B', 'C'], TagList.from('A B, C')
end
def test_from_multiple_tags
assert_equivalent %w(Alpha Beta Delta Gamma), TagList.from("Alpha, Beta, Delta, Gamma")
end
def test_from_multiple_tags_with_quotes
assert_equivalent %w(Alpha Beta Delta Gamma), TagList.from('Alpha, "Beta", Gamma , "Delta"')
end
def test_from_with_single_quotes
assert_equivalent ['A B', 'C'], TagList.from("'A B', C")
end
def test_from_multiple_tags_with_quote_and_commas
assert_equivalent ['Alpha, Beta', 'Delta', 'Gamma, something'], TagList.from('"Alpha, Beta", Delta, "Gamma, something"')
end
def test_from_with_inner_quotes
assert_equivalent ["House", "Drum 'n' Bass", "Trance"], TagList.from("House, Drum 'n' Bass, Trance")
assert_equivalent ["House", "Drum'n'Bass", "Trance"], TagList.from("House, Drum'n'Bass, Trance")
end
def test_from_removes_white_space
assert_equivalent %w(Alpha Beta), TagList.from('" Alpha ", "Beta "')
assert_equivalent %w(Alpha Beta), TagList.from(' Alpha, Beta ')
end
def test_from_and_new_treat_both_accept_arrays
tags = ["One", "Two"]
assert_equal TagList.from(tags), TagList.new(tags)
end
def test_alternative_delimiter
TagList.delimiter = " "
assert_equal %w(One Two), TagList.from("One Two")
assert_equal ['One two', 'three', 'four'], TagList.from('"One two" three four')
ensure
TagList.delimiter = ","
end
def test_duplicate_tags_removed
assert_equal %w(One), TagList.from("One, One")
end
def test_to_s_with_commas
assert_equal "Question, Crazy Animal", TagList.new("Question", "Crazy Animal").to_s
end
def test_to_s_with_alternative_delimiter
TagList.delimiter = " "
assert_equal '"Crazy Animal" Question', TagList.new("Crazy Animal", "Question").to_s
ensure
TagList.delimiter = ","
end
def test_add
tag_list = TagList.new("One")
assert_equal %w(One), tag_list
assert_equal %w(One Two), tag_list.add("Two")
assert_equal %w(One Two Three), tag_list.add(["Three"])
end
def test_remove
tag_list = TagList.new("One", "Two")
assert_equal %w(Two), tag_list.remove("One")
assert_equal %w(), tag_list.remove(["Two"])
end
def test_new_with_parsing
assert_equal %w(One Two), TagList.new("One, Two", :parse => true)
end
def test_add_with_parsing
assert_equal %w(One Two), TagList.new.add("One, Two", :parse => true)
end
def test_remove_with_parsing
tag_list = TagList.from("Three, Four, Five")
assert_equal %w(Four), tag_list.remove("Three, Five", :parse => true)
end
def test_toggle
tag_list = TagList.new("One", "Two")
assert_equal %w(One Three), tag_list.toggle("Two", "Three")
assert_equal %w(), tag_list.toggle("One", "Three")
assert_equal %w(Four), tag_list.toggle("Four")
end
end