calendlyr 0.6.0 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +7 -8
- data/CHANGELOG.md +2 -2
- data/README.md +46 -127
- data/calendlyr.gemspec +0 -1
- data/docs/resources/activity_log/list_activity_log_entries.md +34 -0
- data/docs/resources/availabilities/availability_rule.md +5 -0
- data/docs/resources/availabilities/user_availability_schedule.md +50 -0
- data/docs/resources/availabilities/user_busy_time.md +28 -0
- data/docs/resources/data_compliance.md +19 -0
- data/docs/resources/event_types/available_time.md +21 -0
- data/docs/resources/event_types/event_type.md +55 -0
- data/docs/resources/event_types/membership.md +29 -0
- data/docs/resources/event_types/profile.md +13 -0
- data/docs/resources/events/cancellation.md +18 -0
- data/docs/resources/events/event.md +62 -0
- data/docs/resources/events/guest.md +5 -0
- data/docs/resources/events/invitee.md +28 -0
- data/docs/resources/events/invitee_no_show.md +49 -0
- data/docs/resources/groups/group.md +56 -0
- data/docs/resources/groups/relationship.md +54 -0
- data/docs/resources/organizations/invitation.md +65 -0
- data/docs/resources/organizations/membership.md +58 -0
- data/docs/resources/organizations/organization.md +149 -0
- data/docs/resources/pagination.md +21 -0
- data/docs/resources/routing_forms/routing_form.md +48 -0
- data/docs/resources/routing_forms/submission.md +40 -0
- data/docs/resources/scheduling_link.md +26 -0
- data/docs/resources/share.md +28 -0
- data/docs/resources/user.md +111 -0
- data/docs/resources/webhooks/invitee_payload.md +42 -0
- data/docs/resources/webhooks/payload.md +5 -0
- data/docs/resources/webhooks/subscription.md +96 -0
- data/lib/calendlyr/client.rb +18 -2
- data/lib/calendlyr/collection.rb +2 -2
- data/lib/calendlyr/error.rb +42 -1
- data/lib/calendlyr/object.rb +6 -2
- data/lib/calendlyr/objects/activity_log.rb +11 -0
- data/lib/calendlyr/objects/availabilities/rule.rb +4 -0
- data/lib/calendlyr/objects/availabilities/user_busy_time.rb +7 -0
- data/lib/calendlyr/objects/availabilities/user_schedule.rb +13 -0
- data/lib/calendlyr/objects/event.rb +11 -0
- data/lib/calendlyr/objects/event_type.rb +15 -0
- data/lib/calendlyr/objects/event_types/available_time.rb +4 -0
- data/lib/calendlyr/objects/event_types/membership.rb +11 -0
- data/lib/calendlyr/objects/event_types/profile.rb +7 -0
- data/lib/calendlyr/objects/events/cancellation.rb +4 -0
- data/lib/calendlyr/objects/events/guest.rb +4 -0
- data/lib/calendlyr/objects/events/invitee.rb +11 -0
- data/lib/calendlyr/objects/events/invitee_no_show.rb +7 -0
- data/lib/calendlyr/objects/group.rb +15 -0
- data/lib/calendlyr/objects/groups/relationship.rb +15 -0
- data/lib/calendlyr/objects/organization.rb +67 -0
- data/lib/calendlyr/objects/organizations/invitation.rb +15 -0
- data/lib/calendlyr/objects/organizations/membership.rb +15 -0
- data/lib/calendlyr/objects/routing_form.rb +11 -0
- data/lib/calendlyr/objects/routing_forms/submission.rb +7 -0
- data/lib/calendlyr/objects/scheduling_link.rb +9 -0
- data/lib/calendlyr/objects/share.rb +9 -0
- data/lib/calendlyr/objects/user.rb +31 -0
- data/lib/calendlyr/objects/webhooks/invitee_payload.rb +15 -0
- data/lib/calendlyr/objects/webhooks/payload.rb +4 -0
- data/lib/calendlyr/objects/webhooks/subscription.rb +23 -0
- data/lib/calendlyr/resource.rb +2 -2
- data/lib/calendlyr/resources/availability.rb +19 -0
- data/lib/calendlyr/resources/data_compliance.rb +4 -0
- data/lib/calendlyr/resources/event.rb +40 -0
- data/lib/calendlyr/resources/event_type.rb +28 -0
- data/lib/calendlyr/resources/group.rb +22 -0
- data/lib/calendlyr/resources/organization.rb +40 -0
- data/lib/calendlyr/resources/outgoing_communication.rb +8 -0
- data/lib/calendlyr/resources/routing_form.rb +22 -0
- data/lib/calendlyr/resources/{scheduling_links.rb → scheduling_link.rb} +2 -2
- data/lib/calendlyr/resources/share.rb +8 -0
- data/lib/calendlyr/resources/user.rb +11 -0
- data/lib/calendlyr/resources/webhook.rb +25 -0
- data/lib/calendlyr/version.rb +1 -1
- data/lib/calendlyr.rb +70 -18
- data/test/calendlyr/objects/activity_log_test.rb +26 -0
- data/test/calendlyr/objects/availabilities/rule_test.rb +24 -0
- data/test/calendlyr/objects/availabilities/user_busy_time_test.rb +21 -0
- data/test/calendlyr/objects/availabilities/user_schedule_test.rb +26 -0
- data/test/calendlyr/objects/event_test.rb +32 -0
- data/test/calendlyr/objects/event_type_test.rb +43 -0
- data/test/calendlyr/objects/event_types/available_time_test.rb +20 -0
- data/test/calendlyr/objects/event_types/membership_test.rb +32 -0
- data/test/calendlyr/objects/event_types/profile_test.rb +23 -0
- data/test/calendlyr/objects/events/cancellation_test.rb +16 -0
- data/test/calendlyr/objects/events/guest_test.rb +16 -0
- data/test/calendlyr/objects/events/invitee_no_show_test.rb +23 -0
- data/test/calendlyr/objects/events/invitee_test.rb +35 -0
- data/test/calendlyr/objects/group_test.rb +40 -0
- data/test/calendlyr/objects/groups/relationship_test.rb +43 -0
- data/test/calendlyr/objects/organization_test.rb +157 -0
- data/test/calendlyr/objects/organizations/invitation_test.rb +34 -0
- data/test/calendlyr/objects/organizations/membership_test.rb +38 -0
- data/test/calendlyr/objects/routing_form_test.rb +26 -0
- data/test/calendlyr/objects/routing_forms/submission_test.rb +22 -0
- data/test/calendlyr/objects/scheduling_link_test.rb +17 -0
- data/test/calendlyr/objects/share_test.rb +19 -0
- data/test/calendlyr/objects/user_test.rb +81 -0
- data/test/calendlyr/objects/webhooks/invite_payload_test.rb +42 -0
- data/test/calendlyr/objects/webhooks/payload_test.rb +16 -0
- data/test/calendlyr/objects/webhooks/subscription_test.rb +42 -0
- data/test/calendlyr/resource_test.rb +12 -3
- data/test/calendlyr/resources/availabilities/user_busy_times_test.rb +31 -0
- data/test/calendlyr/resources/availabilities/user_schedules_test.rb +37 -0
- data/test/calendlyr/resources/data_compliance_test.rb +11 -0
- data/test/calendlyr/resources/event_types/membership_test.rb +22 -0
- data/test/calendlyr/resources/event_types_test.rb +55 -10
- data/test/calendlyr/resources/events/invitee_test.rb +31 -0
- data/test/calendlyr/resources/events_test.rb +22 -10
- data/test/calendlyr/resources/groups_test.rb +26 -0
- data/test/calendlyr/resources/organizations_test.rb +36 -100
- data/test/calendlyr/resources/outgoing_communications_test.rb +16 -0
- data/test/calendlyr/resources/scheduling_links_test.rb +1 -1
- data/test/calendlyr/resources/users_test.rb +9 -33
- data/test/calendlyr/resources/webhooks_test.rb +22 -13
- data/test/fixtures/activity_log/list.json +38 -0
- data/test/fixtures/availabilities/user_busy_times_list.json +39 -0
- data/test/fixtures/availabilities/user_schedules_list.json +93 -0
- data/test/fixtures/availabilities/user_schedules_retrieve.json +22 -0
- data/test/fixtures/data_compliance/delete_scheduled_event_data.json +1 -0
- data/test/fixtures/event_invitees/list.json +6 -6
- data/test/fixtures/event_invitees/retrieve.json +3 -3
- data/test/fixtures/event_type_available_times/list.json +22 -0
- data/test/fixtures/event_type_hosts/list.json +76 -0
- data/test/fixtures/event_types/create_one_off.json +45 -0
- data/test/fixtures/event_types/list.json +18 -4
- data/test/fixtures/event_types/retrieve.json +13 -2
- data/test/fixtures/events/cancel_invitee.json +8 -0
- data/test/fixtures/events/create_invitee_no_show.json +7 -0
- data/test/fixtures/events/delete_invitee_no_show.json +1 -0
- data/test/fixtures/events/retrieve_invitee_no_show.json +7 -0
- data/test/fixtures/group_relationships/list.json +83 -0
- data/test/fixtures/group_relationships/retrieve.json +29 -0
- data/test/fixtures/groups/list.json +19 -0
- data/test/fixtures/groups/retrieve.json +9 -0
- data/test/fixtures/objects/activity_log.json +24 -0
- data/test/fixtures/objects/availabilities/rule.json +10 -0
- data/test/fixtures/objects/availabilities/user_busy_time.json +10 -0
- data/test/fixtures/objects/availabilities/user_schedule.json +69 -0
- data/test/fixtures/objects/availability_rule.json +10 -0
- data/test/fixtures/objects/event.json +36 -0
- data/test/fixtures/objects/event_type.json +91 -0
- data/test/fixtures/objects/event_type_host.json +65 -0
- data/test/fixtures/objects/event_types/available_time.json +6 -0
- data/test/fixtures/objects/event_types/membership.json +65 -0
- data/test/fixtures/objects/event_types/profile.json +5 -0
- data/test/fixtures/objects/events/cancellation.json +6 -0
- data/test/fixtures/objects/events/guest.json +5 -0
- data/test/fixtures/objects/events/invitee.json +46 -0
- data/test/fixtures/objects/events/invitee_no_show.json +5 -0
- data/test/fixtures/objects/group.json +7 -0
- data/test/fixtures/objects/groups/relationship.json +27 -0
- data/test/fixtures/objects/organization.json +8 -0
- data/test/fixtures/objects/organizations/invitation.json +10 -0
- data/test/fixtures/objects/organizations/membership.json +18 -0
- data/test/fixtures/objects/routing_form.json +28 -0
- data/test/fixtures/objects/routing_forms/submission.json +27 -0
- data/test/fixtures/objects/scheduling_links/event_type.json +5 -0
- data/test/fixtures/objects/share.json +43 -0
- data/test/fixtures/objects/user.json +13 -0
- data/test/fixtures/objects/webhooks/invite_payload.json +83 -0
- data/test/fixtures/objects/webhooks/payload.json +66 -0
- data/test/fixtures/objects/webhooks/subscription.json +15 -0
- data/test/fixtures/organization_memberships/list.json +29 -0
- data/test/fixtures/organization_memberships/retrieve.json +20 -0
- data/test/fixtures/organizations/list_invitations.json +4 -4
- data/test/fixtures/organizations/list_memberships.json +12 -9
- data/test/fixtures/organizations/retrieve_invitation.json +3 -3
- data/test/fixtures/organizations/retrieve_membership.json +3 -3
- data/test/fixtures/outgoing_communications/list.json +26 -0
- data/test/fixtures/resources/401.json +2 -2
- data/test/fixtures/resources/403.json +1 -1
- data/test/fixtures/resources/403_payment_required.json +4 -0
- data/test/fixtures/resources/424.json +4 -0
- data/test/fixtures/routing_forms/list.json +39 -0
- data/test/fixtures/routing_forms/list_routing_form_submission.json +38 -0
- data/test/fixtures/routing_forms/retrieve.json +30 -0
- data/test/fixtures/routing_forms/retrieve_routing_form_submission.json +29 -0
- data/test/fixtures/shares/create.json +45 -0
- data/test/fixtures/user_availability_schedules/list.json +93 -0
- data/test/fixtures/user_availability_schedules/retrieve.json +22 -0
- data/test/fixtures/user_busy_times/list.json +39 -0
- data/test/fixtures/users/reload.json +5 -4
- data/test/fixtures/users/retrieve.json +5 -4
- data/test/fixtures/webhooks/create.json +4 -4
- data/test/fixtures/webhooks/list.json +4 -4
- data/test/fixtures/webhooks/retrieve.json +4 -4
- data/test/fixtures/webhooks/sample.json +105 -0
- metadata +159 -62
- data/lib/calendlyr/objects/event_invitees.rb +0 -4
- data/lib/calendlyr/objects/event_types.rb +0 -4
- data/lib/calendlyr/objects/events.rb +0 -4
- data/lib/calendlyr/objects/invitations.rb +0 -11
- data/lib/calendlyr/objects/memberships.rb +0 -7
- data/lib/calendlyr/objects/organizations.rb +0 -35
- data/lib/calendlyr/objects/scheduling_links.rb +0 -4
- data/lib/calendlyr/objects/users.rb +0 -19
- data/lib/calendlyr/objects/webhooks.rb +0 -11
- data/lib/calendlyr/resources/event_invitees.rb +0 -12
- data/lib/calendlyr/resources/event_types.rb +0 -12
- data/lib/calendlyr/resources/events.rb +0 -12
- data/lib/calendlyr/resources/organizations.rb +0 -33
- data/lib/calendlyr/resources/users.rb +0 -11
- data/lib/calendlyr/resources/webhooks.rb +0 -21
- data/test/calendlyr/resources/event_invitees_test.rb +0 -29
- data/test/fixtures/resources/409.json +0 -4
@@ -0,0 +1,42 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "test_helper"
|
4
|
+
|
5
|
+
module Webhooks
|
6
|
+
class InviteePayloadObjectTest < Minitest::Test
|
7
|
+
def setup
|
8
|
+
json = JSON.parse(fixture_file("objects/webhooks/invite_payload")).merge(client: client)
|
9
|
+
@invite_payload = Calendlyr::Webhooks::InviteePayload.new(json)
|
10
|
+
|
11
|
+
response = {body: fixture_file("users/retrieve"), status: 200}
|
12
|
+
stub(path: "users/AAAAAAAAAAAAAAAA", response: response)
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_associated_event
|
16
|
+
response = {body: fixture_file("events/retrieve"), status: 200}
|
17
|
+
stub(path: "scheduled_events/AAAAAAAAAAAAAAAA", response: response)
|
18
|
+
|
19
|
+
event = @invite_payload.associated_event
|
20
|
+
|
21
|
+
assert_equal Calendlyr::Event, event.class
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_associated_routing_form_submission
|
25
|
+
response = {body: fixture_file("routing_forms/retrieve_routing_form_submission"), status: 200}
|
26
|
+
stub(path: "routing_form_submissions/AAAAAAAAAAAAAAAA", response: response)
|
27
|
+
|
28
|
+
routing_form = @invite_payload.associated_routing_form_submission
|
29
|
+
|
30
|
+
assert_equal Calendlyr::RoutingForms::Submission, routing_form.class
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_associated_invitee_no_show
|
34
|
+
response = {body: fixture_file("events/retrieve_invitee_no_show"), status: 200}
|
35
|
+
stub(path: "invitee_no_shows/6ee96ed4-83a3-4966-a278-cd19b3c02e09", response: response)
|
36
|
+
|
37
|
+
invitee_no_show = @invite_payload.associated_invitee_no_show
|
38
|
+
|
39
|
+
assert_equal Calendlyr::Events::InviteeNoShow, invitee_no_show.class
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "test_helper"
|
4
|
+
|
5
|
+
module Webhooks
|
6
|
+
class PayloadObjectTest < Minitest::Test
|
7
|
+
def setup
|
8
|
+
json = JSON.parse(fixture_file("objects/webhooks/payload")).merge(client: client)
|
9
|
+
@payload = Calendlyr::Webhooks::Payload.new(json)
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_event
|
13
|
+
assert_equal "invitee.created", @payload.event
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "test_helper"
|
4
|
+
|
5
|
+
module Webhooks
|
6
|
+
class SubscriptionObjectTest < Minitest::Test
|
7
|
+
def setup
|
8
|
+
json = JSON.parse(fixture_file("objects/webhooks/subscription")).merge(client: client)
|
9
|
+
@subscription = Calendlyr::Webhooks::Subscription.new(json)
|
10
|
+
|
11
|
+
user_uuid = "AAAAAAAAAAAAAAAA"
|
12
|
+
response = {body: fixture_file("users/retrieve"), status: 200}
|
13
|
+
stub(path: "users/#{user_uuid}", response: response)
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_associated_organization
|
17
|
+
organization = @subscription.associated_organization
|
18
|
+
|
19
|
+
assert_equal Calendlyr::Organization, organization.class
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_associated_user
|
23
|
+
user = @subscription.associated_user
|
24
|
+
|
25
|
+
assert_equal Calendlyr::User, user.class
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_associated_creator
|
29
|
+
creator = @subscription.associated_creator
|
30
|
+
|
31
|
+
assert_equal Calendlyr::User, creator.class
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_active?
|
35
|
+
assert @subscription.active?
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_disabled?
|
39
|
+
refute @subscription.disabled?
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -4,10 +4,19 @@ require "test_helper"
|
|
4
4
|
|
5
5
|
class ResourceTest < Minitest::Test
|
6
6
|
def test_handle_response_error
|
7
|
-
|
8
|
-
|
7
|
+
Calendlyr::ResponseErrorHandler::ERROR_TYPES.each do |error_code, error_class|
|
8
|
+
stub(path: "users/me", response: {body: fixture_file("resources/#{error_code}"), status: error_code.to_i})
|
9
9
|
|
10
|
-
|
10
|
+
assert_raises "Calendlyr::#{error_class}" do
|
11
|
+
client.me
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_handle_response_error_payment
|
17
|
+
stub(path: "users/me", response: {body: fixture_file("resources/403_payment_required"), status: 403})
|
18
|
+
|
19
|
+
assert_raises Calendlyr::PaymentRequired do
|
11
20
|
client.me
|
12
21
|
end
|
13
22
|
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "test_helper"
|
4
|
+
|
5
|
+
module Availabilities
|
6
|
+
class UserBusyTimeTest < Minitest::Test
|
7
|
+
def setup
|
8
|
+
@user_uri = "https://api.calendly.com/users/abc123"
|
9
|
+
@start_time = "2020-01-02T20:00:00.000000Z"
|
10
|
+
@end_time = "2020-01-02T20:30:00.000000Z"
|
11
|
+
response = {body: fixture_file("user_busy_times/list"), status: 200}
|
12
|
+
stub(path: "user_busy_times?user=#{@user_uri}&start_time=#{@start_time}&end_time=#{@end_time}", response: response)
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_list
|
16
|
+
user_busy_times = client.availability.list_user_busy_times(user: @user_uri, start_time: @start_time, end_time: @end_time)
|
17
|
+
|
18
|
+
assert_equal Calendlyr::Collection, user_busy_times.class
|
19
|
+
assert_equal Calendlyr::Availabilities::UserBusyTime, user_busy_times.data.first.class
|
20
|
+
assert_equal 5, user_busy_times.data.count
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_list_from_user
|
24
|
+
user_busy_times = client.me.busy_times(start_time: @start_time, end_time: @end_time)
|
25
|
+
|
26
|
+
assert_equal Calendlyr::Collection, user_busy_times.class
|
27
|
+
assert_equal Calendlyr::Availabilities::UserBusyTime, user_busy_times.data.first.class
|
28
|
+
assert_equal 5, user_busy_times.data.count
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "test_helper"
|
4
|
+
|
5
|
+
module Availabilities
|
6
|
+
class UserScheduleTest < Minitest::Test
|
7
|
+
def setup
|
8
|
+
@user_uri = "https://api.calendly.com/users/abc123"
|
9
|
+
@uuid = "abc123"
|
10
|
+
stub(path: "users/abc123", response: {body: fixture_file("users/retrieve"), status: 200})
|
11
|
+
stub(path: "user_availability_schedules?user=#{@user_uri}", response: {body: fixture_file("user_availability_schedules/list"), status: 200})
|
12
|
+
stub(path: "user_availability_schedules/#{@uuid}", response: {body: fixture_file("user_availability_schedules/retrieve"), status: 200})
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_list
|
16
|
+
user_availability_schedules = client.availability.list_user_schedules(user: @user_uri)
|
17
|
+
|
18
|
+
assert_equal 2, user_availability_schedules.data.count
|
19
|
+
assert_equal Calendlyr::Collection, user_availability_schedules.class
|
20
|
+
assert_equal Calendlyr::Availabilities::UserSchedule, user_availability_schedules.data.first.class
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_list_from_user
|
24
|
+
availability_schedules = client.me.availability_schedules
|
25
|
+
|
26
|
+
assert_equal Calendlyr::Collection, availability_schedules.class
|
27
|
+
assert_equal Calendlyr::Availabilities::UserSchedule, availability_schedules.data.first.class
|
28
|
+
assert_equal 2, availability_schedules.data.count
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_retrieve
|
32
|
+
user_availability_schedule = client.availability.retrieve_user_schedule(uuid: @uuid)
|
33
|
+
|
34
|
+
assert_equal Calendlyr::Availabilities::UserSchedule, user_availability_schedule.class
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -10,4 +10,15 @@ class DataComplianceResourceTest < Minitest::Test
|
|
10
10
|
|
11
11
|
assert client.data_compliance.delete_invitee_data(**body)
|
12
12
|
end
|
13
|
+
|
14
|
+
def test_delete_scheduled_event_data
|
15
|
+
body = {
|
16
|
+
start_time: "2019-01-02T03:04:05.678123Z",
|
17
|
+
end_time: "2021-01-01T02:04:05.678123Z"
|
18
|
+
}
|
19
|
+
response = {body: fixture_file("data_compliance/delete_scheduled_event_data"), status: 202}
|
20
|
+
stub(method: :post, path: "data_compliance/deletion/events", body: body, response: response)
|
21
|
+
|
22
|
+
assert client.data_compliance.delete_scheduled_event_data(**body)
|
23
|
+
end
|
13
24
|
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "test_helper"
|
4
|
+
|
5
|
+
module EventTypes
|
6
|
+
class MembershipTest < Minitest::Test
|
7
|
+
def setup
|
8
|
+
@event_type_uri = "https://api.calendly.com/event_types/abc123"
|
9
|
+
response = {body: fixture_file("event_type_hosts/list"), status: 200}
|
10
|
+
stub(path: "event_type_memberships?event_type=#{@event_type_uri}", response: response)
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_list
|
14
|
+
event_type_hosts = client.event_types.list_memberships(event_type: @event_type_uri)
|
15
|
+
|
16
|
+
assert_equal Calendlyr::Collection, event_type_hosts.class
|
17
|
+
assert_equal Calendlyr::EventTypes::Membership, event_type_hosts.data.first.class
|
18
|
+
assert_equal 1, event_type_hosts.data.count
|
19
|
+
assert_equal "sNjq4TvMDfUHEl7zHRR0k0E1PCEJWvdi", event_type_hosts.next_page_token
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -3,24 +3,69 @@
|
|
3
3
|
require "test_helper"
|
4
4
|
|
5
5
|
class EventTypesResourceTest < Minitest::Test
|
6
|
+
def setup
|
7
|
+
@user_uri = "https://api.calendly.com/users/abc123"
|
8
|
+
@organization_uri = "https://api.calendly.com/organizations/abc123"
|
9
|
+
@event_type_uuid = "AAAAAAAAAAAAAAAA"
|
10
|
+
list_response = {body: fixture_file("event_types/list"), status: 200}
|
11
|
+
stub(path: "event_types?user=#{@user_uri}&organization=#{@organization_uri}", response: list_response)
|
12
|
+
stub(path: "event_types?organization=#{@organization_uri}", response: list_response)
|
13
|
+
stub(path: "event_types?user=#{@user_uri}", response: list_response)
|
14
|
+
retrieve_response = {body: fixture_file("event_types/retrieve"), status: 200}
|
15
|
+
stub(path: "event_types/#{@event_type_uuid}", response: retrieve_response)
|
16
|
+
end
|
17
|
+
|
6
18
|
def test_list
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
19
|
+
event_types = client.event_types.list(user: @user_uri, organization: @organization_uri)
|
20
|
+
|
21
|
+
assert_equal Calendlyr::Collection, event_types.class
|
22
|
+
assert_equal Calendlyr::EventType, event_types.data.first.class
|
23
|
+
assert_equal 1, event_types.data.count
|
24
|
+
assert_equal "sNjq4TvMDfUHEl7zHRR0k0E1PCEJWvdi", event_types.next_page_token
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_list_from_user
|
28
|
+
event_types = client.me.event_types
|
12
29
|
|
13
30
|
assert_equal Calendlyr::Collection, event_types.class
|
14
31
|
assert_equal Calendlyr::EventType, event_types.data.first.class
|
15
|
-
assert_equal 1, event_types.count
|
32
|
+
assert_equal 1, event_types.data.count
|
16
33
|
assert_equal "sNjq4TvMDfUHEl7zHRR0k0E1PCEJWvdi", event_types.next_page_token
|
17
34
|
end
|
18
35
|
|
19
36
|
def test_retrieve
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
37
|
+
event_type = client.event_types.retrieve(uuid: @event_type_uuid)
|
38
|
+
|
39
|
+
assert_equal Calendlyr::EventType, event_type.class
|
40
|
+
assert_equal "https://api.calendly.com/event_types/AAAAAAAAAAAAAAAA", event_type.uri
|
41
|
+
assert_equal "15 Minute Meeting", event_type.name
|
42
|
+
assert_equal "acmesales", event_type.slug
|
43
|
+
assert_equal 30, event_type.duration
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_create_one_off
|
47
|
+
body = {
|
48
|
+
name: "My Meeting",
|
49
|
+
host: "https://api.calendly.com/users/AAAAAAAAAAAAAAAA",
|
50
|
+
co_hosts: [
|
51
|
+
"https://api.calendly.com/users/BBBBBBBBBBBBBBBB",
|
52
|
+
"https://api.calendly.com/users/CCCCCCCCCCCCCCCC"
|
53
|
+
],
|
54
|
+
duration: 30,
|
55
|
+
timezone: "string",
|
56
|
+
date_setting: {
|
57
|
+
type: "date_range",
|
58
|
+
start_date: "2020-01-07",
|
59
|
+
end_date: "2020-01-09"
|
60
|
+
},
|
61
|
+
location: {
|
62
|
+
kind: "physical",
|
63
|
+
location: "Main Office",
|
64
|
+
additonal_info: "string"
|
65
|
+
}
|
66
|
+
}
|
67
|
+
stub(method: :post, path: "one_off_event_types", response: {body: fixture_file("event_types/create_one_off"), status: 201})
|
68
|
+
event_type = client.event_types.create_one_off(**body)
|
24
69
|
|
25
70
|
assert_equal Calendlyr::EventType, event_type.class
|
26
71
|
assert_equal "https://api.calendly.com/event_types/AAAAAAAAAAAAAAAA", event_type.uri
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "test_helper"
|
4
|
+
|
5
|
+
module Events
|
6
|
+
class InviteeTest < Minitest::Test
|
7
|
+
def test_list
|
8
|
+
event_uuid = "ABCDABCDABCDABCD"
|
9
|
+
response = {body: fixture_file("event_invitees/list"), status: 200}
|
10
|
+
stub(path: "scheduled_events/#{event_uuid}/invitees", response: response)
|
11
|
+
event_invitees = client.events.list_invitees(uuid: event_uuid)
|
12
|
+
|
13
|
+
assert_equal Calendlyr::Collection, event_invitees.class
|
14
|
+
assert_equal Calendlyr::Events::Invitee, event_invitees.data.first.class
|
15
|
+
assert_equal 1, event_invitees.data.count
|
16
|
+
assert_equal "sNjq4TvMDfUHEl7zHRR0k0E1PCEJWvdi", event_invitees.next_page_token
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_retrieve
|
20
|
+
event_uuid = "abc123"
|
21
|
+
invitee_uuid = "abc123"
|
22
|
+
response = {body: fixture_file("event_invitees/retrieve"), status: 200}
|
23
|
+
stub(path: "scheduled_events/#{event_uuid}/invitees/#{invitee_uuid}", response: response)
|
24
|
+
event_invitee = client.events.retrieve_invitee(event_uuid: event_uuid, invitee_uuid: invitee_uuid)
|
25
|
+
|
26
|
+
assert_equal Calendlyr::Events::Invitee, event_invitee.class
|
27
|
+
assert_equal "https://api.calendly.com/api/v2/scheduled_events/ABCDABCDABCDABCD/invitees/ABCDABCDABCDABCD", event_invitee.uri
|
28
|
+
assert_equal "John Doe", event_invitee.name
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -3,24 +3,36 @@
|
|
3
3
|
require "test_helper"
|
4
4
|
|
5
5
|
class EventsResourceTest < Minitest::Test
|
6
|
+
def setup
|
7
|
+
@user_uri = "https://api.calendly.com/users/abc123"
|
8
|
+
@organization_uri = "https://api.calendly.com/organizations/abc123"
|
9
|
+
@event_uuid = "abc123"
|
10
|
+
list_response = {body: fixture_file("events/list"), status: 200}
|
11
|
+
stub(path: "scheduled_events?user=#{@user_uri}&organization=#{@organization_uri}", response: list_response)
|
12
|
+
retrieve_response = {body: fixture_file("events/retrieve"), status: 200}
|
13
|
+
stub(path: "scheduled_events/#{@event_uuid}", response: retrieve_response)
|
14
|
+
end
|
15
|
+
|
6
16
|
def test_list
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
17
|
+
events = client.events.list(user: @user_uri, organization: @organization_uri)
|
18
|
+
|
19
|
+
assert_equal Calendlyr::Collection, events.class
|
20
|
+
assert_equal Calendlyr::Event, events.data.first.class
|
21
|
+
assert_equal 1, events.data.count
|
22
|
+
assert_equal "sNjq4TvMDfUHEl7zHRR0k0E1PCEJWvdi", events.next_page_token
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_list_from_user
|
26
|
+
events = client.me.events
|
12
27
|
|
13
28
|
assert_equal Calendlyr::Collection, events.class
|
14
29
|
assert_equal Calendlyr::Event, events.data.first.class
|
15
|
-
assert_equal 1, events.count
|
30
|
+
assert_equal 1, events.data.count
|
16
31
|
assert_equal "sNjq4TvMDfUHEl7zHRR0k0E1PCEJWvdi", events.next_page_token
|
17
32
|
end
|
18
33
|
|
19
34
|
def test_retrieve
|
20
|
-
|
21
|
-
response = {body: fixture_file("events/retrieve"), status: 200}
|
22
|
-
stub(path: "scheduled_events/#{event_uuid}", response: response)
|
23
|
-
event = client.events.retrieve(event_uuid: event_uuid)
|
35
|
+
event = client.events.retrieve(uuid: @event_uuid)
|
24
36
|
|
25
37
|
assert_equal Calendlyr::Event, event.class
|
26
38
|
assert_equal "https://api.calendly.com/scheduled_events/GBGBDCAADAEDCRZ2", event.uri
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "test_helper"
|
4
|
+
|
5
|
+
class GroupsResourceTest < Minitest::Test
|
6
|
+
def test_list
|
7
|
+
organization = "https://api.calendly.com/groups/AAAAAAAAAAAAAAAA"
|
8
|
+
response = {body: fixture_file("groups/list"), status: 200}
|
9
|
+
stub(path: "groups?organization=#{organization}", response: response)
|
10
|
+
|
11
|
+
groups = client.groups.list(organization: organization)
|
12
|
+
|
13
|
+
assert_equal 1, groups.data.size
|
14
|
+
assert_instance_of Calendlyr::Group, groups.data.first
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_retrieve
|
18
|
+
uuid = "abc123"
|
19
|
+
response = {body: fixture_file("group_relationships/retrieve"), status: 200}
|
20
|
+
stub(path: "group_relationships/#{uuid}", response: response)
|
21
|
+
relationship = client.groups.retrieve_relationship(uuid: uuid)
|
22
|
+
|
23
|
+
assert_instance_of Calendlyr::Groups::Relationship, relationship
|
24
|
+
assert_equal "member", relationship.role
|
25
|
+
end
|
26
|
+
end
|
@@ -11,145 +11,81 @@ class OrganizationsResourceTest < Minitest::Test
|
|
11
11
|
|
12
12
|
invitation = client.organizations.invite(organization_uuid: organization_uuid, email: email)
|
13
13
|
|
14
|
-
assert_equal Calendlyr::Invitation, invitation.class
|
14
|
+
assert_equal Calendlyr::Organizations::Invitation, invitation.class
|
15
15
|
assert_equal email, invitation.email
|
16
16
|
end
|
17
17
|
|
18
18
|
def test_list_invitations
|
19
|
-
organization_uuid = "
|
19
|
+
organization_uuid = "abc123"
|
20
20
|
response = {body: fixture_file("organizations/list_invitations"), status: 200}
|
21
21
|
stub(path: "organizations/#{organization_uuid}/invitations", response: response)
|
22
|
-
invitations = client.organizations.list_invitations(
|
22
|
+
invitations = client.organizations.list_invitations(uuid: organization_uuid)
|
23
23
|
|
24
24
|
assert_equal Calendlyr::Collection, invitations.class
|
25
|
-
assert_equal Calendlyr::Invitation, invitations.data.first.class
|
25
|
+
assert_equal Calendlyr::Organizations::Invitation, invitations.data.first.class
|
26
26
|
assert_equal 1, invitations.count
|
27
27
|
assert_equal "sNjq4TvMDfUHEl7zHRR0k0E1PCEJWvdi", invitations.next_page_token
|
28
28
|
end
|
29
29
|
|
30
|
-
def test_list_memberships
|
31
|
-
user_uri = "AAAAAAAAAAAAAAAA"
|
32
|
-
organization_uri = "AAAAAAAAAAAAAAAA"
|
33
|
-
response = {body: fixture_file("organizations/list_memberships"), status: 200}
|
34
|
-
stub(path: "organization_memberships?user=#{user_uri}&organization=#{organization_uri}", response: response)
|
35
|
-
memberships = client.organizations.list_memberships(user_uri: user_uri, organization_uri: organization_uri)
|
36
|
-
|
37
|
-
assert_equal Calendlyr::Collection, memberships.class
|
38
|
-
assert_equal Calendlyr::Membership, memberships.data.first.class
|
39
|
-
assert_equal 1, memberships.count
|
40
|
-
assert_equal "sNjq4TvMDfUHEl7zHRR0k0E1PCEJWvdi", memberships.next_page_token
|
41
|
-
end
|
42
|
-
|
43
|
-
def test_list_webhooks
|
44
|
-
stub(path: "webhook_subscriptions?organization=#{client.organization.uri}&scope=user", response: {body: fixture_file("webhooks/list"), status: 200})
|
45
|
-
webhooks = client.organization.list_webhooks(scope: "user")
|
46
|
-
|
47
|
-
assert_equal Calendlyr::Collection, webhooks.class
|
48
|
-
assert_equal Calendlyr::Webhook, webhooks.data.first.class
|
49
|
-
assert_equal 1, webhooks.count
|
50
|
-
assert_equal "sNjq4TvMDfUHEl7zHRR0k0E1PCEJWvdi", webhooks.next_page_token
|
51
|
-
end
|
52
|
-
|
53
30
|
def test_create_webhook
|
54
31
|
body = {url: "https://blah.foo/bar", events: ["invitee.created"], organization: client.organization.uri, scope: "user", user: client.me.uri}
|
55
32
|
stub(method: :post, path: "webhook_subscriptions", body: body, response: {body: fixture_file("webhooks/create"), status: 201})
|
56
33
|
|
57
|
-
assert client.webhooks.create(
|
34
|
+
assert client.webhooks.create(**body)
|
58
35
|
end
|
59
36
|
|
60
37
|
def test_retrieve_invitation
|
61
|
-
invitation_uuid = "
|
38
|
+
invitation_uuid = "abc123"
|
62
39
|
|
63
40
|
stub(path: "organizations/#{client.organization.uuid}/invitations/#{invitation_uuid}", response: {body: fixture_file("organizations/retrieve_invitation"), status: 200})
|
64
41
|
stub(method: :delete, path: "organizations/#{client.organization.uuid}/invitations/#{invitation_uuid}", response: {body: fixture_file("organizations/revoke_invitation")})
|
65
|
-
invitation = client.organizations.retrieve_invitation(
|
42
|
+
invitation = client.organizations.retrieve_invitation(org_uuid: client.organization.uuid, uuid: invitation_uuid)
|
66
43
|
|
67
|
-
assert_equal Calendlyr::Invitation, invitation.class
|
44
|
+
assert_equal Calendlyr::Organizations::Invitation, invitation.class
|
68
45
|
assert_equal "test@example.com", invitation.email
|
69
46
|
|
70
47
|
assert invitation.associated_organization
|
71
48
|
assert invitation.revoke
|
72
49
|
end
|
73
50
|
|
74
|
-
def test_retrieve_membership
|
75
|
-
membership_uuid = "AAAAAAAAAAAAAAAA"
|
76
|
-
response = {body: fixture_file("organizations/retrieve_membership"), status: 200}
|
77
|
-
stub(path: "organization_memberships/#{membership_uuid}", response: response)
|
78
|
-
stub(path: "users/#{membership_uuid}", response: {body: fixture_file("users/retrieve"), status: 200})
|
79
|
-
membership = client.organizations.retrieve_membership(membership_uuid: membership_uuid)
|
80
|
-
|
81
|
-
assert_equal Calendlyr::Membership, membership.class
|
82
|
-
assert_equal "test@example.com", membership.user.email
|
83
|
-
assert_equal membership.associated_user, client.users.retrieve(user_uuid: membership_uuid)
|
84
|
-
end
|
85
|
-
|
86
51
|
def test_revoke_invitation
|
87
|
-
organization_uuid = "
|
88
|
-
invitation_uuid = "
|
52
|
+
organization_uuid = "abc123"
|
53
|
+
invitation_uuid = "abc123"
|
89
54
|
response = {body: fixture_file("organizations/revoke_invitation")}
|
90
55
|
stub(method: :delete, path: "organizations/#{organization_uuid}/invitations/#{invitation_uuid}", response: response)
|
91
|
-
assert client.organizations.revoke_invitation(
|
92
|
-
end
|
93
|
-
|
94
|
-
def test_remove_user
|
95
|
-
membership_uuid = "AAAAAAAAAAAAAAAA"
|
96
|
-
response = {body: fixture_file("organizations/remove_user")}
|
97
|
-
stub(method: :delete, path: "organization_memberships/#{membership_uuid}", response: response)
|
98
|
-
assert client.organizations.remove_user(membership_uuid: membership_uuid)
|
99
|
-
end
|
100
|
-
|
101
|
-
def test_organization_invite_user
|
102
|
-
email = "email@example.com"
|
103
|
-
response = {body: fixture_file("organizations/invite"), status: 201}
|
104
|
-
stub(method: :post, path: "organizations/#{client.organization.uuid}/invitations", body: {email: email}, response: response)
|
105
|
-
|
106
|
-
invitation = client.organization.invite_user(email: email)
|
107
|
-
|
108
|
-
assert_equal Calendlyr::Invitation, invitation.class
|
109
|
-
assert_equal email, invitation.email
|
110
|
-
end
|
111
|
-
|
112
|
-
def test_organization_list_invitations
|
113
|
-
stub(path: "organizations/#{client.organization.uuid}/invitations", response: {body: fixture_file("organizations/list_invitations"), status: 200})
|
114
|
-
invitations = client.organization.list_invitations
|
115
|
-
|
116
|
-
assert_equal Calendlyr::Collection, invitations.class
|
117
|
-
assert_equal Calendlyr::Invitation, invitations.data.first.class
|
118
|
-
assert_equal 1, invitations.count
|
119
|
-
assert_equal "sNjq4TvMDfUHEl7zHRR0k0E1PCEJWvdi", invitations.next_page_token
|
120
|
-
end
|
121
|
-
|
122
|
-
def test_organization_revoke_invitation
|
123
|
-
stub(method: :delete, path: "organizations/#{client.organization.uuid}/invitations/AAAAAAAAAAAAAAAA", response: {body: fixture_file("organizations/revoke_invitation")})
|
124
|
-
assert client.organization.revoke_invitation(invitation_uuid: "AAAAAAAAAAAAAAAA")
|
56
|
+
assert client.organizations.revoke_invitation(org_uuid: organization_uuid, uuid: invitation_uuid)
|
125
57
|
end
|
126
58
|
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
59
|
+
# Memberships
|
60
|
+
def test_list_memberships
|
61
|
+
user_uri = "abc123"
|
62
|
+
organization_uri = "abc123"
|
63
|
+
response = {body: fixture_file("organizations/list_memberships"), status: 200}
|
64
|
+
stub(path: "organization_memberships?user=#{user_uri}&organization=#{organization_uri}", response: response)
|
65
|
+
memberships = client.organizations.list_memberships(user: user_uri, organization: organization_uri)
|
131
66
|
|
132
|
-
assert_equal Calendlyr::
|
133
|
-
assert_equal
|
67
|
+
assert_equal Calendlyr::Collection, memberships.class
|
68
|
+
assert_equal Calendlyr::Organizations::Membership, memberships.data.first.class
|
69
|
+
assert_equal 1, memberships.data.count
|
70
|
+
assert_equal "sNjq4TvMDfUHEl7zHRR0k0E1PCEJWvdi", memberships.next_page_token
|
134
71
|
end
|
135
72
|
|
136
|
-
def
|
137
|
-
|
138
|
-
|
73
|
+
def test_retrieve_membership
|
74
|
+
membership_uuid = "abc123"
|
75
|
+
response = {body: fixture_file("organizations/retrieve_membership"), status: 200}
|
76
|
+
stub(path: "organization_memberships/#{membership_uuid}", response: response)
|
77
|
+
stub(path: "users/#{membership_uuid}", response: {body: fixture_file("users/retrieve"), status: 200})
|
78
|
+
membership = client.organizations.retrieve_membership(uuid: membership_uuid)
|
139
79
|
|
140
|
-
assert_equal Calendlyr::
|
141
|
-
assert_equal
|
142
|
-
assert_equal
|
143
|
-
assert_equal "sNjq4TvMDfUHEl7zHRR0k0E1PCEJWvdi", events.next_page_token
|
80
|
+
assert_equal Calendlyr::Organizations::Membership, membership.class
|
81
|
+
assert_equal "test@example.com", membership.user.email
|
82
|
+
assert_equal membership.associated_user, client.users.retrieve(uuid: membership_uuid)
|
144
83
|
end
|
145
84
|
|
146
|
-
def
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
assert_equal Calendlyr::Membership, memberships.data.first.class
|
152
|
-
assert_equal 1, memberships.count
|
153
|
-
assert_equal "sNjq4TvMDfUHEl7zHRR0k0E1PCEJWvdi", memberships.next_page_token
|
85
|
+
def test_remove_user
|
86
|
+
membership_uuid = "abc123"
|
87
|
+
response = {body: fixture_file("organizations/remove_user")}
|
88
|
+
stub(method: :delete, path: "organization_memberships/#{membership_uuid}", response: response)
|
89
|
+
assert client.organizations.remove_user(uuid: membership_uuid)
|
154
90
|
end
|
155
91
|
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "test_helper"
|
4
|
+
|
5
|
+
class OutgoingCommunicationsResourceTest < Minitest::Test
|
6
|
+
def test_list
|
7
|
+
response = {body: fixture_file("outgoing_communications/list"), status: 200}
|
8
|
+
stub(path: "outgoing_communications", response: response)
|
9
|
+
outgoing_communications = client.outgoing_communications.list
|
10
|
+
|
11
|
+
assert_equal Calendlyr::Collection, outgoing_communications.class
|
12
|
+
assert_equal Calendlyr::Object, outgoing_communications.data.first.class
|
13
|
+
assert_equal 1, outgoing_communications.data.count
|
14
|
+
assert_equal "sms", outgoing_communications.data.first.type
|
15
|
+
end
|
16
|
+
end
|
@@ -10,6 +10,6 @@ class SchedulingLinksResourceTest < Minitest::Test
|
|
10
10
|
response = {body: fixture_file("scheduling_links/create"), status: 201}
|
11
11
|
stub(method: :post, path: "scheduling_links", body: {owner: owner_uri, max_event_count: max_event_count, owner_type: owner_type}, response: response)
|
12
12
|
|
13
|
-
assert client.scheduling_links.create(
|
13
|
+
assert client.scheduling_links.create(owner: owner_uri, max_event_count: max_event_count, owner_type: owner_type)
|
14
14
|
end
|
15
15
|
end
|