Skip to content

Commit e8fec4a

Browse files
authored
Merge pull request #217 from Thoughtwright-LLC/gf
Fixed get_item and get_items to accept :occurrence_item_id
2 parents 6b45466 + 3da89c3 commit e8fec4a

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
@@ -1186,10 +1186,9 @@ def dispatch_item_id!(iid)
11861186
when :item_id
11871187
item_id!(item)
11881188
when :occurrence_item_id
1189-
occurrence_item_id!(
1190-
item[:recurring_master_id], item[:change_key], item[:instance_index])
1189+
occurrence_item_id!(item)
11911190
when :recurring_master_item_id
1192-
recurring_master_item_id!(item[:occurrence_id], item[:change_key])
1191+
recurring_master_item_id!(item)
11931192
else
11941193
raise EwsBadArgumentError, "Bad ItemId type. #{type}"
11951194
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)