zendesk2 1.9.0 → 1.10.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +30 -0
- data/.travis.yml +3 -1
- data/Gemfile +4 -5
- data/Guardfile +4 -3
- data/Rakefile +4 -3
- data/lib/zendesk2.rb +9 -6
- data/lib/zendesk2/attributes.rb +11 -8
- data/lib/zendesk2/audit_event.rb +5 -3
- data/lib/zendesk2/categories.rb +4 -3
- data/lib/zendesk2/category.rb +10 -5
- data/lib/zendesk2/client.rb +3 -3
- data/lib/zendesk2/collection.rb +35 -21
- data/lib/zendesk2/create_category.rb +10 -9
- data/lib/zendesk2/create_forum.rb +11 -10
- data/lib/zendesk2/create_group.rb +13 -12
- data/lib/zendesk2/create_membership.rb +21 -20
- data/lib/zendesk2/create_organization.rb +24 -18
- data/lib/zendesk2/create_ticket.rb +60 -56
- data/lib/zendesk2/create_ticket_field.rb +24 -22
- data/lib/zendesk2/create_topic.rb +11 -10
- data/lib/zendesk2/create_topic_comment.rb +12 -11
- data/lib/zendesk2/create_user.rb +54 -41
- data/lib/zendesk2/create_user_field.rb +22 -21
- data/lib/zendesk2/create_user_identity.rb +18 -15
- data/lib/zendesk2/create_view.rb +62 -62
- data/lib/zendesk2/destroy_category.rb +2 -1
- data/lib/zendesk2/destroy_forum.rb +2 -1
- data/lib/zendesk2/destroy_group.rb +3 -2
- data/lib/zendesk2/destroy_membership.rb +7 -5
- data/lib/zendesk2/destroy_organization.rb +3 -2
- data/lib/zendesk2/destroy_ticket.rb +3 -2
- data/lib/zendesk2/destroy_ticket_field.rb +3 -2
- data/lib/zendesk2/destroy_topic.rb +3 -2
- data/lib/zendesk2/destroy_topic_comment.rb +4 -3
- data/lib/zendesk2/destroy_user.rb +11 -10
- data/lib/zendesk2/destroy_user_field.rb +3 -2
- data/lib/zendesk2/destroy_user_identity.rb +4 -3
- data/lib/zendesk2/destroy_view.rb +3 -2
- data/lib/zendesk2/error.rb +1 -1
- data/lib/zendesk2/forum.rb +36 -18
- data/lib/zendesk2/forums.rb +4 -3
- data/lib/zendesk2/get_assignable_groups.rb +3 -2
- data/lib/zendesk2/get_categories.rb +2 -1
- data/lib/zendesk2/get_category.rb +3 -2
- data/lib/zendesk2/get_ccd_tickets.rb +4 -3
- data/lib/zendesk2/get_current_user.rb +3 -2
- data/lib/zendesk2/get_forum.rb +3 -2
- data/lib/zendesk2/get_forums.rb +2 -1
- data/lib/zendesk2/get_group.rb +3 -2
- data/lib/zendesk2/get_groups.rb +2 -1
- data/lib/zendesk2/get_membership.rb +3 -2
- data/lib/zendesk2/get_memberships.rb +3 -2
- data/lib/zendesk2/get_organization.rb +3 -2
- data/lib/zendesk2/get_organization_by_external_id.rb +8 -5
- data/lib/zendesk2/get_organization_memberships.rb +5 -2
- data/lib/zendesk2/get_organization_tickets.rb +7 -5
- data/lib/zendesk2/get_organization_users.rb +6 -5
- data/lib/zendesk2/get_organizations.rb +2 -1
- data/lib/zendesk2/get_requested_tickets.rb +5 -4
- data/lib/zendesk2/get_ticket.rb +3 -2
- data/lib/zendesk2/get_ticket_audit.rb +5 -4
- data/lib/zendesk2/get_ticket_audits.rb +4 -3
- data/lib/zendesk2/get_ticket_comments.rb +6 -5
- data/lib/zendesk2/get_ticket_field.rb +3 -2
- data/lib/zendesk2/get_ticket_fields.rb +2 -1
- data/lib/zendesk2/get_ticket_metric.rb +4 -3
- data/lib/zendesk2/get_ticket_metrics.rb +3 -2
- data/lib/zendesk2/get_tickets.rb +2 -1
- data/lib/zendesk2/get_topic.rb +3 -2
- data/lib/zendesk2/get_topic_comment.rb +4 -3
- data/lib/zendesk2/get_topic_comments.rb +5 -4
- data/lib/zendesk2/get_topics.rb +2 -1
- data/lib/zendesk2/get_user.rb +7 -7
- data/lib/zendesk2/get_user_field.rb +3 -2
- data/lib/zendesk2/get_user_fields.rb +3 -2
- data/lib/zendesk2/get_user_identities.rb +4 -3
- data/lib/zendesk2/get_user_identity.rb +4 -3
- data/lib/zendesk2/get_user_memberships.rb +4 -3
- data/lib/zendesk2/get_user_organizations.rb +5 -4
- data/lib/zendesk2/get_users.rb +3 -2
- data/lib/zendesk2/get_view.rb +3 -2
- data/lib/zendesk2/get_view_tickets.rb +19 -16
- data/lib/zendesk2/get_views.rb +2 -1
- data/lib/zendesk2/group.rb +6 -5
- data/lib/zendesk2/groups.rb +7 -6
- data/lib/zendesk2/help_center.rb +15 -0
- data/lib/zendesk2/help_center/access_policy.rb +3 -2
- data/lib/zendesk2/help_center/article.rb +10 -7
- data/lib/zendesk2/help_center/articles.rb +7 -7
- data/lib/zendesk2/help_center/categories.rb +3 -2
- data/lib/zendesk2/help_center/category.rb +8 -7
- data/lib/zendesk2/help_center/create_help_center_article.rb +31 -29
- data/lib/zendesk2/help_center/create_help_center_category.rb +17 -16
- data/lib/zendesk2/help_center/create_help_center_post.rb +37 -0
- data/lib/zendesk2/help_center/create_help_center_section.rb +32 -31
- data/lib/zendesk2/help_center/create_help_center_topic.rb +36 -0
- data/lib/zendesk2/help_center/create_help_center_translation.rb +15 -14
- data/lib/zendesk2/help_center/destroy_help_center_article.rb +3 -2
- data/lib/zendesk2/help_center/destroy_help_center_category.rb +3 -2
- data/lib/zendesk2/help_center/destroy_help_center_post.rb +15 -0
- data/lib/zendesk2/help_center/destroy_help_center_section.rb +3 -2
- data/lib/zendesk2/help_center/destroy_help_center_topic.rb +15 -0
- data/lib/zendesk2/help_center/destroy_help_center_translation.rb +2 -1
- data/lib/zendesk2/help_center/get_help_center_access_policy.rb +6 -5
- data/lib/zendesk2/help_center/get_help_center_article.rb +7 -9
- data/lib/zendesk2/help_center/get_help_center_articles.rb +3 -2
- data/lib/zendesk2/help_center/get_help_center_categories.rb +6 -2
- data/lib/zendesk2/help_center/get_help_center_categories_articles.rb +8 -7
- data/lib/zendesk2/help_center/get_help_center_categories_sections.rb +6 -5
- data/lib/zendesk2/help_center/get_help_center_category.rb +7 -9
- data/lib/zendesk2/help_center/get_help_center_post.rb +19 -0
- data/lib/zendesk2/help_center/get_help_center_posts.rb +28 -0
- data/lib/zendesk2/help_center/get_help_center_section.rb +8 -10
- data/lib/zendesk2/help_center/get_help_center_sections.rb +3 -2
- data/lib/zendesk2/help_center/get_help_center_sections_articles.rb +9 -8
- data/lib/zendesk2/help_center/get_help_center_topic.rb +14 -0
- data/lib/zendesk2/help_center/get_help_center_topics.rb +10 -0
- data/lib/zendesk2/help_center/get_help_center_translation.rb +5 -4
- data/lib/zendesk2/help_center/get_help_center_translations.rb +7 -6
- data/lib/zendesk2/help_center/post.rb +72 -0
- data/lib/zendesk2/help_center/posts.rb +18 -0
- data/lib/zendesk2/help_center/search_help_center_articles.rb +8 -7
- data/lib/zendesk2/help_center/section.rb +11 -11
- data/lib/zendesk2/help_center/sections.rb +7 -6
- data/lib/zendesk2/help_center/topic.rb +52 -0
- data/lib/zendesk2/help_center/topics.rb +13 -0
- data/lib/zendesk2/help_center/translation.rb +8 -5
- data/lib/zendesk2/help_center/translation_source.rb +16 -13
- data/lib/zendesk2/help_center/translations.rb +3 -2
- data/lib/zendesk2/help_center/update_help_center_access_policy.rb +8 -7
- data/lib/zendesk2/help_center/update_help_center_article.rb +9 -11
- data/lib/zendesk2/help_center/update_help_center_category.rb +9 -11
- data/lib/zendesk2/help_center/update_help_center_post.rb +20 -0
- data/lib/zendesk2/help_center/update_help_center_section.rb +9 -11
- data/lib/zendesk2/help_center/update_help_center_topic.rb +20 -0
- data/lib/zendesk2/help_center/update_help_center_translation.rb +4 -3
- data/lib/zendesk2/logger.rb +3 -2
- data/lib/zendesk2/mark_membership_default.rb +7 -6
- data/lib/zendesk2/mark_user_identity_primary.rb +7 -6
- data/lib/zendesk2/membership.rb +10 -8
- data/lib/zendesk2/memberships.rb +18 -12
- data/lib/zendesk2/mock.rb +39 -34
- data/lib/zendesk2/model.rb +14 -3
- data/lib/zendesk2/organization.rb +7 -7
- data/lib/zendesk2/organizations.rb +14 -12
- data/lib/zendesk2/paged_collection.rb +40 -36
- data/lib/zendesk2/rate_limit.rb +4 -3
- data/lib/zendesk2/real.rb +25 -22
- data/lib/zendesk2/request.rb +78 -82
- data/lib/zendesk2/search.rb +8 -7
- data/lib/zendesk2/search_organization.rb +14 -14
- data/lib/zendesk2/search_user.rb +41 -37
- data/lib/zendesk2/searchable.rb +36 -26
- data/lib/zendesk2/ticket.rb +20 -18
- data/lib/zendesk2/ticket_audit.rb +5 -4
- data/lib/zendesk2/ticket_audits.rb +10 -11
- data/lib/zendesk2/ticket_change.rb +10 -11
- data/lib/zendesk2/ticket_comment.rb +2 -1
- data/lib/zendesk2/ticket_comment_privacy_change.rb +12 -14
- data/lib/zendesk2/ticket_comments.rb +7 -6
- data/lib/zendesk2/ticket_create.rb +8 -9
- data/lib/zendesk2/ticket_field.rb +5 -4
- data/lib/zendesk2/ticket_fields.rb +4 -3
- data/lib/zendesk2/ticket_metric.rb +2 -2
- data/lib/zendesk2/ticket_metrics.rb +3 -2
- data/lib/zendesk2/ticket_notification.rb +12 -13
- data/lib/zendesk2/ticket_voice_comment.rb +28 -29
- data/lib/zendesk2/tickets.rb +8 -7
- data/lib/zendesk2/topic.rb +49 -22
- data/lib/zendesk2/topic_comment.rb +12 -9
- data/lib/zendesk2/topic_comments.rb +4 -3
- data/lib/zendesk2/topics.rb +4 -3
- data/lib/zendesk2/update_category.rb +8 -6
- data/lib/zendesk2/update_forum.rb +5 -4
- data/lib/zendesk2/update_group.rb +5 -4
- data/lib/zendesk2/update_organization.rb +18 -9
- data/lib/zendesk2/update_request.rb +6 -5
- data/lib/zendesk2/update_ticket.rb +39 -38
- data/lib/zendesk2/update_ticket_field.rb +5 -4
- data/lib/zendesk2/update_topic.rb +5 -4
- data/lib/zendesk2/update_user.rb +39 -31
- data/lib/zendesk2/update_user_field.rb +4 -3
- data/lib/zendesk2/update_user_identity.rb +7 -6
- data/lib/zendesk2/update_view.rb +38 -34
- data/lib/zendesk2/user.rb +41 -37
- data/lib/zendesk2/user_field.rb +9 -6
- data/lib/zendesk2/user_fields.rb +4 -3
- data/lib/zendesk2/user_identities.rb +4 -3
- data/lib/zendesk2/user_identity.rb +12 -9
- data/lib/zendesk2/users.rb +5 -4
- data/lib/zendesk2/version.rb +2 -1
- data/lib/zendesk2/view.rb +24 -13
- data/lib/zendesk2/views.rb +3 -2
- data/spec/categories_spec.rb +63 -60
- data/spec/client_spec.rb +6 -5
- data/spec/forums_spec.rb +64 -61
- data/spec/groups_spec.rb +7 -8
- data/spec/help_center/articles_spec.rb +22 -26
- data/spec/help_center/categories_spec.rb +26 -27
- data/spec/help_center/posts_spec.rb +39 -0
- data/spec/help_center/sections_spec.rb +32 -33
- data/spec/help_center/topics_spec.rb +13 -0
- data/spec/lib/paged_collection_spec.rb +11 -11
- data/spec/lib/rate_limit_spec.rb +9 -8
- data/spec/memberships_spec.rb +38 -27
- data/spec/organizations_spec.rb +92 -87
- data/spec/shared/zendesk_resource.rb +40 -25
- data/spec/spec_helper.rb +8 -13
- data/spec/support/client_helper.rb +5 -4
- data/spec/support/data_helper.rb +1 -0
- data/spec/ticket_fields_spec.rb +6 -7
- data/spec/tickets_spec.rb +69 -58
- data/spec/topic_comments_spec.rb +7 -8
- data/spec/topics_spec.rb +5 -6
- data/spec/user_fields_spec.rb +7 -7
- data/spec/user_identities_spec.rb +29 -25
- data/spec/users_spec.rb +88 -78
- data/spec/views_spec.rb +45 -34
- data/spec/zendesk2_spec.rb +3 -2
- data/zendesk2.gemspec +15 -14
- metadata +21 -2
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
class Zendesk2::HelpCenter::Translations
|
2
3
|
include Zendesk2::Collection
|
3
4
|
|
@@ -7,9 +8,9 @@ class Zendesk2::HelpCenter::Translations
|
|
7
8
|
model Zendesk2::HelpCenter::Translation
|
8
9
|
|
9
10
|
self.collection_method = :get_help_center_translations
|
10
|
-
self.collection_root =
|
11
|
+
self.collection_root = 'translations'
|
11
12
|
self.model_method = :get_help_center_translation
|
12
|
-
self.model_root =
|
13
|
+
self.model_root = 'translation'
|
13
14
|
|
14
15
|
attribute :source_id, type: :integer
|
15
16
|
attribute :source_type, type: :string
|
@@ -1,25 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
class Zendesk2::UpdateHelpCenterAccessPolicy
|
2
3
|
include Zendesk2::Request
|
3
4
|
|
4
5
|
request_method :put
|
5
|
-
request_body { |r| {
|
6
|
-
request_path
|
6
|
+
request_body { |r| { 'access_policy' => r.access_policy_params } }
|
7
|
+
request_path do |r|
|
7
8
|
"/help_center/sections/#{r.section_id}/access_policy.json"
|
8
|
-
|
9
|
+
end
|
9
10
|
|
10
11
|
def self.accepted_attributes
|
11
|
-
%w
|
12
|
+
%w(viewable_by managable_by restricted_to_group_ids restricted_to_organization_ids required_tags)
|
12
13
|
end
|
13
14
|
|
14
15
|
def access_policy_params
|
15
|
-
|
16
|
+
Cistern::Hash.slice(params.fetch('access_policy'), *Zendesk2::UpdateHelpCenterAccessPolicy.accepted_attributes)
|
16
17
|
end
|
17
18
|
|
18
19
|
def section_id
|
19
|
-
params.fetch(
|
20
|
+
params.fetch('section_id')
|
20
21
|
end
|
21
22
|
|
22
23
|
def mock
|
23
|
-
mock_response(
|
24
|
+
mock_response('access_policy' => find!(:help_center_access_policies, section_id).merge!(access_policy_params))
|
24
25
|
end
|
25
26
|
end
|
@@ -1,25 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
class Zendesk2::UpdateHelpCenterArticle
|
2
3
|
include Zendesk2::Request
|
3
4
|
|
4
5
|
request_method :put
|
5
|
-
request_body { |r| {
|
6
|
-
request_path
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
"/help_center/articles/#{r.article_id}.json"
|
11
|
-
end
|
12
|
-
}
|
6
|
+
request_body { |r| { 'article' => r.article_params } }
|
7
|
+
request_path do |r|
|
8
|
+
locale = r.article_params['locale']
|
9
|
+
locale ? "/help_center/#{locale}/articles/#{r.article_id}.json" : "/help_center/articles/#{r.article_id}.json"
|
10
|
+
end
|
13
11
|
|
14
12
|
def article_params
|
15
|
-
|
13
|
+
Cistern::Hash.slice(params.fetch('article'), *Zendesk2::CreateHelpCenterArticle.accepted_attributes)
|
16
14
|
end
|
17
15
|
|
18
16
|
def article_id
|
19
|
-
params.fetch(
|
17
|
+
params.fetch('article').fetch('id')
|
20
18
|
end
|
21
19
|
|
22
20
|
def mock
|
23
|
-
mock_response(
|
21
|
+
mock_response('article' => find!(:help_center_articles, article_id).merge!(article_params))
|
24
22
|
end
|
25
23
|
end
|
@@ -1,25 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
class Zendesk2::UpdateHelpCenterCategory
|
2
3
|
include Zendesk2::Request
|
3
4
|
|
4
5
|
request_method :put
|
5
|
-
request_body { |r| {
|
6
|
-
request_path
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
"/help_center/categories/#{r.category_id}.json"
|
11
|
-
end
|
12
|
-
}
|
6
|
+
request_body { |r| { 'category' => r.category_params } }
|
7
|
+
request_path do |r|
|
8
|
+
locale = r.category_params['locale']
|
9
|
+
locale ? "/help_center/#{locale}/categories/#{r.category_id}.json" : "/help_center/categories/#{r.category_id}.json"
|
10
|
+
end
|
13
11
|
|
14
12
|
def category_params
|
15
|
-
|
13
|
+
Cistern::Hash.slice(params.fetch('category'), *Zendesk2::CreateHelpCenterCategory.accepted_attributes)
|
16
14
|
end
|
17
15
|
|
18
16
|
def category_id
|
19
|
-
params.fetch(
|
17
|
+
params.fetch('category').fetch('id')
|
20
18
|
end
|
21
19
|
|
22
20
|
def mock
|
23
|
-
mock_response(
|
21
|
+
mock_response('category' => find!(:help_center_categories, category_id).merge!(category_params))
|
24
22
|
end
|
25
23
|
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
class Zendesk2::UpdateHelpCenterPost
|
3
|
+
include Zendesk2::Request
|
4
|
+
|
5
|
+
request_method :put
|
6
|
+
request_body { |r| { 'post' => r.post_params } }
|
7
|
+
request_path { |r| "/community/posts/#{r.post_id}.json" }
|
8
|
+
|
9
|
+
def post_params
|
10
|
+
Cistern::Hash.slice(params.fetch('post'), *Zendesk2::CreateHelpCenterPost.accepted_attributes)
|
11
|
+
end
|
12
|
+
|
13
|
+
def post_id
|
14
|
+
params.fetch('post').fetch('id')
|
15
|
+
end
|
16
|
+
|
17
|
+
def mock
|
18
|
+
mock_response('post' => find!(:help_center_categories, post_id).merge!(post_params))
|
19
|
+
end
|
20
|
+
end
|
@@ -1,25 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
class Zendesk2::UpdateHelpCenterSection
|
2
3
|
include Zendesk2::Request
|
3
4
|
|
4
5
|
request_method :put
|
5
|
-
request_body { |r| {
|
6
|
-
request_path
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
"/help_center/sections/#{r.section_id}.json"
|
11
|
-
end
|
12
|
-
}
|
6
|
+
request_body { |r| { 'section' => r.section_params } }
|
7
|
+
request_path do |r|
|
8
|
+
locale = r.section_params['locale']
|
9
|
+
locale ? "/help_center/#{locale}/sections/#{r.section_id}.json" : "/help_center/sections/#{r.section_id}.json"
|
10
|
+
end
|
13
11
|
|
14
12
|
def section_params
|
15
|
-
|
13
|
+
Cistern::Hash.slice(params.fetch('section'), *Zendesk2::CreateHelpCenterSection.accepted_attributes)
|
16
14
|
end
|
17
15
|
|
18
16
|
def section_id
|
19
|
-
params.fetch(
|
17
|
+
params.fetch('section').fetch('id')
|
20
18
|
end
|
21
19
|
|
22
20
|
def mock
|
23
|
-
mock_response(
|
21
|
+
mock_response('section' => find!(:help_center_sections, section_id).merge!(section_params))
|
24
22
|
end
|
25
23
|
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
class Zendesk2::UpdateHelpCenterTopic
|
3
|
+
include Zendesk2::Request
|
4
|
+
|
5
|
+
request_method :put
|
6
|
+
request_body { |r| { 'topic' => r.topic_params } }
|
7
|
+
request_path { |r| "/community/topics/#{r.topic_id}.json" }
|
8
|
+
|
9
|
+
def topic_params
|
10
|
+
Cistern::Hash.slice(params.fetch('topic'), *Zendesk2::CreateHelpCenterTopic.accepted_attributes)
|
11
|
+
end
|
12
|
+
|
13
|
+
def topic_id
|
14
|
+
params.fetch('topic').fetch('id')
|
15
|
+
end
|
16
|
+
|
17
|
+
def mock
|
18
|
+
mock_response('topic' => find!(:help_center_categories, topic_id).merge!(topic_params))
|
19
|
+
end
|
20
|
+
end
|
@@ -1,16 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
class Zendesk2::UpdateHelpCenterTranslation
|
2
3
|
include Zendesk2::Request
|
3
4
|
include Zendesk2::HelpCenter::TranslationSource::Request
|
4
5
|
|
5
6
|
request_method :put
|
6
|
-
request_body { |r| {
|
7
|
+
request_body { |r| { 'translation' => r.translation_params } }
|
7
8
|
request_path { |r| "/help_center/#{r.source_type_url}/#{r.source_id}/translations/#{r.locale}.json" }
|
8
9
|
|
9
10
|
def translation_params
|
10
|
-
|
11
|
+
Cistern::Hash.slice(params.fetch('translation'), *Zendesk2::CreateHelpCenterTranslation.accepted_attributes)
|
11
12
|
end
|
12
13
|
|
13
14
|
def mock
|
14
|
-
mock_response(
|
15
|
+
mock_response('translation' => find!(:help_center_translations, mock_translation_key).merge!(translation_params))
|
15
16
|
end
|
16
17
|
end
|
data/lib/zendesk2/logger.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
class Zendesk2::Logger < Faraday::Response::Middleware
|
2
3
|
extend Forwardable
|
3
4
|
|
@@ -9,14 +10,14 @@ class Zendesk2::Logger < Faraday::Response::Middleware
|
|
9
10
|
def_delegators :@logger, :debug, :info, :warn, :error, :fatal
|
10
11
|
|
11
12
|
def call(env)
|
12
|
-
info("#{env[:method]} => #{env[:url]
|
13
|
+
info("#{env[:method]} => #{env[:url]}")
|
13
14
|
debug('request') { dump_headers env[:request_headers] }
|
14
15
|
debug('request.body') { env[:body] }
|
15
16
|
super
|
16
17
|
end
|
17
18
|
|
18
19
|
def on_complete(env)
|
19
|
-
info("#{env[:status]} <= #{env[:url]
|
20
|
+
info("#{env[:status]} <= #{env[:url]}")
|
20
21
|
debug('response') { dump_headers env[:response_headers] }
|
21
22
|
debug('response.body') { env[:body] }
|
22
23
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
class Zendesk2::MarkMembershipDefault
|
2
3
|
include Zendesk2::Request
|
3
4
|
|
@@ -5,19 +6,19 @@ class Zendesk2::MarkMembershipDefault
|
|
5
6
|
request_path { |r| "/users/#{r.user_id}/organization_memberships/#{r.identity}/make_default.json" }
|
6
7
|
|
7
8
|
def identity
|
8
|
-
params.fetch(
|
9
|
+
params.fetch('membership').fetch('id')
|
9
10
|
end
|
10
11
|
|
11
12
|
def user_id
|
12
|
-
params.fetch(
|
13
|
+
params.fetch('membership').fetch('user_id').to_i
|
13
14
|
end
|
14
15
|
|
15
16
|
def mock
|
16
|
-
if (membership =
|
17
|
+
if (membership = find!(:memberships, identity)) && (membership['user_id'] == user_id)
|
17
18
|
# only one user can be default
|
18
|
-
other_user_memberships =
|
19
|
-
other_user_memberships.each { |i| i[
|
20
|
-
membership[
|
19
|
+
other_user_memberships = data[:memberships].values.select { |m| m['user_id'] == user_id }
|
20
|
+
other_user_memberships.each { |i| i['default'] = false }
|
21
|
+
membership['default'] = true
|
21
22
|
|
22
23
|
mock_response(params)
|
23
24
|
else
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
class Zendesk2::MarkUserIdentityPrimary
|
2
3
|
include Zendesk2::Request
|
3
4
|
|
@@ -5,21 +6,21 @@ class Zendesk2::MarkUserIdentityPrimary
|
|
5
6
|
request_method :put
|
6
7
|
|
7
8
|
def user_id
|
8
|
-
params.fetch(
|
9
|
+
params.fetch('user_identity').fetch('user_id')
|
9
10
|
end
|
10
11
|
|
11
12
|
def user_identity_id
|
12
|
-
params.fetch(
|
13
|
+
params.fetch('user_identity').fetch('id')
|
13
14
|
end
|
14
15
|
|
15
16
|
def mock
|
16
|
-
user_identity =
|
17
|
+
user_identity = find!(:identities, user_identity_id)
|
17
18
|
|
18
19
|
# only one user can be primary
|
19
|
-
other_user_identities = cistern.data[:identities].values.select { |i| i[
|
20
|
-
other_user_identities.map { |i| i[
|
20
|
+
other_user_identities = cistern.data[:identities].values.select { |i| i['user_id'] == user_id }
|
21
|
+
other_user_identities.map { |i| i['primary'] = false }
|
21
22
|
|
22
|
-
user_identity
|
23
|
+
user_identity['primary'] = true
|
23
24
|
|
24
25
|
mock_response(nil)
|
25
26
|
end
|
data/lib/zendesk2/membership.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
class Zendesk2::Membership
|
2
3
|
include Zendesk2::Model
|
3
4
|
|
@@ -26,11 +27,11 @@ class Zendesk2::Membership
|
|
26
27
|
data = if new_record?
|
27
28
|
requires :organization_id, :user_id
|
28
29
|
|
29
|
-
cistern.create_membership(
|
30
|
+
cistern.create_membership('membership' => attributes).body['organization_membership']
|
30
31
|
else
|
31
32
|
requires :identity
|
32
33
|
|
33
|
-
raise ArgumentError,
|
34
|
+
raise ArgumentError, 'update not implemented'
|
34
35
|
end
|
35
36
|
|
36
37
|
merge_attributes(data)
|
@@ -39,17 +40,18 @@ class Zendesk2::Membership
|
|
39
40
|
def destroy!
|
40
41
|
requires :identity
|
41
42
|
|
42
|
-
cistern.destroy_membership(
|
43
|
+
cistern.destroy_membership('membership' => { 'id' => identity })
|
43
44
|
end
|
44
45
|
|
45
46
|
def default!
|
46
47
|
requires :identity, :user_id
|
47
48
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
}
|
49
|
+
cistern.mark_membership_default(
|
50
|
+
'membership' => {
|
51
|
+
'user_id' => user_id,
|
52
|
+
'id' => identity,
|
53
|
+
}
|
54
|
+
)
|
53
55
|
|
54
56
|
self.default = true
|
55
57
|
end
|
data/lib/zendesk2/memberships.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
class Zendesk2::Memberships
|
2
3
|
include Zendesk2::Collection
|
3
4
|
|
@@ -12,27 +13,32 @@ class Zendesk2::Memberships
|
|
12
13
|
assoc_accessor :organization
|
13
14
|
assoc_accessor :user
|
14
15
|
|
15
|
-
self.collection_root =
|
16
|
+
self.collection_root = 'organization_memberships'
|
16
17
|
self.model_method = :get_membership
|
17
|
-
self.model_root =
|
18
|
+
self.model_root = 'organization_membership'
|
18
19
|
|
19
|
-
def all(params={})
|
20
|
+
def all(params = {})
|
20
21
|
requires_one :user_id, :organization_id
|
21
22
|
|
22
|
-
body = if
|
23
|
+
body = if user_id && organization_id
|
23
24
|
{
|
24
|
-
|
25
|
-
cistern.get_membership(
|
26
|
-
|
25
|
+
'organization_memberships' => [
|
26
|
+
cistern.get_membership(
|
27
|
+
'user_id' => user_id,
|
28
|
+
'organization_id' => organization_id,
|
29
|
+
).body['organization_membership'],
|
30
|
+
],
|
27
31
|
}
|
28
|
-
elsif
|
29
|
-
|
32
|
+
elsif user_id
|
33
|
+
request_params = { 'membership' => { 'user_id' => user_id } }.merge(params)
|
34
|
+
cistern.get_user_memberships(request_params).body
|
30
35
|
else
|
31
|
-
|
36
|
+
request_params = { 'membership' => { 'organization_id' => organization_id } }.merge(params)
|
37
|
+
cistern.get_organization_memberships(request_params).body
|
32
38
|
end
|
33
39
|
|
34
|
-
|
35
|
-
|
40
|
+
load(body[collection_root])
|
41
|
+
merge_attributes(Cistern::Hash.slice(body, 'count', 'next_page', 'previous_page'))
|
36
42
|
self
|
37
43
|
end
|
38
44
|
|
data/lib/zendesk2/mock.rb
CHANGED
@@ -1,32 +1,36 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
class Zendesk2::Mock
|
2
3
|
attr_reader :username, :url, :token, :jwt_token
|
3
4
|
attr_accessor :last_request
|
4
5
|
|
5
6
|
def self.data
|
6
|
-
@data ||= Hash.new
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
7
|
+
@data ||= Hash.new do |h, k|
|
8
|
+
h[k] = {
|
9
|
+
categories: {},
|
10
|
+
forums: {},
|
11
|
+
groups: {},
|
12
|
+
help_center_access_policies: {},
|
13
|
+
help_center_articles: {},
|
14
|
+
help_center_categories: {},
|
15
|
+
help_center_posts: {},
|
16
|
+
help_center_sections: {},
|
17
|
+
help_center_topics: {},
|
18
|
+
help_center_translations: {},
|
19
|
+
identities: {},
|
20
|
+
memberships: {},
|
21
|
+
organizations: {},
|
22
|
+
ticket_audits: {},
|
23
|
+
ticket_comments: {},
|
24
|
+
ticket_fields: {},
|
25
|
+
ticket_metrics: {},
|
26
|
+
tickets: {},
|
27
|
+
topic_comments: {},
|
28
|
+
topics: {},
|
29
|
+
user_fields: {},
|
30
|
+
users: {},
|
31
|
+
views: {},
|
32
|
+
}
|
33
|
+
end
|
30
34
|
end
|
31
35
|
|
32
36
|
def self.serial_id
|
@@ -51,27 +55,28 @@ class Zendesk2::Mock
|
|
51
55
|
self.class.serial_id
|
52
56
|
end
|
53
57
|
|
54
|
-
def initialize(options={})
|
58
|
+
def initialize(options = {})
|
55
59
|
@url = options[:url]
|
56
60
|
@path = URI.parse(url).path
|
57
|
-
@username
|
61
|
+
@username = options[:username]
|
62
|
+
@password = options[:password]
|
58
63
|
@token = options[:token]
|
59
64
|
@jwt_token = options[:jwt_token]
|
60
65
|
|
61
|
-
@current_user ||=
|
62
|
-
@username == u[
|
63
|
-
|
64
|
-
|
65
|
-
).body[
|
66
|
+
@current_user ||= data[:users].values.find do |u|
|
67
|
+
@username == u['name']
|
68
|
+
end || create_user(
|
69
|
+
'user' => { 'email' => @username, 'name' => @username }
|
70
|
+
).body['user']
|
66
71
|
|
67
|
-
@current_user_identity ||=
|
72
|
+
@current_user_identity ||= data[:identities].values.first
|
68
73
|
end
|
69
74
|
|
70
75
|
# Lazily re-seeds data after reset
|
71
76
|
# @return [Hash] current user response
|
72
77
|
def current_user
|
73
|
-
|
74
|
-
|
78
|
+
data[:users][@current_user['id']] ||= @current_user
|
79
|
+
data[:identities][@current_user_identity['id']] ||= @current_user_identity
|
75
80
|
|
76
81
|
@current_user
|
77
82
|
end
|