toodledo 1.3.5 → 1.3.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,44 +1,46 @@
1
1
  #
2
2
  # The possible values for the status field of a task.
3
3
  #
4
- class Status
4
+ module Toodledo
5
+ class Status
5
6
 
6
- NONE = 0
7
- NEXT_ACTION = 1
8
- ACTIVE = 2
9
- PLANNING = 3
10
- DELEGATED = 4
11
- WAITING = 5
12
- HOLD = 6
13
- POSTPONED = 7
14
- SOMEDAY = 8
15
- CANCELLED = 9
16
- REFERENCE = 10
7
+ NONE = 0
8
+ NEXT_ACTION = 1
9
+ ACTIVE = 2
10
+ PLANNING = 3
11
+ DELEGATED = 4
12
+ WAITING = 5
13
+ HOLD = 6
14
+ POSTPONED = 7
15
+ SOMEDAY = 8
16
+ CANCELLED = 9
17
+ REFERENCE = 10
17
18
 
18
- STATUS_ARRAY = [
19
- NONE,
20
- NEXT_ACTION,
21
- ACTIVE,
22
- PLANNING,
23
- DELEGATED,
24
- WAITING,
25
- HOLD,
26
- POSTPONED,
27
- SOMEDAY,
28
- CANCELLED,
29
- REFERENCE
30
- ]
19
+ STATUS_ARRAY = [
20
+ NONE,
21
+ NEXT_ACTION,
22
+ ACTIVE,
23
+ PLANNING,
24
+ DELEGATED,
25
+ WAITING,
26
+ HOLD,
27
+ POSTPONED,
28
+ SOMEDAY,
29
+ CANCELLED,
30
+ REFERENCE
31
+ ]
31
32
 
32
- def self.each
33
- STATUS_ARRAY.each{|value| yield(value)}
34
- end
33
+ def self.each
34
+ STATUS_ARRAY.each{|value| yield(value)}
35
+ end
35
36
 
36
- def self.valid?(input)
37
- for status in STATUS_ARRAY
38
- if (status == input)
39
- return true
37
+ def self.valid?(input)
38
+ for status in STATUS_ARRAY
39
+ if (status == input)
40
+ return true
41
+ end
40
42
  end
43
+ return false
41
44
  end
42
- return false
43
- end
44
- end
45
+ end
46
+ end
data/lib/toodledo/task.rb CHANGED
@@ -55,6 +55,7 @@ module Toodledo
55
55
  return @num_children
56
56
  end
57
57
 
58
+ # TODO Repetitious. Refactor
58
59
  def initialize(id, params = {})
59
60
  @id = id
60
61
 
@@ -129,7 +130,7 @@ module Toodledo
129
130
  # <parent>1122</parent>
130
131
  # <children>0</children>
131
132
  # <title>Buy Milk</title>
132
- # <tag>After work</tag>
133
+ # <tag>After work</tag> # Actually, this counts as two tags
133
134
  # <folder>123</folder>
134
135
  # <context id="123">Home</context>
135
136
  # <goal id="123">Get a Raise</goal>
@@ -223,7 +224,11 @@ module Toodledo
223
224
  title = el.elements['title'].text
224
225
 
225
226
  tag = el.elements['tag'].text
226
- tag = nil if (tag == '0')
227
+ if tag == '0'
228
+ tag = nil
229
+ elsif tag
230
+ tag = tag.split(/\s+/)
231
+ end
227
232
 
228
233
  length = el.elements['length'].text
229
234
  length = nil if (length == '0')
@@ -276,7 +281,7 @@ module Toodledo
276
281
  # <parent>#{@parent_id}</parent>
277
282
  # <children>#{@children}</children>
278
283
  # <title>#{@title}</title>
279
- # <tag>#{@tag}</tag>
284
+ # <tag>#{@tag.join(' ')}</tag>
280
285
  # <folder>#{@folder.server_id}</folder>
281
286
  # <context id="#{@context.server_id}">#{@context.name}</context>
282
287
  # <goal id="#{@goal.server_id}">#{@goal.name}</goal>
@@ -0,0 +1,11 @@
1
+
2
+ module Toodledo
3
+ module Version
4
+ MAJOR = 1
5
+ MINOR = 3
6
+ PATCH = 8
7
+
8
+ VERSION = [MAJOR, MINOR, PATCH].compact.join('.')
9
+ end
10
+
11
+ end
data/test/client_test.rb CHANGED
@@ -1,8 +1,4 @@
1
- $:.unshift File.join(File.dirname(__FILE__),'..','lib')
2
-
3
- require 'test/unit'
4
- require 'toodledo/command_line/client'
5
- require 'flexmock/test_unit'
1
+ require 'helper'
6
2
 
7
3
  module Toodledo
8
4
  module CommandLine
@@ -78,6 +74,39 @@ module Toodledo
78
74
 
79
75
  @client.add_task(@session, input)
80
76
  end
77
+
78
+ def test_add_task_with_duedate()
79
+
80
+ input = '#2011-03-04 This is a test'
81
+
82
+ args = { :duedate => "2011-03-04" }
83
+
84
+ @session.should_receive(:add_task).with('This is a test', args).and_return(1)
85
+ @client.should_receive(:print).with('Task 1 added.')
86
+ @client.add_task(@session, input)
87
+ end
88
+
89
+ def test_add_task_with_single_tag()
90
+
91
+ input = '%tag This is a test'
92
+
93
+ args = { :tag => %w{tag} }
94
+
95
+ @session.should_receive(:add_task).with('This is a test', args).and_return(1)
96
+ @client.should_receive(:print).with('Task 1 added.')
97
+ @client.add_task(@session, input)
98
+ end
99
+
100
+ def test_add_task_with_multiple_tags()
101
+
102
+ input = '%[tag1 tag2] This is a test'
103
+
104
+ args = { :tag => %w{tag1 tag2} }
105
+
106
+ @session.should_receive(:add_task).with('This is a test', args).and_return(1)
107
+ @client.should_receive(:print).with('Task 1 added.')
108
+ @client.add_task(@session, input)
109
+ end
81
110
 
82
111
  def test_add_folder()
83
112
  input = 'name'
@@ -109,7 +138,7 @@ module Toodledo
109
138
 
110
139
  @client.add_goal(@session, input)
111
140
  end
112
-
141
+
113
142
  def test_list_tasks_with_nothing()
114
143
 
115
144
  params = {
@@ -130,24 +159,43 @@ module Toodledo
130
159
  @client.list_tasks(@session, input)
131
160
  end
132
161
 
133
-
134
162
  def test_list_tasks_with_everything()
135
163
 
136
- params = {
164
+ parent_fields = {
165
+ :priority => Priority::HIGH,
166
+ :title => 'bar',
167
+ :folder => Folder::NO_FOLDER,
168
+ :context => Context::NO_CONTEXT,
169
+ :goal => Goal::NO_GOAL,
170
+ :status => Status::NONE,
171
+ :repeat => Repeat::NONE
172
+ }
173
+ parent_task = Task.new(54321, parent_fields)
174
+
175
+ child_fields = {
137
176
  :priority => Priority::LOW,
138
177
  :title => 'foo',
139
178
  :folder => Folder.new(1234, 0, 0, 'test folder'),
140
179
  :context => Context.new(345, 'test context'),
141
180
  :goal => Goal.new(342341, 0, 0, 'test goal'),
142
181
  :repeat => Repeat::BIWEEKLY,
182
+ :duedatemodifier => 1, # Due On
183
+ :duedate => Time.local(2011,06,25,13,45,56),
184
+ :startdate => Date.new(2010,05,23),
143
185
  :status => Status::NEXT_ACTION,
186
+ :star => true,
144
187
  :tag => 'some tag',
145
- :star => true
188
+ :parent_id => 54321,
189
+ :parent => parent_task,
190
+ :length => 125, # Minutes of duration
191
+ :timer => 423, # Seconds timer has been running
192
+ :num_children => 5
146
193
  }
147
- task = Task.new(1234, params)
148
- tasks = [ task ]
194
+ child_task = Task.new(1234, child_fields)
195
+ tasks = [ parent_task, child_task ]
149
196
  @session.should_receive(:get_tasks).and_return(tasks)
150
- @client.should_receive(:print).with('<1234> -- !low *[test folder] @[test context] ^[test goal] repeat[biweekly] status[Next Action] starred tag[some tag] foo')
197
+ @client.should_receive(:print).with("<54321> -- !high bar").once.ordered
198
+ @client.should_receive(:print).with("<1234> -- !low *[test folder] @[test context] ^[test goal] repeat[biweekly] #[=06/25/2011 01:45 PM] startdate[05/23/2010] status[Next Action] starred %[some tag] parent[bar] length[125] timer[423] children[5] foo").once.ordered
151
199
 
152
200
  input = ''
153
201
  @client.list_tasks(@session, input)
data/test/helper.rb ADDED
@@ -0,0 +1,11 @@
1
+ $: << File.expand_path(File.dirname(__FILE__) + "/../lib")
2
+
3
+
4
+ require 'rubygems'
5
+ require 'test/unit'
6
+ require 'toodledo'
7
+ require 'toodledo/command_line/client'
8
+
9
+ require 'flexmock/test_unit'
10
+ require 'yaml'
11
+
@@ -1,9 +1,4 @@
1
- $: << File.expand_path(File.dirname(__FILE__) + "/../lib")
2
-
3
- require 'test/unit'
4
- require 'toodledo'
5
- require 'toodledo/command_line/parser_helper'
6
-
1
+ require 'helper'
7
2
 
8
3
  #
9
4
  # Tests the parser helper
@@ -47,6 +42,41 @@ class ParserHelperTest < Test::Unit::TestCase
47
42
 
48
43
  assert(folder == 'Harder Folder', "Folder not found")
49
44
  end
45
+
46
+ def test_find_duedate
47
+ input = "#duedate @Context ^Goal blah blah blah"
48
+
49
+ duedate = parse_date(input)
50
+
51
+ assert(duedate == 'duedate', "duedate not found")
52
+ end
53
+
54
+ # TODO Separate parse_date from parse_duedate?
55
+ def test_find_harder_duedate
56
+
57
+ input = "Some Text @[Harder Context] #[Harder duedate] ^[Harder Goal]"
58
+
59
+ duedate = parse_date(input)
60
+
61
+ assert(duedate == 'Harder duedate', "duedate not found")
62
+ end
63
+
64
+ def test_find_tag
65
+ input = "%tag @Context ^Goal blah blah blah"
66
+
67
+ tag = parse_tag(input)
68
+
69
+ assert(tag == ['tag'], "tag not found")
70
+ end
71
+
72
+ def test_find_harder_tag
73
+
74
+ input = "Some Text @[Harder Context] %[Harder tag] ^[Harder Goal]"
75
+
76
+ tag = parse_tag(input)
77
+
78
+ assert(tag == ['Harder','tag'], "tag not found")
79
+ end
50
80
 
51
81
  def test_find_goal
52
82
  input = "*Folder @Context ^Goal wefawef wefawefawfe"
data/test/session_test.rb CHANGED
@@ -1,33 +1,33 @@
1
- $: << File.expand_path(File.dirname(__FILE__) + "/../lib")
2
-
3
-
4
- require 'rubygems'
5
- require 'test/unit'
6
- require 'flexmock/test_unit'
7
- require 'toodledo/session'
1
+ require 'helper'
8
2
 
9
3
  #
10
4
  # This class tests that various handle methods in the session work as they're
11
5
  # supposed to.
12
6
  #
13
- class SessionTest < Test::Unit::TestCase
14
7
 
15
- def setup
8
+ class SessionTest < Test::Unit::TestCase
9
+
10
+ def setup
16
11
  @session = Toodledo::Session.new('userid', 'password')
17
12
 
18
13
  # mock out the get_token & call methods.
19
- flexmock(@session, :get_token => 'token')
14
+ mock_connection(@session)
20
15
 
21
16
  @session.connect()
22
17
  end
23
18
 
19
+ def mock_connection(session)
20
+ flexmock(session, :get_token => 'token')
21
+ flexmock(session, :get_server_info => {:token_expires=>4*60.0})
22
+ end
23
+
24
24
  def teardown
25
25
  @session.disconnect()
26
26
  end
27
27
 
28
28
  def test_handle_app_id_in_session
29
29
  new_sess = Toodledo::Session.new('userid', 'password', nil, 'appid')
30
- flexmock(new_sess, :get_token => 'token')
30
+ mock_connection(new_sess)
31
31
  new_sess.connect()
32
32
  assert_not_nil new_sess.app_id
33
33
  end
@@ -42,7 +42,7 @@ class SessionTest < Test::Unit::TestCase
42
42
  flexmock(@session, :get_goal_by_name => goal)
43
43
  @session.handle_goal(myhash, params)
44
44
 
45
- assert myhash[:goal] == goal_id
45
+ assert_equal goal_id, myhash[:goal]
46
46
  end
47
47
 
48
48
  def test_handle_goal_with_id()
@@ -52,7 +52,7 @@ class SessionTest < Test::Unit::TestCase
52
52
 
53
53
  @session.handle_goal(myhash, params)
54
54
 
55
- assert myhash[:goal] == goal_id
55
+ assert_equal goal_id, myhash[:goal]
56
56
  end
57
57
 
58
58
  def test_handle_goal_with_obj()
@@ -63,7 +63,7 @@ class SessionTest < Test::Unit::TestCase
63
63
 
64
64
  @session.handle_goal(myhash, params)
65
65
 
66
- assert myhash[:goal] == goal_id
66
+ assert_equal goal_id, myhash[:goal]
67
67
  end
68
68
 
69
69
  def test_handle_context_with_obj()
@@ -74,7 +74,7 @@ class SessionTest < Test::Unit::TestCase
74
74
  myhash = {}
75
75
  @session.handle_context(myhash, params)
76
76
 
77
- assert myhash[:context] == context_id
77
+ assert_equal context_id, myhash[:context]
78
78
  end
79
79
 
80
80
  def test_handle_context_with_id()
@@ -84,7 +84,7 @@ class SessionTest < Test::Unit::TestCase
84
84
  myhash = {}
85
85
  @session.handle_context(myhash, params)
86
86
 
87
- assert myhash[:context] == context_id
87
+ assert_equal context_id, myhash[:context]
88
88
  end
89
89
 
90
90
  def test_handle_context_with_name()
@@ -95,7 +95,7 @@ class SessionTest < Test::Unit::TestCase
95
95
  flexmock(@session, :get_context_by_name => context)
96
96
  @session.handle_context(myhash, params)
97
97
 
98
- assert myhash[:context] == context_id
98
+ assert_equal context_id, myhash[:context]
99
99
  end
100
100
 
101
101
  def test_handle_boolean_with_string_true()
@@ -103,7 +103,7 @@ class SessionTest < Test::Unit::TestCase
103
103
  params = { :bool => 'true' }
104
104
  @session.handle_boolean(myhash, params, :bool)
105
105
 
106
- assert myhash[:bool] == "1"
106
+ assert_equal "1", myhash[:bool]
107
107
  end
108
108
 
109
109
  def test_handle_boolean_with_string_false()
@@ -111,7 +111,7 @@ class SessionTest < Test::Unit::TestCase
111
111
  params = { :bool => 'false' }
112
112
  @session.handle_boolean(myhash, params, :bool)
113
113
 
114
- assert myhash[:bool] == "0"
114
+ assert_equal "0", myhash[:bool]
115
115
  end
116
116
 
117
117
  def test_handle_boolean_with_true()
@@ -119,7 +119,7 @@ class SessionTest < Test::Unit::TestCase
119
119
  params = { :bool => true }
120
120
  @session.handle_boolean(myhash, params, :bool)
121
121
 
122
- assert myhash[:bool] == "1"
122
+ assert_equal "1", myhash[:bool]
123
123
  end
124
124
 
125
125
  def test_handle_boolean_with_false()
@@ -127,7 +127,7 @@ class SessionTest < Test::Unit::TestCase
127
127
  params = { :bool => false }
128
128
  @session.handle_boolean(myhash, params, :bool)
129
129
 
130
- assert myhash[:bool] == "0"
130
+ assert_equal "0", myhash[:bool]
131
131
  end
132
132
 
133
133
  def test_handle_folder()
@@ -137,7 +137,7 @@ class SessionTest < Test::Unit::TestCase
137
137
  params = { :folder => folder_id }
138
138
  @session.handle_folder(myhash, params)
139
139
 
140
- assert myhash[:folder] == folder_id
140
+ assert_equal folder_id, myhash[:folder]
141
141
  end
142
142
 
143
143
  def test_handle_folder_with_obj()
@@ -149,7 +149,7 @@ class SessionTest < Test::Unit::TestCase
149
149
  params = { :folder => folder }
150
150
  @session.handle_folder(myhash, params)
151
151
 
152
- assert myhash[:folder] == folder_id
152
+ assert_equal folder_id, myhash[:folder]
153
153
  end
154
154
 
155
155
 
@@ -164,7 +164,7 @@ class SessionTest < Test::Unit::TestCase
164
164
  params = { :folder => folder_name }
165
165
  @session.handle_folder(myhash, params)
166
166
 
167
- assert myhash[:folder] == folder_id
167
+ assert_equal folder_id, myhash[:folder]
168
168
  end
169
169
 
170
170
  def test_handle_parent_with_task()
@@ -175,7 +175,7 @@ class SessionTest < Test::Unit::TestCase
175
175
 
176
176
  @session.handle_parent(myhash, params)
177
177
 
178
- assert myhash[:parent] == task_id
178
+ assert_equal task_id, myhash[:parent]
179
179
  end
180
180
 
181
181
  def test_handle_parent_with_id()
@@ -185,23 +185,205 @@ class SessionTest < Test::Unit::TestCase
185
185
 
186
186
  @session.handle_parent(myhash, params)
187
187
 
188
- assert myhash[:parent] == task_id
188
+ assert_equal task_id, myhash[:parent]
189
+ end
190
+
191
+ def test_handle_number_with_nil()
192
+ myhash = {}
193
+ params = { :num => nil }
194
+ @session.handle_number(myhash, params, :num)
195
+
196
+ assert_equal nil, myhash[:num]
197
+ end
198
+
199
+ def test_handle_number_with_string()
200
+ myhash = {}
201
+ params = { :num => '12345' }
202
+ @session.handle_number(myhash, params, :num)
203
+
204
+ assert_equal nil, myhash[:num]
189
205
  end
190
206
 
207
+ def test_handle_number_with_integer()
208
+ myhash = {}
209
+ params = { :num => 12345 }
210
+ @session.handle_number(myhash, params, :num)
211
+
212
+ assert_equal '12345', myhash[:num]
213
+ end
191
214
 
215
+ def test_handle_string_with_nil()
216
+ myhash = {}
217
+ params = { :string => nil }
218
+ @session.handle_string(myhash, params, :string)
219
+
220
+ assert_equal nil, myhash[:string]
221
+ end
192
222
 
193
- # handle_number
194
- # handle_string
195
- #
196
- # handle_date
197
- # handle_time
198
- # handle_datetime
199
- #
200
- # handle duedate
201
- # handle duetime
202
- #
203
- # handle_repeat
204
- # handle_priority
205
-
223
+ def test_handle_string()
224
+ myhash = {}
225
+ params = { :string => '12345' }
226
+ @session.handle_string(myhash, params, :string)
227
+
228
+ assert_equal '12345', myhash[:string]
229
+ end
230
+
231
+ def test_handle_date_with_nil()
232
+ myhash = {}
233
+ params = { :date => nil }
234
+ @session.handle_date(myhash, params, :date)
235
+
236
+ assert_equal nil, myhash[:date]
237
+ end
238
+
239
+ def test_handle_date()
240
+ myhash = {}
241
+ params = { :date => Time.local(2011,05,23,14,45,56) }
242
+ @session.handle_date(myhash, params, :date)
243
+
244
+ assert_equal '2011-05-23', myhash[:date]
245
+ end
246
+
247
+ def test_handle_date_with_string()
248
+ myhash = {}
249
+ params = { :date => '2011-05-23' }
250
+ @session.handle_date(myhash, params, :date)
251
+
252
+ assert_equal '2011-05-23', myhash[:date]
253
+ end
254
+
255
+ def test_handle_time_with_nil()
256
+ myhash = {}
257
+ params = { :time => nil }
258
+ @session.handle_time(myhash, params, :time)
259
+
260
+ assert_equal nil, myhash[:time]
261
+ end
262
+
263
+ def test_handle_time()
264
+ myhash = {}
265
+ params = { :time => Time.local(2011,05,23,14,45,56) }
266
+ @session.handle_time(myhash, params, :time)
267
+
268
+ assert_equal '02:45 PM', myhash[:time]
269
+ end
270
+
271
+ def test_handle_time_with_string()
272
+ myhash = {}
273
+ params = { :time => '02:45 PM' }
274
+ @session.handle_time(myhash, params, :time)
275
+
276
+ assert_equal '02:45 PM', myhash[:time]
277
+ end
278
+
279
+ def test_handle_datetime_with_nil()
280
+ myhash = {}
281
+ params = { :datetime => nil }
282
+ @session.handle_datetime(myhash, params, :datetime)
283
+
284
+ assert_equal nil, myhash[:datetime]
285
+ end
286
+
287
+ def test_handle_datetime()
288
+ myhash = {}
289
+ params = { :datetime => Time.local(2011,05,23,14,45,56) }
290
+ @session.handle_datetime(myhash, params, :datetime)
291
+
292
+ assert_equal '2011-05-23 14:45:56', myhash[:datetime]
293
+ end
294
+
295
+ def test_handle_datetime_with_string()
296
+ myhash = {}
297
+ params = { :datetime => '2011-05-23 14:45:56' }
298
+ @session.handle_datetime(myhash, params, :datetime)
299
+
300
+ assert_equal '2011-05-23 14:45:56', myhash[:datetime]
301
+ end
302
+
303
+ def test_handle_repeat_with_nil()
304
+ myhash = {}
305
+ params = { :repeat => nil }
306
+ @session.handle_repeat(myhash, params)
307
+
308
+ assert_equal nil, myhash[:repeat]
309
+ end
310
+
311
+ REPEAT_VALUES = %w{NONE WEEKLY MONTHLY YEARLY DAILY BIWEEKLY BIMONTHLY SEMIANNUALLY QUARTERLY WITH_PARENT}
312
+
313
+ def test_handle_repeat()
314
+ REPEAT_VALUES.each do |repeat|
315
+ repeat_value = Toodledo::Repeat.const_get(repeat)
316
+ myhash = {}
317
+ params = { :repeat => repeat_value }
318
+ @session.handle_repeat(myhash, params)
319
+
320
+ assert_equal repeat_value, myhash[:repeat], "does not handle repeat code #{repeat} (value #{repeat_value})"
321
+ end
322
+ end
323
+
324
+ def test_handle_priority_with_nil()
325
+ myhash = {}
326
+ params = { :priority => nil }
327
+ @session.handle_priority(myhash, params)
328
+
329
+ assert_equal nil, myhash[:priority]
330
+ end
331
+
332
+ PRIORITY_VALUES = %w{TOP HIGH MEDIUM LOW NEGATIVE}
333
+
334
+ def test_handle_priority()
335
+ PRIORITY_VALUES.each do |priority|
336
+ priority_value = Toodledo::Priority.const_get(priority)
337
+ myhash = {}
338
+ params = { :priority => priority_value }
339
+ @session.handle_priority(myhash, params)
340
+
341
+ assert_equal priority_value, myhash[:priority], "does not handle priority code #{priority} (value #{priority_value})"
342
+ end
343
+ end
344
+
345
+ def test_handle_status_with_nil()
346
+ myhash = {}
347
+ params = { :status => nil }
348
+ @session.handle_status(myhash, params)
349
+
350
+ assert_equal nil, myhash[:status]
351
+ end
352
+
353
+ STATUS_VALUES = %w{NONE NEXT_ACTION ACTIVE PLANNING DELEGATED WAITING HOLD POSTPONED SOMEDAY CANCELLED REFERENCE}
206
354
 
355
+ def test_handle_status()
356
+ STATUS_VALUES.each do |status|
357
+ status_value = Toodledo::Status.const_get(status)
358
+ myhash = {}
359
+ params = { :status => status_value }
360
+ @session.handle_status(myhash, params)
361
+
362
+ assert_equal status_value, myhash[:status], "does not handle status code #{status} (value #{status_value})"
363
+ end
364
+ end
365
+
366
+ def test_handle_tag_with_nil()
367
+ myhash = {}
368
+ params = { :tag => nil }
369
+ @session.handle_tag(myhash, params)
370
+
371
+ assert_equal nil, myhash[:tag]
372
+ end
373
+
374
+ def test_handle_tag_with_array()
375
+ myhash = {}
376
+ params = { :tag => %w{tag1 tag2 tag3} }
377
+ @session.handle_tag(myhash, params)
378
+
379
+ assert_equal 'tag1 tag2 tag3', myhash[:tag]
380
+ end
381
+
382
+ def test_handle_tag_with_string()
383
+ myhash = {}
384
+ params = { :tag => 'tags' }
385
+ @session.handle_tag(myhash, params)
386
+
387
+ assert_equal 'tags', myhash[:tag]
388
+ end
207
389
  end