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
data/lib/zendesk2/users.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
class Zendesk2::Users
|
2
3
|
include Zendesk2::Collection
|
3
4
|
|
@@ -7,13 +8,13 @@ class Zendesk2::Users
|
|
7
8
|
model Zendesk2::User
|
8
9
|
|
9
10
|
self.collection_method = :get_users
|
10
|
-
self.collection_root =
|
11
|
+
self.collection_root = 'users'
|
11
12
|
self.model_method = :get_user
|
12
|
-
self.model_root =
|
13
|
-
self.search_type =
|
13
|
+
self.model_root = 'user'
|
14
|
+
self.search_type = 'user'
|
14
15
|
self.search_request = :search_user
|
15
16
|
|
16
17
|
def current
|
17
|
-
new(cistern.get_current_user.body[
|
18
|
+
new(cistern.get_current_user.body['user'])
|
18
19
|
end
|
19
20
|
end
|
data/lib/zendesk2/version.rb
CHANGED
data/lib/zendesk2/view.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
class Zendesk2::View
|
2
3
|
include Zendesk2::Model
|
3
4
|
|
@@ -24,32 +25,42 @@ class Zendesk2::View
|
|
24
25
|
attribute :updated_at, type: :time
|
25
26
|
|
26
27
|
def save!
|
28
|
+
new_record? ? create : update
|
29
|
+
end
|
30
|
+
|
31
|
+
def create
|
27
32
|
requires :execution, :title
|
28
33
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
"output" => Cistern::Hash.slice(self.execution, "sort_by", "sort_order", "group_by", "group_order", "columns")
|
33
|
-
}.merge(Cistern::Hash.slice(self.conditions, "any", "all"))
|
34
|
+
data = cistern.create_view('view' => request_data).body
|
35
|
+
merge_attributes(data['view'])
|
36
|
+
end
|
34
37
|
|
35
|
-
|
36
|
-
|
37
|
-
else
|
38
|
-
cistern.create_view("view" => params)
|
39
|
-
end.body
|
38
|
+
def update
|
39
|
+
requires :identity
|
40
40
|
|
41
|
-
|
41
|
+
data = cistern.update_view('view' => request_data.merge('id' => identity)).body
|
42
|
+
merge_attributes(data['view'])
|
42
43
|
end
|
43
44
|
|
44
45
|
def tickets
|
45
46
|
requires :identity
|
46
47
|
|
47
|
-
cistern.tickets(view_id:
|
48
|
+
cistern.tickets(view_id: identity)
|
48
49
|
end
|
49
50
|
|
50
51
|
def destroy!
|
51
52
|
requires :identity
|
52
53
|
|
53
|
-
cistern.destroy_view(
|
54
|
+
cistern.destroy_view('view' => { 'id' => identity })
|
55
|
+
end
|
56
|
+
|
57
|
+
protected
|
58
|
+
|
59
|
+
def request_data
|
60
|
+
Cistern::Hash.slice(conditions, 'any', 'all').merge(
|
61
|
+
'title' => title,
|
62
|
+
'active' => active,
|
63
|
+
'output' => Cistern::Hash.slice(execution, 'sort_by', 'sort_order', 'group_by', 'group_order', 'columns')
|
64
|
+
)
|
54
65
|
end
|
55
66
|
end
|
data/lib/zendesk2/views.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
class Zendesk2::Views
|
2
3
|
include Zendesk2::Collection
|
3
4
|
|
@@ -7,7 +8,7 @@ class Zendesk2::Views
|
|
7
8
|
model Zendesk2::View
|
8
9
|
|
9
10
|
self.collection_method = :get_views
|
10
|
-
self.collection_root =
|
11
|
+
self.collection_root = 'views'
|
11
12
|
self.model_method = :get_view
|
12
|
-
self.model_root =
|
13
|
+
self.model_root = 'view'
|
13
14
|
end
|
data/spec/categories_spec.rb
CHANGED
@@ -1,51 +1,51 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require 'spec_helper'
|
2
3
|
|
3
|
-
describe
|
4
|
+
describe 'categories' do
|
4
5
|
let(:client) { create_client }
|
5
6
|
|
6
|
-
include_examples
|
7
|
-
|
8
|
-
|
9
|
-
:update_params => lambda { { name: mock_uuid } },
|
10
|
-
}
|
7
|
+
include_examples 'zendesk#resource', collection: -> { client.categories },
|
8
|
+
create_params: -> { { name: mock_uuid } },
|
9
|
+
update_params: -> { { name: mock_uuid } }
|
11
10
|
|
12
|
-
context
|
13
|
-
it
|
14
|
-
body = {
|
11
|
+
context '#create_category' do
|
12
|
+
it 'should correctly respond' do
|
13
|
+
body = { 'category' => { 'name' => (name = mock_uuid) } }
|
15
14
|
|
16
15
|
response = client.create_category(body)
|
17
16
|
|
18
17
|
expect(response.status).to eq(201)
|
19
|
-
expect(response.env[:url].path).to eq(
|
18
|
+
expect(response.env[:url].path).to eq('/api/v2/categories.json')
|
20
19
|
expect(response.env[:method]).to eq(:post)
|
21
20
|
expect(client.last_request).to match(body)
|
22
|
-
expect(response.env[:body][
|
21
|
+
expect(response.env[:body]['category']).to match(
|
23
22
|
a_hash_including(
|
24
|
-
|
25
|
-
)
|
23
|
+
'name' => name
|
24
|
+
)
|
25
|
+
)
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
29
|
-
context
|
29
|
+
context 'with a category' do
|
30
30
|
let!(:category) { client.categories.create!(name: mock_uuid) }
|
31
31
|
|
32
|
-
context
|
33
|
-
it
|
34
|
-
expect
|
32
|
+
context '#destroy_category' do
|
33
|
+
it 'should require a valid category' do
|
34
|
+
expect do
|
35
35
|
client.destroy_category(
|
36
|
-
|
37
|
-
|
36
|
+
'category' => {
|
37
|
+
'id' => 999_999_999,
|
38
38
|
}
|
39
39
|
)
|
40
|
-
|
40
|
+
end.to raise_error(Zendesk2::Error) { |e|
|
41
41
|
expect(e.response[:status]).to eq(404)
|
42
42
|
}
|
43
43
|
end
|
44
44
|
|
45
|
-
it
|
45
|
+
it 'should correctly respond' do
|
46
46
|
response = client.destroy_category(
|
47
|
-
|
48
|
-
|
47
|
+
'category' => {
|
48
|
+
'id' => category.id,
|
49
49
|
}
|
50
50
|
)
|
51
51
|
|
@@ -57,39 +57,40 @@ describe "categories" do
|
|
57
57
|
end
|
58
58
|
end
|
59
59
|
|
60
|
-
context
|
61
|
-
it
|
60
|
+
context '#get_categories' do
|
61
|
+
it 'should correctly respond' do
|
62
62
|
response = client.get_categories
|
63
63
|
|
64
64
|
expect(response.status).to eq(200)
|
65
|
-
expect(response.env[:url].path).to eq(
|
65
|
+
expect(response.env[:url].path).to eq('/api/v2/categories.json')
|
66
66
|
expect(response.env[:method]).to eq(:get)
|
67
67
|
expect(client.last_request).to eq(nil)
|
68
68
|
skip unless Zendesk2.mocking?
|
69
|
-
expect(response.env[:body][
|
70
|
-
|
71
|
-
|
72
|
-
|
69
|
+
expect(response.env[:body]['categories']).to match([
|
70
|
+
a_hash_including(
|
71
|
+
'id' => category.id
|
72
|
+
),
|
73
|
+
])
|
73
74
|
end
|
74
75
|
end
|
75
76
|
|
76
|
-
context
|
77
|
-
it
|
78
|
-
expect
|
77
|
+
context '#get_category' do
|
78
|
+
it 'should require a valid category' do
|
79
|
+
expect do
|
79
80
|
client.get_category(
|
80
|
-
|
81
|
-
|
81
|
+
'category' => {
|
82
|
+
'id' => 999_999_999,
|
82
83
|
}
|
83
84
|
)
|
84
|
-
|
85
|
+
end.to raise_error(Zendesk2::Error) { |e|
|
85
86
|
expect(e.response[:status]).to eq(404)
|
86
87
|
}
|
87
88
|
end
|
88
89
|
|
89
|
-
it
|
90
|
+
it 'should correctly respond' do
|
90
91
|
response = client.get_category(
|
91
|
-
|
92
|
-
|
92
|
+
'category' => {
|
93
|
+
'id' => category.id,
|
93
94
|
}
|
94
95
|
)
|
95
96
|
|
@@ -97,46 +98,48 @@ describe "categories" do
|
|
97
98
|
expect(response.env[:url].path).to eq("/api/v2/categories/#{category.id}.json")
|
98
99
|
expect(response.env[:method]).to eq(:get)
|
99
100
|
expect(client.last_request).to eq(nil)
|
100
|
-
expect(response.env[:body][
|
101
|
+
expect(response.env[:body]['category']).to match(
|
101
102
|
a_hash_including(
|
102
|
-
|
103
|
-
|
104
|
-
)
|
103
|
+
'id' => category.id,
|
104
|
+
'url' => response.env[:url].to_s
|
105
|
+
)
|
106
|
+
)
|
105
107
|
end
|
106
108
|
end
|
107
109
|
|
108
|
-
context
|
109
|
-
it
|
110
|
-
expect
|
110
|
+
context '#update_category' do
|
111
|
+
it 'should require a valid category' do
|
112
|
+
expect do
|
111
113
|
client.update_category(
|
112
|
-
|
113
|
-
|
114
|
-
|
114
|
+
'category' => {
|
115
|
+
'id' => 999_999_999,
|
116
|
+
'name' => mock_uuid,
|
115
117
|
}
|
116
118
|
)
|
117
|
-
|
119
|
+
end.to raise_error(Zendesk2::Error) { |e|
|
118
120
|
expect(e.response[:status]).to eq(404)
|
119
121
|
}
|
120
122
|
end
|
121
123
|
|
122
|
-
it
|
124
|
+
it 'should correctly respond' do
|
123
125
|
response = client.update_category(
|
124
|
-
|
125
|
-
|
126
|
-
|
126
|
+
'category' => {
|
127
|
+
'id' => category.id,
|
128
|
+
'name' => (name = mock_uuid),
|
127
129
|
}
|
128
130
|
)
|
129
131
|
|
130
132
|
expect(response.status).to eq(200)
|
131
133
|
expect(response.env[:url].path).to eq("/api/v2/categories/#{category.id}.json")
|
132
134
|
expect(response.env[:method]).to eq(:put)
|
133
|
-
expect(client.last_request).to eq(
|
134
|
-
expect(response.env[:body][
|
135
|
+
expect(client.last_request).to eq('category' => { 'name' => name })
|
136
|
+
expect(response.env[:body]['category']).to match(
|
135
137
|
a_hash_including(
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
)
|
138
|
+
'id' => category.id,
|
139
|
+
'url' => response.env[:url].to_s,
|
140
|
+
'name' => name
|
141
|
+
)
|
142
|
+
)
|
140
143
|
end
|
141
144
|
end
|
142
145
|
end
|
data/spec/client_spec.rb
CHANGED
@@ -1,12 +1,13 @@
|
|
1
|
-
#encoding: utf-8
|
1
|
+
# encoding: utf-8
|
2
|
+
# frozen_string_literal: true
|
2
3
|
require 'spec_helper'
|
3
4
|
|
4
5
|
describe Zendesk2 do
|
5
|
-
context
|
6
|
+
context 'when mocking', mock_only: true do
|
6
7
|
# this used to cause user creation conflicts
|
7
|
-
it
|
8
|
-
Zendesk2.new(username:
|
9
|
-
Zendesk2.new(username:
|
8
|
+
it 'allows the client to be intialized more than once' do
|
9
|
+
Zendesk2.new(username: 'steve@example.org', url: 'http://example.org')
|
10
|
+
Zendesk2.new(username: 'steve@example.org', url: 'http://example.org')
|
10
11
|
end
|
11
12
|
end
|
12
13
|
end
|
data/spec/forums_spec.rb
CHANGED
@@ -1,52 +1,52 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require 'spec_helper'
|
2
3
|
|
3
|
-
describe
|
4
|
+
describe 'forums' do
|
4
5
|
let(:client) { create_client }
|
5
6
|
|
6
|
-
include_examples
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
:delayed_destroy => true,
|
11
|
-
}
|
7
|
+
include_examples 'zendesk#resource', collection: -> { client.forums },
|
8
|
+
create_params: -> { { name: mock_uuid } },
|
9
|
+
update_params: -> { { name: mock_uuid } },
|
10
|
+
delayed_destroy: true
|
12
11
|
|
13
|
-
context
|
14
|
-
it
|
15
|
-
body = {
|
12
|
+
context '#create_forum' do
|
13
|
+
it 'should correctly respond' do
|
14
|
+
body = { 'forum' => { 'name' => (name = mock_uuid) } }
|
16
15
|
|
17
16
|
response = client.create_forum(body)
|
18
17
|
|
19
18
|
expect(response.status).to eq(201)
|
20
|
-
expect(response.env[:url].path).to eq(
|
19
|
+
expect(response.env[:url].path).to eq('/api/v2/forums.json')
|
21
20
|
expect(response.env[:method]).to eq(:post)
|
22
21
|
expect(client.last_request).to match(body)
|
23
|
-
expect(response.env[:body][
|
22
|
+
expect(response.env[:body]['forum']).to match(
|
24
23
|
a_hash_including(
|
25
|
-
|
26
|
-
)
|
24
|
+
'name' => name
|
25
|
+
)
|
26
|
+
)
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
30
|
-
context
|
30
|
+
context 'with a forum' do
|
31
31
|
let!(:forum) { client.forums.create!(name: mock_uuid) }
|
32
32
|
|
33
|
-
context
|
34
|
-
it
|
35
|
-
expect
|
33
|
+
context '#destroy_forum' do
|
34
|
+
it 'should require a valid forum' do
|
35
|
+
expect do
|
36
36
|
client.destroy_forum(
|
37
|
-
|
38
|
-
|
37
|
+
'forum' => {
|
38
|
+
'id' => 999_999_999,
|
39
39
|
}
|
40
40
|
)
|
41
|
-
|
41
|
+
end.to raise_error(Zendesk2::Error) { |e|
|
42
42
|
expect(e.response[:status]).to eq(404)
|
43
43
|
}
|
44
44
|
end
|
45
45
|
|
46
|
-
it
|
46
|
+
it 'should correctly respond' do
|
47
47
|
response = client.destroy_forum(
|
48
|
-
|
49
|
-
|
48
|
+
'forum' => {
|
49
|
+
'id' => forum.id,
|
50
50
|
}
|
51
51
|
)
|
52
52
|
|
@@ -58,39 +58,40 @@ describe "forums" do
|
|
58
58
|
end
|
59
59
|
end
|
60
60
|
|
61
|
-
context
|
62
|
-
it
|
61
|
+
context '#get_forums' do
|
62
|
+
it 'should correctly respond' do
|
63
63
|
response = client.get_forums
|
64
64
|
|
65
65
|
expect(response.status).to eq(200)
|
66
|
-
expect(response.env[:url].path).to eq(
|
66
|
+
expect(response.env[:url].path).to eq('/api/v2/forums.json')
|
67
67
|
expect(response.env[:method]).to eq(:get)
|
68
68
|
expect(client.last_request).to eq(nil)
|
69
69
|
skip unless Zendesk2.mocking?
|
70
|
-
expect(response.env[:body][
|
71
|
-
|
72
|
-
|
73
|
-
|
70
|
+
expect(response.env[:body]['forums']).to match([
|
71
|
+
a_hash_including(
|
72
|
+
'id' => forum.id
|
73
|
+
),
|
74
|
+
])
|
74
75
|
end
|
75
76
|
end
|
76
77
|
|
77
|
-
context
|
78
|
-
it
|
79
|
-
expect
|
78
|
+
context '#get_forum' do
|
79
|
+
it 'should require a valid forum' do
|
80
|
+
expect do
|
80
81
|
client.get_forum(
|
81
|
-
|
82
|
-
|
82
|
+
'forum' => {
|
83
|
+
'id' => 999_999_999,
|
83
84
|
}
|
84
85
|
)
|
85
|
-
|
86
|
+
end.to raise_error(Zendesk2::Error) { |e|
|
86
87
|
expect(e.response[:status]).to eq(404)
|
87
88
|
}
|
88
89
|
end
|
89
90
|
|
90
|
-
it
|
91
|
+
it 'should correctly respond' do
|
91
92
|
response = client.get_forum(
|
92
|
-
|
93
|
-
|
93
|
+
'forum' => {
|
94
|
+
'id' => forum.id,
|
94
95
|
}
|
95
96
|
)
|
96
97
|
|
@@ -98,46 +99,48 @@ describe "forums" do
|
|
98
99
|
expect(response.env[:url].path).to eq("/api/v2/forums/#{forum.id}.json")
|
99
100
|
expect(response.env[:method]).to eq(:get)
|
100
101
|
expect(client.last_request).to eq(nil)
|
101
|
-
expect(response.env[:body][
|
102
|
+
expect(response.env[:body]['forum']).to match(
|
102
103
|
a_hash_including(
|
103
|
-
|
104
|
-
|
105
|
-
)
|
104
|
+
'id' => forum.id,
|
105
|
+
'url' => response.env[:url].to_s
|
106
|
+
)
|
107
|
+
)
|
106
108
|
end
|
107
109
|
end
|
108
110
|
|
109
|
-
context
|
110
|
-
it
|
111
|
-
expect
|
111
|
+
context '#update_forum' do
|
112
|
+
it 'should require a valid forum' do
|
113
|
+
expect do
|
112
114
|
client.update_forum(
|
113
|
-
|
114
|
-
|
115
|
-
|
115
|
+
'forum' => {
|
116
|
+
'id' => 999_999_999,
|
117
|
+
'name' => mock_uuid,
|
116
118
|
}
|
117
119
|
)
|
118
|
-
|
120
|
+
end.to raise_error(Zendesk2::Error) { |e|
|
119
121
|
expect(e.response[:status]).to eq(404)
|
120
122
|
}
|
121
123
|
end
|
122
124
|
|
123
|
-
it
|
125
|
+
it 'should correctly respond' do
|
124
126
|
response = client.update_forum(
|
125
|
-
|
126
|
-
|
127
|
-
|
127
|
+
'forum' => {
|
128
|
+
'id' => forum.id,
|
129
|
+
'name' => (name = mock_uuid),
|
128
130
|
}
|
129
131
|
)
|
130
132
|
|
131
133
|
expect(response.status).to eq(200)
|
132
134
|
expect(response.env[:url].path).to eq("/api/v2/forums/#{forum.id}.json")
|
133
135
|
expect(response.env[:method]).to eq(:put)
|
134
|
-
expect(client.last_request).to eq(
|
135
|
-
expect(response.env[:body][
|
136
|
+
expect(client.last_request).to eq('forum' => { 'name' => name })
|
137
|
+
expect(response.env[:body]['forum']).to match(
|
136
138
|
a_hash_including(
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
)
|
139
|
+
'id' => forum.id,
|
140
|
+
'url' => response.env[:url].to_s,
|
141
|
+
'name' => name
|
142
|
+
)
|
143
|
+
)
|
141
144
|
end
|
142
145
|
end
|
143
146
|
end
|