Skip to content

Commit 3da89c3

Browse files
author
Greg Houston
committed
ItemAccessorsSpec updated. Fixed ItemAccessors#get_item_args to support :occurrence_item_id (see spec). Fixed EwsBuilder#dispatch_item_id! calls to occurrence_item_id! and recurring_master_item_id! had the wrong number of arguments.
1 parent 93c639c commit 3da89c3

3 files changed

Lines changed: 52 additions & 5 deletions

File tree

lib/ews/item_accessors.rb

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,9 +115,20 @@ def get_item_args(item_id, opts)
115115
}
116116
default_args[:item_ids] = case item_id
117117
when Hash
118-
[{:item_id => item_id}]
118+
if item_id.keys.index(:id)
119+
[{:item_id => item_id}]
120+
else
121+
[item_id]
122+
end
119123
when Array
120-
item_id.map{|i| {:item_id => {:id => i}}}
124+
item_id.map do |i|
125+
case i
126+
when Hash
127+
i
128+
else
129+
{:item_id => {:id => i}}
130+
end
131+
end
121132
else
122133
[{:item_id => {:id => item_id}}]
123134
end

lib/ews/soap/builders/ews_builder.rb

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1182,10 +1182,9 @@ def dispatch_item_id!(iid)
11821182
when :item_id
11831183
item_id!(item)
11841184
when :occurrence_item_id
1185-
occurrence_item_id!(
1186-
item[:recurring_master_id], item[:change_key], item[:instance_index])
1185+
occurrence_item_id!(item)
11871186
when :recurring_master_item_id
1188-
recurring_master_item_id!(item[:occurrence_id], item[:change_key])
1187+
recurring_master_item_id!(item)
11891188
else
11901189
raise EwsBadArgumentError, "Bad ItemId type. #{type}"
11911190
end

spec/unit/item_accessors_spec.rb

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,41 @@ def self.folders
3131
end
3232
end
3333

34+
context "get_item_args should handle :occurrence_item_id" do
35+
class GetItemArgsAccessor
36+
include Viewpoint::EWS::ItemAccessors
37+
def call_get_item_args(*args)
38+
get_item_args(*args)
39+
end
40+
end
41+
42+
it "should handle an :occurrence_item_id hash" do
43+
occurrence_item_id = {:occurrence_item_id => {:recurring_master_id => 'rid1', :change_key => 'ck', :instance_index => 1}}
44+
result = GetItemArgsAccessor.new.call_get_item_args(occurrence_item_id, {})
45+
result[:item_ids].should eq [occurrence_item_id]
46+
end
47+
48+
it "should handle an Array of :occurrence_item_id hashes" do
49+
occurrences = [
50+
{:occurrence_item_id => {:recurring_master_id => 'rid1', :change_key => 'ck1', :instance_index => 1}},
51+
{:occurrence_item_id => {:recurring_master_id => 'rid2', :change_key => 'ck2', :instance_index => 2}},
52+
{:occurrence_item_id => {:recurring_master_id => 'rid3', :change_key => 'ck3', :instance_index => 3}},
53+
]
54+
result = GetItemArgsAccessor.new.call_get_item_args(occurrences, {})
55+
result[:item_ids].should eq occurrences
56+
end
57+
58+
it "should handle an :id hash" do
59+
id = {:id => 'id1', :change_key => 'ck1'}
60+
result = GetItemArgsAccessor.new.call_get_item_args(id, {})
61+
result[:item_ids].should eq [{:item_id => {:id => 'id1', :change_key => 'ck1'}}]
62+
end
63+
64+
it "should handle an Array of id strings" do
65+
ids = ['id1', 'id2', 'id3']
66+
result = GetItemArgsAccessor.new.call_get_item_args(ids, {})
67+
result[:item_ids].should eq [{:item_id=>{:id => 'id1'}},{:item_id=>{:id => 'id2'}},{:item_id=>{:id => 'id3'}}]
68+
end
69+
end
70+
3471
end

0 commit comments

Comments
 (0)