Skip to content

Commit

Permalink
Latest changes
Browse files Browse the repository at this point in the history
  • Loading branch information
kr-mykyta committed Jul 26, 2023
1 parent f2462d5 commit c953a9d
Show file tree
Hide file tree
Showing 2 changed files with 111 additions and 0 deletions.
16 changes: 16 additions & 0 deletions lib/cronofy/client.rb
Original file line number Diff line number Diff line change
Expand Up @@ -863,6 +863,10 @@ def availability(options = {})

translate_available_periods(options[:query_periods] || options[:available_periods])

if query_slots = options[:query_slots]
translate_query_slots(options:[:query_slots])
end

response = availability_post("/v1/availability", options)

parse_collections(
Expand Down Expand Up @@ -1717,6 +1721,14 @@ def translate_available_periods(periods)
end
end

def translate_query_slots(query_slots)
periods.each do |params|
QUERY_SLOTS_TIME_PARAMS.select { |tp| params.key?(tp) }.each do |tp|
params[tp] = to_iso8601(params[tp])
end
end
end

def map_availability_participants(participants)
case participants
when Hash
Expand Down Expand Up @@ -1847,6 +1859,10 @@ def map_availability_sequence(sequence)
end
}.freeze

QUERY_SLOTS_TIME_PARAMS = %i{
start
}.freeze

FREE_BUSY_DEFAULT_PARAMS = { tzid: "Etc/UTC" }.freeze
FREE_BUSY_TIME_PARAMS = %i{
from
Expand Down
95 changes: 95 additions & 0 deletions spec/lib/cronofy/client_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -1783,6 +1783,51 @@
it_behaves_like 'a Cronofy request with mapped return value'
end

context 'when given query_slots instead of available_periods with start interval' do
let(:participants) do
{ members: %w{acc_567236000909002 acc_678347111010113} }
end

let(:required_duration) { 60 }

let(:query_slots) do
[
{ start: Time.parse("2017-01-03T09:00:00Z")},
{ start: Time.parse("2017-01-04T09:00:00Z") },
]
end

let(:request_body) do
{
"participants" => [
{
"members" => [
{ "sub" => "acc_567236000909002" },
{ "sub" => "acc_678347111010113" }
],
"required" => "all"
}
],
"query_slots" => [
{ "start" => "2017-01-03T09:00:00Z" },
{ "start" => "2017-01-04T09:00:00Z" }
],
"required_duration" => { "minutes" => 60 },
}
end

subject do
client.availability(
participants: participants,
required_duration: required_duration,
query_slots: query_slots
)
end

it_behaves_like 'a Cronofy request'
it_behaves_like 'a Cronofy request with mapped return value'
end

context "when trying to auth with only an access_token, as originally implemented" do
let(:access_token) { "access_token_123"}
let(:client) { Cronofy::Client.new(access_token: access_token) }
Expand Down Expand Up @@ -2363,6 +2408,56 @@
mapped_availability[:query_periods] = mapped_availability.delete(:available_periods)
end
end

context 'when passing query slots' do
let(:availability) do
{
participants: [
{
members: [{
sub: "acc_567236000909002",
calendar_ids: ["cal_n23kjnwrw2_jsdfjksn234"]
}],
required: 'all'
}
],
required_duration: { minutes: 60 },
query_slots: [
{ start: Time.utc(2017, 1, 1, 9, 00) },
{ start: Time.utc(2017, 1, 1, 17, 00) }
],
buffer: {
before: { minutes: 30 },
after: { minutes: 45 },
}
}
end

let(:mapped_availability) do
{
participants: [
{
members: [{
sub: "acc_567236000909002",
calendar_ids: ["cal_n23kjnwrw2_jsdfjksn234"]
}],
required: 'all'
}
],
required_duration: { minutes: 60 },
buffer: {
before: { minutes: 30 },
after: { minutes: 45 },
},
query_slots: [
{ start: Time.utc(2017, 1, 1, 9, 00) },
{ start: Time.utc(2017, 1, 1, 17, 00) }
],
}
it_behaves_like 'a Cronofy request'
it_behaves_like 'a Cronofy request with mapped return value'
end
end
end

describe "#get_real_time_scheduling_status" do
Expand Down

0 comments on commit c953a9d

Please sign in to comment.