zendesk2 1.9.0 → 1.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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::Article
|
2
3
|
include Zendesk2::Model
|
3
4
|
|
@@ -6,7 +7,8 @@ class Zendesk2::HelpCenter::Article
|
|
6
7
|
# @return [Integer] Automatically assigned when the article is created
|
7
8
|
identity :id, type: :integer # ro:yes required:no
|
8
9
|
|
9
|
-
# @return [Integer] The id of the user who wrote the article (set to the user who made the request on create by
|
10
|
+
# @return [Integer] The id of the user who wrote the article (set to the user who made the request on create by
|
11
|
+
# default)
|
10
12
|
attribute :author_id, type: :integer # ro:no required:no
|
11
13
|
# @return [String] The body of the article
|
12
14
|
attribute :body, type: :string # ro:no required:no
|
@@ -18,7 +20,8 @@ class Zendesk2::HelpCenter::Article
|
|
18
20
|
attribute :draft, type: :boolean # ro:no required:no
|
19
21
|
# @return [String] The url of the article in Help Center
|
20
22
|
attribute :html_url, type: :string # ro:yes required:no
|
21
|
-
# @return [String] An array of label names associated with this article. By default no label names are used (only
|
23
|
+
# @return [String] An array of label names associated with this article. By default no label names are used (only
|
24
|
+
# available on certain plans)
|
22
25
|
attribute :label_names, type: :string # ro:no required:no
|
23
26
|
# @return [String] The locale that the article is being displayed in
|
24
27
|
attribute :locale, type: :string # ro:no required:yes
|
@@ -48,26 +51,26 @@ class Zendesk2::HelpCenter::Article
|
|
48
51
|
def translations
|
49
52
|
requires :identity
|
50
53
|
|
51
|
-
cistern.help_center_translations(source_id:
|
54
|
+
cistern.help_center_translations(source_id: identity, source_type: 'Article')
|
52
55
|
end
|
53
56
|
|
54
57
|
def save!
|
55
58
|
response = if new_record?
|
56
59
|
requires :title, :locale, :section_id
|
57
60
|
|
58
|
-
cistern.create_help_center_article(
|
61
|
+
cistern.create_help_center_article('article' => attributes)
|
59
62
|
else
|
60
63
|
requires :identity
|
61
64
|
|
62
|
-
cistern.update_help_center_article(
|
65
|
+
cistern.update_help_center_article('article' => attributes)
|
63
66
|
end
|
64
67
|
|
65
|
-
merge_attributes(response.body[
|
68
|
+
merge_attributes(response.body['article'])
|
66
69
|
end
|
67
70
|
|
68
71
|
def destroy!
|
69
72
|
requires :identity
|
70
73
|
|
71
|
-
cistern.destroy_help_center_article(
|
74
|
+
cistern.destroy_help_center_article('article' => { 'id' => identity })
|
72
75
|
end
|
73
76
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
class Zendesk2::HelpCenter::Articles
|
2
3
|
include Zendesk2::Collection
|
3
4
|
|
@@ -7,9 +8,9 @@ class Zendesk2::HelpCenter::Articles
|
|
7
8
|
model Zendesk2::HelpCenter::Article
|
8
9
|
|
9
10
|
self.collection_method = :get_help_center_articles
|
10
|
-
self.collection_root =
|
11
|
+
self.collection_root = 'articles'
|
11
12
|
self.model_method = :get_help_center_article
|
12
|
-
self.model_root =
|
13
|
+
self.model_root = 'article'
|
13
14
|
self.search_type = nil
|
14
15
|
self.search_request = :search_help_center_articles
|
15
16
|
|
@@ -19,7 +20,7 @@ class Zendesk2::HelpCenter::Articles
|
|
19
20
|
scopes << :section_id
|
20
21
|
scopes << :category_id
|
21
22
|
|
22
|
-
def collection_page(params={})
|
23
|
+
def collection_page(params = {})
|
23
24
|
collection_method = if category_id
|
24
25
|
:get_help_center_categories_articles
|
25
26
|
elsif section_id
|
@@ -28,11 +29,10 @@ class Zendesk2::HelpCenter::Articles
|
|
28
29
|
:get_help_center_articles
|
29
30
|
end
|
30
31
|
|
31
|
-
body = cistern.send(collection_method, Cistern::Hash.stringify_keys(
|
32
|
+
body = cistern.send(collection_method, Cistern::Hash.stringify_keys(attributes.merge(params))).body
|
32
33
|
|
33
|
-
|
34
|
-
|
34
|
+
load(body[collection_root]) # 'results' is the key for paged searches
|
35
|
+
merge_attributes(Cistern::Hash.slice(body, 'count', 'next_page', 'previous_page'))
|
35
36
|
self
|
36
37
|
end
|
37
|
-
|
38
38
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
class Zendesk2::HelpCenter::Categories
|
2
3
|
include Zendesk2::Collection
|
3
4
|
|
@@ -7,7 +8,7 @@ class Zendesk2::HelpCenter::Categories
|
|
7
8
|
model Zendesk2::HelpCenter::Category
|
8
9
|
|
9
10
|
self.collection_method = :get_help_center_categories
|
10
|
-
self.collection_root =
|
11
|
+
self.collection_root = 'categories'
|
11
12
|
self.model_method = :get_help_center_category
|
12
|
-
self.model_root =
|
13
|
+
self.model_root = 'category'
|
13
14
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
class Zendesk2::HelpCenter::Category
|
2
3
|
include Zendesk2::Model
|
3
4
|
|
@@ -32,38 +33,38 @@ class Zendesk2::HelpCenter::Category
|
|
32
33
|
def articles
|
33
34
|
requires :identity
|
34
35
|
|
35
|
-
cistern.help_center_articles(category_id:
|
36
|
+
cistern.help_center_articles(category_id: identity)
|
36
37
|
end
|
37
38
|
|
38
39
|
def destroy!
|
39
40
|
requires :identity
|
40
41
|
|
41
|
-
cistern.destroy_help_center_category(
|
42
|
+
cistern.destroy_help_center_category('category' => { 'id' => identity })
|
42
43
|
end
|
43
44
|
|
44
45
|
def sections
|
45
46
|
requires :identity
|
46
47
|
|
47
|
-
cistern.help_center_sections(category_id:
|
48
|
+
cistern.help_center_sections(category_id: identity)
|
48
49
|
end
|
49
50
|
|
50
51
|
def translations
|
51
52
|
requires :identity
|
52
53
|
|
53
|
-
cistern.help_center_translations(source_id:
|
54
|
+
cistern.help_center_translations(source_id: identity, source_type: 'Category')
|
54
55
|
end
|
55
56
|
|
56
57
|
def save!
|
57
58
|
response = if new_record?
|
58
59
|
requires :name, :locale
|
59
60
|
|
60
|
-
cistern.create_help_center_category(
|
61
|
+
cistern.create_help_center_category('category' => attributes)
|
61
62
|
else
|
62
63
|
requires :identity
|
63
64
|
|
64
|
-
cistern.update_help_center_category(
|
65
|
+
cistern.update_help_center_category('category' => attributes)
|
65
66
|
end
|
66
67
|
|
67
|
-
merge_attributes(response.body[
|
68
|
+
merge_attributes(response.body['category'])
|
68
69
|
end
|
69
70
|
end
|
@@ -1,57 +1,59 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
class Zendesk2::CreateHelpCenterArticle
|
2
3
|
include Zendesk2::Request
|
3
4
|
|
4
5
|
request_method :post
|
5
|
-
request_body { |r| {
|
6
|
-
request_path
|
7
|
-
|
6
|
+
request_body { |r| { 'article' => r.article_params } }
|
7
|
+
request_path do |r|
|
8
|
+
locale = r.article_params['locale']
|
9
|
+
if locale
|
8
10
|
"/help_center/#{locale}/sections/#{r.section_id}/articles.json"
|
9
11
|
else
|
10
12
|
"/help_center/sections/#{r.section_id}/articles.json"
|
11
13
|
end
|
12
|
-
|
14
|
+
end
|
13
15
|
|
14
16
|
def self.accepted_attributes
|
15
|
-
%w
|
17
|
+
%w(author_id body comments_disabled draft label_names locale position promoted section_id title)
|
16
18
|
end
|
17
19
|
|
18
20
|
def article_params
|
19
|
-
@_article_params ||= Cistern::Hash.slice(params.fetch(
|
21
|
+
@_article_params ||= Cistern::Hash.slice(params.fetch('article'), *self.class.accepted_attributes)
|
20
22
|
end
|
21
23
|
|
22
24
|
def section_id
|
23
|
-
params.fetch(
|
25
|
+
params.fetch('article').fetch('section_id')
|
24
26
|
end
|
25
27
|
|
26
28
|
def mock
|
27
29
|
identity = cistern.serial_id
|
28
30
|
|
29
|
-
locale = params[
|
30
|
-
position =
|
31
|
+
locale = params['locale'] ||= 'en-us'
|
32
|
+
position = data[:help_center_articles].values.select { |a| a['section_id'] == section_id }.size
|
31
33
|
|
32
34
|
record = {
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
35
|
+
'id' => identity,
|
36
|
+
'url' => url_for("/help_center/#{locale}/articles/#{identity}.json"),
|
37
|
+
'html_url' => html_url_for("/hc/#{locale}/articles/#{identity}.json"),
|
38
|
+
'author_id' => cistern.current_user['id'],
|
39
|
+
'comments_disabled' => false,
|
40
|
+
'label_names' => [],
|
41
|
+
'draft' => false,
|
42
|
+
'promoted' => false,
|
43
|
+
'position' => position,
|
44
|
+
'vote_sum' => 0,
|
45
|
+
'vote_count' => 0,
|
46
|
+
'section_id' => section_id,
|
47
|
+
'created_at' => Time.now.iso8601,
|
48
|
+
'updated_at' => Time.now.iso8601,
|
49
|
+
'title' => '',
|
50
|
+
'body' => '',
|
51
|
+
'source_locale' => locale,
|
52
|
+
'outdated' => false,
|
51
53
|
}.merge(article_params)
|
52
54
|
|
53
|
-
|
55
|
+
data[:help_center_articles][identity] = record
|
54
56
|
|
55
|
-
mock_response(
|
57
|
+
mock_response('article' => record)
|
56
58
|
end
|
57
59
|
end
|
@@ -1,37 +1,38 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
class Zendesk2::CreateHelpCenterCategory
|
2
3
|
include Zendesk2::Request
|
3
4
|
|
4
5
|
request_method :post
|
5
|
-
request_path { |_|
|
6
|
-
request_body { |r| {
|
6
|
+
request_path { |_| '/help_center/categories.json' }
|
7
|
+
request_body { |r| { 'category' => r.category_params } }
|
7
8
|
|
8
9
|
def self.accepted_attributes
|
9
|
-
%w
|
10
|
+
%w(category_id description locale name position sorting)
|
10
11
|
end
|
11
12
|
|
12
13
|
def category_params
|
13
|
-
Cistern::Hash.slice(params.fetch(
|
14
|
+
Cistern::Hash.slice(params.fetch('category'), *self.class.accepted_attributes)
|
14
15
|
end
|
15
16
|
|
16
17
|
def mock
|
17
18
|
identity = cistern.serial_id
|
18
19
|
|
19
|
-
locale = params[
|
20
|
-
position =
|
20
|
+
locale = params['locale'] ||= 'en-us'
|
21
|
+
position = data[:help_center_categories].size
|
21
22
|
|
22
23
|
record = {
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
24
|
+
'id' => identity,
|
25
|
+
'url' => url_for("/help_center/#{locale}/categories/#{identity}.json"),
|
26
|
+
'html_url' => html_url_for("/hc/#{locale}/categories/#{identity}.json"),
|
27
|
+
'author_id' => cistern.current_user['id'],
|
28
|
+
'position' => position,
|
29
|
+
'created_at' => Time.now.iso8601,
|
30
|
+
'updated_at' => Time.now.iso8601,
|
31
|
+
'description' => '',
|
31
32
|
}.merge(category_params)
|
32
33
|
|
33
|
-
|
34
|
+
data[:help_center_categories][identity] = record
|
34
35
|
|
35
|
-
mock_response(
|
36
|
+
mock_response('category' => record)
|
36
37
|
end
|
37
38
|
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
class Zendesk2::CreateHelpCenterPost
|
3
|
+
include Zendesk2::Request
|
4
|
+
|
5
|
+
request_method :post
|
6
|
+
request_path { |_| '/community/posts.json' }
|
7
|
+
request_body { |r| { 'post' => r.post_params } }
|
8
|
+
|
9
|
+
def self.accepted_attributes
|
10
|
+
%w(title details author_id topic_id pinned featured closed status created_at)
|
11
|
+
end
|
12
|
+
|
13
|
+
def post_params
|
14
|
+
Cistern::Hash.slice(params.fetch('post'), *self.class.accepted_attributes)
|
15
|
+
end
|
16
|
+
|
17
|
+
def mock
|
18
|
+
identity = cistern.serial_id
|
19
|
+
|
20
|
+
record = {
|
21
|
+
'id' => identity,
|
22
|
+
'url' => url_for("/community/posts/#{identity}.json"),
|
23
|
+
'html_url' => html_url_for("/hc/posts/#{identity}.json"),
|
24
|
+
'created_at' => Time.now.iso8601,
|
25
|
+
'updated_at' => Time.now.iso8601,
|
26
|
+
'vote_count' => 0,
|
27
|
+
'vote_sum' => 0,
|
28
|
+
'comment_count' => 0,
|
29
|
+
'follower_count' => 0,
|
30
|
+
'details' => '',
|
31
|
+
}.merge(post_params)
|
32
|
+
|
33
|
+
data[:help_center_posts][identity] = record
|
34
|
+
|
35
|
+
mock_response('post' => record)
|
36
|
+
end
|
37
|
+
end
|
@@ -1,61 +1,62 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
class Zendesk2::CreateHelpCenterSection
|
2
3
|
include Zendesk2::Request
|
3
4
|
|
4
5
|
request_method :post
|
5
6
|
request_path { |r| "/help_center/categories/#{r.category_id}/sections.json" }
|
6
|
-
request_body { |r| {
|
7
|
+
request_body { |r| { 'section' => r.section_params } }
|
7
8
|
|
8
9
|
def self.accepted_attributes
|
9
|
-
%w
|
10
|
+
%w(category_id description locale name position sorting)
|
10
11
|
end
|
11
12
|
|
12
13
|
def section_params
|
13
|
-
Cistern::Hash.slice(params.fetch(
|
14
|
+
Cistern::Hash.slice(params.fetch('section'), *self.class.accepted_attributes)
|
14
15
|
end
|
15
16
|
|
16
17
|
def category_id
|
17
|
-
params.fetch(
|
18
|
+
params.fetch('section').fetch('category_id')
|
18
19
|
end
|
19
20
|
|
20
21
|
def mock
|
21
22
|
identity = cistern.serial_id
|
22
23
|
|
23
|
-
locale = params[
|
24
|
-
position =
|
24
|
+
locale = params['locale'] ||= 'en-us'
|
25
|
+
position = data[:help_center_sections].values.select { |a| a['category_id'] == category_id }.size
|
25
26
|
|
26
27
|
record = {
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
28
|
+
'id' => identity,
|
29
|
+
'url' => url_for("/help_center/#{locale}/sections/#{identity}.json"),
|
30
|
+
'html_url' => html_url_for("/hc/#{locale}/sections/#{identity}.json"),
|
31
|
+
'author_id' => cistern.current_user['id'],
|
32
|
+
'comments_disabled' => false,
|
33
|
+
'label_names' => [],
|
34
|
+
'draft' => false,
|
35
|
+
'promoted' => false,
|
36
|
+
'position' => position,
|
37
|
+
'vote_sum' => 0,
|
38
|
+
'vote_count' => 0,
|
39
|
+
'category_id' => category_id,
|
40
|
+
'created_at' => Time.now.iso8601,
|
41
|
+
'updated_at' => Time.now.iso8601,
|
42
|
+
'name' => '',
|
43
|
+
'body' => '',
|
44
|
+
'source_locale' => locale,
|
45
|
+
'outdated' => false,
|
45
46
|
}.merge(section_params)
|
46
47
|
|
47
48
|
cistern.data[:help_center_sections][identity] = record
|
48
49
|
|
49
50
|
access_policy = {
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
51
|
+
'viewable_by' => 'everyone',
|
52
|
+
'managable_by' => 'staff',
|
53
|
+
'restricted_to_group_ids' => [],
|
54
|
+
'restricted_to_organization_ids' => [],
|
55
|
+
'required_tags' => [],
|
56
|
+
'section_id' => identity,
|
56
57
|
}
|
57
58
|
cistern.data[:help_center_access_policies][identity] = access_policy
|
58
59
|
|
59
|
-
mock_response(
|
60
|
+
mock_response('section' => record)
|
60
61
|
end
|
61
62
|
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
class Zendesk2::CreateHelpCenterTopic
|
3
|
+
include Zendesk2::Request
|
4
|
+
|
5
|
+
request_method :post
|
6
|
+
request_path { |_| '/community/topics.json' }
|
7
|
+
request_body { |r| { 'topic' => r.topic_params } }
|
8
|
+
|
9
|
+
def self.accepted_attributes
|
10
|
+
%w(name position description)
|
11
|
+
end
|
12
|
+
|
13
|
+
def topic_params
|
14
|
+
Cistern::Hash.slice(params.fetch('topic'), *self.class.accepted_attributes)
|
15
|
+
end
|
16
|
+
|
17
|
+
def mock
|
18
|
+
identity = cistern.serial_id
|
19
|
+
|
20
|
+
position = data[:help_center_topics].size
|
21
|
+
|
22
|
+
record = {
|
23
|
+
'id' => identity,
|
24
|
+
'url' => url_for("/communit/topics/#{identity}.json"),
|
25
|
+
'html_url' => html_url_for("/hc/topics/#{identity}.json"),
|
26
|
+
'position' => position,
|
27
|
+
'created_at' => Time.now.iso8601,
|
28
|
+
'updated_at' => Time.now.iso8601,
|
29
|
+
'description' => '',
|
30
|
+
}.merge(topic_params)
|
31
|
+
|
32
|
+
data[:help_center_topics][identity] = record
|
33
|
+
|
34
|
+
mock_response('topic' => record)
|
35
|
+
end
|
36
|
+
end
|