zendesk2 1.2.6 → 1.2.7
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/lib/zendesk2/client/requests/create_organization.rb +9 -3
- data/lib/zendesk2/client/requests/create_user.rb +6 -1
- data/lib/zendesk2/client/requests/update_organization.rb +11 -3
- data/lib/zendesk2/client/requests/update_user.rb +14 -3
- data/lib/zendesk2/version.rb +1 -1
- data/lib/zendesk2.rb +0 -4
- data/spec/categories_spec.rb +2 -2
- data/spec/forums_spec.rb +2 -2
- data/spec/groups_spec.rb +3 -3
- data/spec/help_center/articles_spec.rb +4 -4
- data/spec/help_center/categories_spec.rb +2 -2
- data/spec/help_center/sections_spec.rb +3 -3
- data/spec/memberships_spec.rb +7 -7
- data/spec/organizations_spec.rb +33 -8
- data/spec/support/data_helper.rb +13 -0
- data/spec/ticket_fields_spec.rb +2 -2
- data/spec/tickets_spec.rb +16 -16
- data/spec/topic_comments_spec.rb +5 -5
- data/spec/topics_spec.rb +3 -3
- data/spec/user_fields_spec.rb +2 -2
- data/spec/user_identities_spec.rb +3 -3
- data/spec/users_spec.rb +46 -20
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fbedbdbd2cc1fb5d7181d274138df03c74caf78a
|
4
|
+
data.tar.gz: d1b795649c0ecc16cf9142bc7c527b9f9048c81c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 93400647817f08b86d3322a4dc24282bd5b0ce04218cb8d3e782da177d84312f552ca85eeccb020ea5b71fa419dbc96bfb8ed4ed6ed32bef42d41f52ed912e20
|
7
|
+
data.tar.gz: 7864462a046770514e143cf51d0ba2af739c21c968e327523087445ab3af25a70e5d198fbb7bbf5ea7372bb35bcf21745887d812610be29ba61b00b83e0fbc79
|
@@ -10,7 +10,8 @@ class Zendesk2::Client
|
|
10
10
|
end # Real
|
11
11
|
|
12
12
|
class Mock
|
13
|
-
def create_organization(
|
13
|
+
def create_organization(_params={})
|
14
|
+
params = Cistern::Hash.stringify_keys(_params)
|
14
15
|
identity = self.class.new_id
|
15
16
|
|
16
17
|
record = {
|
@@ -20,15 +21,20 @@ class Zendesk2::Client
|
|
20
21
|
"updated_at" => Time.now.iso8601,
|
21
22
|
}.merge(params)
|
22
23
|
|
24
|
+
|
23
25
|
unless record["name"]
|
24
26
|
error!(:invalid, details: { "name" => [ { "description" => "Name cannot be blank" } ]})
|
25
27
|
end
|
26
28
|
|
27
|
-
if self.data[:organizations].values.find{|o| o["name"] == record["name"]}
|
29
|
+
if self.data[:organizations].values.find { |o| o["name"] == record["name"]}
|
28
30
|
error!(:invalid, details: {"name" => [ { "description" => "Name: has already been taken" } ]})
|
29
31
|
end
|
30
32
|
|
31
|
-
self.data[:organizations][
|
33
|
+
if record["external_id"] && self.data[:organizations].values.find { |o| o["external_id"] == record["external_id"] }
|
34
|
+
error!(:invalid, details: {"name" => [ { "description" => "External has already been taken" } ]})
|
35
|
+
end
|
36
|
+
|
37
|
+
self.data[:organizations][identity] = record
|
32
38
|
|
33
39
|
response(
|
34
40
|
:method => :post,
|
@@ -10,7 +10,8 @@ class Zendesk2::Client
|
|
10
10
|
end # Real
|
11
11
|
|
12
12
|
class Mock
|
13
|
-
def create_user(
|
13
|
+
def create_user(_params={})
|
14
|
+
params = Cistern::Hash.stringify_keys(_params)
|
14
15
|
user_id = self.class.new_id
|
15
16
|
path = "/users.json"
|
16
17
|
|
@@ -22,6 +23,10 @@ class Zendesk2::Client
|
|
22
23
|
"active" => true,
|
23
24
|
}.merge(params)
|
24
25
|
|
26
|
+
if record["external_id"] && self.data[:users].values.find { |o| o["external_id"] == record["external_id"] }
|
27
|
+
error!(:invalid, details: {"name" => [ { "description" => "External has already been taken" } ]})
|
28
|
+
end
|
29
|
+
|
25
30
|
if (email = record["email"]) && self.data[:identities].find{|k,i| i["type"] == "email" && i["value"] == email}
|
26
31
|
error!(:invalid, :details => {
|
27
32
|
"email" => [ {
|
@@ -13,15 +13,23 @@ class Zendesk2::Client
|
|
13
13
|
end
|
14
14
|
end
|
15
15
|
class Mock
|
16
|
-
def update_organization(
|
17
|
-
|
16
|
+
def update_organization(_params={})
|
17
|
+
params = Cistern::Hash.stringify_keys(_params)
|
18
|
+
id = params.delete("id")
|
18
19
|
|
19
20
|
organization = self.find!(:organizations, id)
|
20
21
|
|
21
|
-
|
22
|
+
other_organizations = self.data[:organizations].dup
|
23
|
+
other_organizations.delete(id)
|
24
|
+
|
25
|
+
if other_organizations.values.find { |o| o["name"] == params["name"] }
|
22
26
|
error!(:invalid, details: {"name" => [ { "description" => "Name: has already been taken" } ]})
|
23
27
|
end
|
24
28
|
|
29
|
+
if params["external_id"] && other_organizations.values.find { |o| o["external_id"] == params["external_id"] }
|
30
|
+
error!(:invalid, details: {"name" => [ { "description" => "External has already been taken" } ]})
|
31
|
+
end
|
32
|
+
|
25
33
|
body = organization.merge!(params)
|
26
34
|
|
27
35
|
response(
|
@@ -13,15 +13,25 @@ class Zendesk2::Client
|
|
13
13
|
end
|
14
14
|
end
|
15
15
|
class Mock
|
16
|
-
def update_user(
|
16
|
+
def update_user(_params={})
|
17
|
+
params = Cistern::Hash.stringify_keys(_params)
|
17
18
|
user_id = params.delete("id")
|
18
19
|
path = "/users/#{user_id}.json"
|
19
20
|
|
20
21
|
email = params["email"]
|
21
22
|
|
23
|
+
other_users = self.data[:users].dup
|
24
|
+
other_users.delete(user_id)
|
25
|
+
|
26
|
+
if params["external_id"] && other_users.values.find { |o| o["external_id"] == params["external_id"] }
|
27
|
+
error!(:invalid, details: {"name" => [ { "description" => "External has already been taken" } ]})
|
28
|
+
end
|
29
|
+
|
22
30
|
existing_identity = self.data[:identities].values.find { |i| i["type"] == "email" && i["value"] == email }
|
23
31
|
|
24
|
-
if
|
32
|
+
if !email
|
33
|
+
# nvm
|
34
|
+
elsif existing_identity && existing_identity["user_id"] != user_id
|
25
35
|
# email not allowed to conflict across users
|
26
36
|
error!(:invalid, details: { "email" => [ {
|
27
37
|
"description" => "Email #{params["email"]} is already being used by another user",
|
@@ -30,7 +40,7 @@ class Zendesk2::Client
|
|
30
40
|
# no-op email already used
|
31
41
|
else
|
32
42
|
# add a new identity
|
33
|
-
user_identity_id = self.class.new_id
|
43
|
+
user_identity_id = self.class.new_id
|
34
44
|
|
35
45
|
user_identity = {
|
36
46
|
"id" => user_identity_id,
|
@@ -48,6 +58,7 @@ class Zendesk2::Client
|
|
48
58
|
end
|
49
59
|
|
50
60
|
body = self.data[:users][user_id].merge!(params)
|
61
|
+
|
51
62
|
response(
|
52
63
|
:method => :put,
|
53
64
|
:path => path,
|
data/lib/zendesk2/version.rb
CHANGED
data/lib/zendesk2.rb
CHANGED
data/spec/categories_spec.rb
CHANGED
@@ -5,7 +5,7 @@ describe "categories" do
|
|
5
5
|
|
6
6
|
include_examples "zendesk resource", {
|
7
7
|
:collection => lambda { client.categories },
|
8
|
-
:create_params => lambda { { name:
|
9
|
-
:update_params => lambda { { name:
|
8
|
+
:create_params => lambda { { name: mock_uuid } },
|
9
|
+
:update_params => lambda { { name: mock_uuid } },
|
10
10
|
}
|
11
11
|
end
|
data/spec/forums_spec.rb
CHANGED
@@ -5,8 +5,8 @@ describe "forums" do
|
|
5
5
|
|
6
6
|
include_examples "zendesk resource", {
|
7
7
|
:collection => lambda { client.forums },
|
8
|
-
:create_params => lambda { { name:
|
9
|
-
:update_params => lambda { { name:
|
8
|
+
:create_params => lambda { { name: mock_uuid } },
|
9
|
+
:update_params => lambda { { name: mock_uuid } },
|
10
10
|
:delayed_destroy => true,
|
11
11
|
}
|
12
12
|
end
|
data/spec/groups_spec.rb
CHANGED
@@ -5,12 +5,12 @@ describe "groups" do
|
|
5
5
|
|
6
6
|
include_examples "zendesk resource", {
|
7
7
|
:collection => lambda { client.groups },
|
8
|
-
:create_params => lambda { { name:
|
9
|
-
:update_params => lambda { { name:
|
8
|
+
:create_params => lambda { { name: mock_uuid } },
|
9
|
+
:update_params => lambda { { name: mock_uuid } },
|
10
10
|
}
|
11
11
|
|
12
12
|
it "should list assignable groups" do
|
13
|
-
client.groups.create(name:
|
13
|
+
client.groups.create(name: mock_uuid) # assignable by default
|
14
14
|
|
15
15
|
expect(client.groups.assignable).to be_all{|g| !g.deleted}
|
16
16
|
end
|
@@ -3,10 +3,10 @@ require 'spec_helper'
|
|
3
3
|
describe "help_center/articles" do
|
4
4
|
let(:client) { create_client }
|
5
5
|
let!(:section) do
|
6
|
-
category = client.help_center_categories.create!(name:
|
6
|
+
category = client.help_center_categories.create!(name: mock_uuid,
|
7
7
|
locale: "en-us",
|
8
8
|
)
|
9
|
-
client.help_center_sections.create!(:name =>
|
9
|
+
client.help_center_sections.create!(:name => mock_uuid,
|
10
10
|
:locale => "en-us",
|
11
11
|
:category => category,
|
12
12
|
)
|
@@ -14,8 +14,8 @@ describe "help_center/articles" do
|
|
14
14
|
|
15
15
|
include_examples "zendesk resource", {
|
16
16
|
:collection => lambda { client.help_center_articles },
|
17
|
-
:create_params => lambda { { title:
|
18
|
-
:update_params => lambda { { title:
|
17
|
+
:create_params => lambda { { title: mock_uuid, locale: "en-us", section: section } },
|
18
|
+
:update_params => lambda { { title: mock_uuid } },
|
19
19
|
:search_params => lambda { Cistern::Hash.slice(create_params, :title) },
|
20
20
|
:search => true,
|
21
21
|
}
|
@@ -5,8 +5,8 @@ describe "help_center/categories" do
|
|
5
5
|
|
6
6
|
include_examples "zendesk resource", {
|
7
7
|
:collection => lambda { client.help_center_categories },
|
8
|
-
:create_params => lambda { { name:
|
9
|
-
:update_params => lambda { { name:
|
8
|
+
:create_params => lambda { { name: mock_uuid, locale: "en-us" } },
|
9
|
+
:update_params => lambda { { name: mock_uuid } },
|
10
10
|
:search => false,
|
11
11
|
}
|
12
12
|
end
|
@@ -3,15 +3,15 @@ require 'spec_helper'
|
|
3
3
|
describe "help_center/sections" do
|
4
4
|
let(:client) { create_client }
|
5
5
|
let!(:category) do
|
6
|
-
client.help_center_categories.create!(name:
|
6
|
+
client.help_center_categories.create!(name: mock_uuid,
|
7
7
|
locale: "en-us",
|
8
8
|
)
|
9
9
|
end
|
10
10
|
|
11
11
|
include_examples "zendesk resource", {
|
12
12
|
:collection => lambda { client.help_center_sections },
|
13
|
-
:create_params => lambda { { name:
|
14
|
-
:update_params => lambda { { name:
|
13
|
+
:create_params => lambda { { name: mock_uuid, locale: "en-us", category: category } },
|
14
|
+
:update_params => lambda { { name: mock_uuid } },
|
15
15
|
:search => false,
|
16
16
|
}
|
17
17
|
end
|
data/spec/memberships_spec.rb
CHANGED
@@ -2,8 +2,8 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe "memberships" do
|
4
4
|
let(:client) { create_client }
|
5
|
-
let(:user) { client.users.create!(email:
|
6
|
-
let(:organization) { client.organizations.create!(name:
|
5
|
+
let(:user) { client.users.create!(email: mock_email, name: mock_uuid, verified: true) }
|
6
|
+
let(:organization) { client.organizations.create!(name: mock_uuid) }
|
7
7
|
|
8
8
|
include_examples "zendesk resource", {
|
9
9
|
:create_params => lambda { {organization_id: organization.id, user_id: user.id} },
|
@@ -15,7 +15,7 @@ describe "memberships" do
|
|
15
15
|
|
16
16
|
it "should be marked as default" do
|
17
17
|
membership = client.memberships.create!(organization: organization, user: user)
|
18
|
-
another_organization = client.organizations.create!(name:
|
18
|
+
another_organization = client.organizations.create!(name: mock_uuid)
|
19
19
|
|
20
20
|
another_membership = client.memberships.create!(organization: another_organization, user: user)
|
21
21
|
|
@@ -28,8 +28,8 @@ describe "memberships" do
|
|
28
28
|
end
|
29
29
|
|
30
30
|
it "should get an organization's memberships" do
|
31
|
-
another_user = client.users.create!(email:
|
32
|
-
another_organization = client.organizations.create!(name:
|
31
|
+
another_user = client.users.create!(email: mock_email, name: mock_uuid, verified: true)
|
32
|
+
another_organization = client.organizations.create!(name: mock_uuid)
|
33
33
|
|
34
34
|
another_organization.memberships.create!(user: another_user)
|
35
35
|
another_organization.memberships.create!(user: user)
|
@@ -40,8 +40,8 @@ describe "memberships" do
|
|
40
40
|
end
|
41
41
|
|
42
42
|
it "should get an user's memberships" do
|
43
|
-
another_user = client.users.create!(email:
|
44
|
-
another_organization = client.organizations.create!(name:
|
43
|
+
another_user = client.users.create!(email: mock_email, name: mock_uuid, verified: true)
|
44
|
+
another_organization = client.organizations.create!(name: mock_uuid)
|
45
45
|
|
46
46
|
another_organization.memberships.create!(user: another_user)
|
47
47
|
user_membership = another_organization.memberships.create!(user: user)
|
data/spec/organizations_spec.rb
CHANGED
@@ -5,21 +5,21 @@ describe "organizations" do
|
|
5
5
|
|
6
6
|
include_examples "zendesk resource", {
|
7
7
|
:collection => lambda { client.organizations },
|
8
|
-
:create_params => lambda { { name:
|
9
|
-
:update_params => lambda { { name:
|
8
|
+
:create_params => lambda { { name: mock_uuid } },
|
9
|
+
:update_params => lambda { { name: mock_uuid } },
|
10
10
|
}
|
11
11
|
|
12
12
|
describe "with an organization" do
|
13
|
-
let(:organization) { client.organizations.create!(name:
|
13
|
+
let(:organization) { client.organizations.create!(name: mock_uuid) }
|
14
14
|
|
15
15
|
it "should get #users" do
|
16
|
-
user = client.users.create(email: "#{
|
16
|
+
user = client.users.create(email: "#{mock_uuid}@example.org", name: mock_uuid, organization: organization)
|
17
17
|
expect(organization.users).to include user
|
18
18
|
end
|
19
19
|
|
20
20
|
it "should get #tickets" do
|
21
|
-
user = client.users.create(email: "#{
|
22
|
-
ticket = client.tickets.create(subject: "#{
|
21
|
+
user = client.users.create(email: "#{mock_uuid}@example.org", name: mock_uuid, organization: organization)
|
22
|
+
ticket = client.tickets.create(subject: "#{mock_uuid}@example.org", description: mock_uuid, requester: user)
|
23
23
|
expect(organization.tickets).to include ticket
|
24
24
|
end
|
25
25
|
|
@@ -27,18 +27,43 @@ describe "organizations" do
|
|
27
27
|
expect { client.organizations.create!(name: organization.name) }.to raise_exception(Zendesk2::Error)
|
28
28
|
model = client.organizations.create(name: organization.name)
|
29
29
|
expect(model.errors).to eq({"name" => ["Name: has already been taken"]})
|
30
|
-
model = client.organizations.create(name:
|
30
|
+
model = client.organizations.create(name: mock_uuid)
|
31
31
|
model.name = organization.name
|
32
32
|
model.save
|
33
33
|
expect(model.errors).to eq({"name" => ["Name: has already been taken"]})
|
34
34
|
end
|
35
35
|
|
36
36
|
it "should be able to find organizations by external id" do
|
37
|
-
external_id = organization.external_id =
|
37
|
+
external_id = organization.external_id = mock_uuid
|
38
38
|
organization.save!
|
39
39
|
|
40
40
|
expect(client.organizations.find_by_external_id(external_id).first).to eq(organization)
|
41
41
|
end
|
42
|
+
end
|
43
|
+
|
44
|
+
describe "#create_organization" do
|
45
|
+
it "should prevent duplicate external_ids" do
|
46
|
+
client.create_organization("name" => "a", external_id: nil) # fine
|
47
|
+
client.create_organization("name" => "b", external_id: nil) # also fine
|
48
|
+
client.create_organization("name" => "c", external_id: "1") # it's cool
|
49
|
+
|
50
|
+
expect {
|
51
|
+
client.create_organization("name" => "d", external_id: "1")
|
52
|
+
}.to raise_exception(Zendesk2::Error, /External has already been taken/)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
describe "#update_organization" do
|
57
|
+
it "should prevent duplicate external_ids" do
|
58
|
+
organization = client.organizations.create(name: "a")
|
59
|
+
another_organization = client.organizations.create(name: "b")
|
42
60
|
|
61
|
+
client.update_organization("id" => organization.id, external_id: nil) # fine
|
62
|
+
client.update_organization("id" => another_organization.id, external_id: "1") # also fine
|
63
|
+
|
64
|
+
expect {
|
65
|
+
client.update_organization("id" => organization.id, external_id: "1")
|
66
|
+
}.to raise_exception(Zendesk2::Error, /External has already been taken/)
|
67
|
+
end
|
43
68
|
end
|
44
69
|
end
|
data/spec/ticket_fields_spec.rb
CHANGED
@@ -5,8 +5,8 @@ describe "ticket_fields" do
|
|
5
5
|
|
6
6
|
include_examples "zendesk resource", {
|
7
7
|
:collection => lambda { client.ticket_fields },
|
8
|
-
:create_params => lambda { { title:
|
9
|
-
:update_params => lambda { { title:
|
8
|
+
:create_params => lambda { { title: mock_uuid, type: "text" } },
|
9
|
+
:update_params => lambda { { title: mock_uuid } },
|
10
10
|
:paged => false,
|
11
11
|
}
|
12
12
|
end
|
data/spec/tickets_spec.rb
CHANGED
@@ -6,24 +6,24 @@ describe "Zendesk2::Client" do
|
|
6
6
|
describe "tickets" do
|
7
7
|
include_examples "zendesk resource", {
|
8
8
|
:collection => lambda { client.tickets },
|
9
|
-
:create_params => lambda { {subject:
|
10
|
-
:update_params => lambda { {subject:
|
9
|
+
:create_params => lambda { {subject: mock_uuid, description: mock_uuid} },
|
10
|
+
:update_params => lambda { {subject: mock_uuid} },
|
11
11
|
}
|
12
12
|
end
|
13
13
|
|
14
14
|
describe "#create_ticket" do
|
15
15
|
it "should require a description" do
|
16
16
|
expect {
|
17
|
-
client.create_ticket("subject" =>
|
17
|
+
client.create_ticket("subject" => mock_uuid)
|
18
18
|
}.to raise_exception(Zendesk2::Error, /Description: cannot be blank/)
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
22
22
|
describe "when creating a ticket" do
|
23
|
-
let!(:requester_email) { "#{
|
23
|
+
let!(:requester_email) { "#{mock_uuid}@example.org" }
|
24
24
|
|
25
25
|
it "should create requester" do
|
26
|
-
ticket = client.tickets.create!(subject:
|
26
|
+
ticket = client.tickets.create!(subject: mock_uuid, description: mock_uuid, requester: {name: "Josh Lane", email: requester_email})
|
27
27
|
if Zendesk2::Client.mocking? # this takes some time for realsies
|
28
28
|
requester = client.users.search(email: requester_email).first
|
29
29
|
expect(requester).not_to be_nil
|
@@ -36,24 +36,24 @@ describe "Zendesk2::Client" do
|
|
36
36
|
|
37
37
|
it "should require requester name" do
|
38
38
|
expect {
|
39
|
-
client.tickets.create!(subject:
|
39
|
+
client.tickets.create!(subject: mock_uuid, description: mock_uuid, requester: {email: requester_email})
|
40
40
|
}.to raise_exception(Zendesk2::Error, /Requester Name: .* too short/)
|
41
41
|
end
|
42
42
|
|
43
43
|
it "should require a description" do
|
44
44
|
expect {
|
45
|
-
client.tickets.create!(subject:
|
45
|
+
client.tickets.create!(subject: mock_uuid)
|
46
46
|
}.to raise_exception(ArgumentError, /description is required/)
|
47
47
|
|
48
48
|
expect {
|
49
|
-
client.tickets.create!(subject:
|
49
|
+
client.tickets.create!(subject: mock_uuid, description: "")
|
50
50
|
}.to raise_exception(ArgumentError, /description is required/)
|
51
51
|
end
|
52
52
|
|
53
53
|
it "should set priority" do
|
54
54
|
priority = "urgent"
|
55
55
|
|
56
|
-
ticket = client.tickets.create!(subject:
|
56
|
+
ticket = client.tickets.create!(subject: mock_uuid, description: mock_uuid, priority: priority)
|
57
57
|
|
58
58
|
expect(ticket.priority).to eq("urgent")
|
59
59
|
expect(client.tickets.get!(ticket.id).priority).to eq(priority)
|
@@ -61,7 +61,7 @@ describe "Zendesk2::Client" do
|
|
61
61
|
end
|
62
62
|
|
63
63
|
describe "with a created ticket" do
|
64
|
-
let(:ticket) { client.tickets.create!(subject:
|
64
|
+
let(:ticket) { client.tickets.create!(subject: mock_uuid, description: mock_uuid) }
|
65
65
|
|
66
66
|
it "should get requester" do
|
67
67
|
expect(ticket.requester).to eq(client.users.current)
|
@@ -77,10 +77,10 @@ describe "Zendesk2::Client" do
|
|
77
77
|
end
|
78
78
|
|
79
79
|
describe "ticket comments" do
|
80
|
-
let(:ticket) { client.tickets.create!(subject:
|
80
|
+
let(:ticket) { client.tickets.create!(subject: mock_uuid, description: mock_uuid) }
|
81
81
|
|
82
82
|
it "lists audits" do
|
83
|
-
body =
|
83
|
+
body = mock_uuid
|
84
84
|
ticket.comment(body)
|
85
85
|
|
86
86
|
audit = ticket.audits.last
|
@@ -99,7 +99,7 @@ describe "Zendesk2::Client" do
|
|
99
99
|
end
|
100
100
|
|
101
101
|
it "lists comments" do
|
102
|
-
body =
|
102
|
+
body = mock_uuid
|
103
103
|
ticket.comment(body)
|
104
104
|
|
105
105
|
expect(ticket.comments.find{|c| c.body == body}).not_to be_nil
|
@@ -110,19 +110,19 @@ describe "Zendesk2::Client" do
|
|
110
110
|
let!(:ticket_field) { client.ticket_fields.create!(title: SecureRandom.hex(3), type: "text") }
|
111
111
|
|
112
112
|
it "should be based on ticket_fields" do
|
113
|
-
ticket = client.tickets.create!(subject:
|
113
|
+
ticket = client.tickets.create!(subject: mock_uuid, description: mock_uuid)
|
114
114
|
custom_field = ticket.custom_fields.find { |cf| cf["id"] == ticket_field.identity }
|
115
115
|
|
116
116
|
expect(custom_field).not_to be_nil
|
117
117
|
expect(custom_field["value"]).to be_nil
|
118
118
|
|
119
|
-
ticket = client.tickets.create!(subject:
|
119
|
+
ticket = client.tickets.create!(subject: mock_uuid, description: mock_uuid, custom_fields: [{"id" => ticket_field.identity, "value" => "jessicaspacekat"}])
|
120
120
|
custom_field = ticket.custom_fields.find { |cf| cf["id"] == ticket_field.identity }
|
121
121
|
|
122
122
|
expect(custom_field).not_to be_nil
|
123
123
|
expect(custom_field["value"]).to eq("jessicaspacekat")
|
124
124
|
|
125
|
-
ticket = client.tickets.create!(subject:
|
125
|
+
ticket = client.tickets.create!(subject: mock_uuid, description: mock_uuid, custom_fields: [{"id" => "-1", "value" => "fantasy"}])
|
126
126
|
expect(ticket.custom_fields).not_to include({"id" => -1, "value" => "fantasy"})
|
127
127
|
end
|
128
128
|
end
|
data/spec/topic_comments_spec.rb
CHANGED
@@ -2,14 +2,14 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe "topic_comments" do
|
4
4
|
let!(:client) { create_client }
|
5
|
-
let!(:user) { client.users.create!(email:
|
6
|
-
let!(:forum) { client.forums.create!(name:
|
7
|
-
let!(:topic) { client.topics.create!(title:
|
5
|
+
let!(:user) { client.users.create!(email: mock_email, name: mock_uuid, verified: true) }
|
6
|
+
let!(:forum) { client.forums.create!(name: mock_uuid) }
|
7
|
+
let!(:topic) { client.topics.create!(title: mock_uuid, body: mock_uuid, forum: forum) }
|
8
8
|
|
9
9
|
include_examples "zendesk resource",
|
10
10
|
{
|
11
|
-
:create_params => lambda { {body:
|
12
|
-
:update_params => lambda { {body:
|
11
|
+
:create_params => lambda { {body: mock_uuid, topic_id: topic.identity, user_id: user.identity} },
|
12
|
+
:update_params => lambda { {body: mock_uuid} },
|
13
13
|
:fetch_params => lambda { |tc| {"topic_id" => tc.topic_id, "id" => tc.identity} },
|
14
14
|
:collection => lambda { client.topic_comments(topic_id: topic.identity) },
|
15
15
|
}
|
data/spec/topics_spec.rb
CHANGED
@@ -2,11 +2,11 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe "topics" do
|
4
4
|
let(:client) { create_client }
|
5
|
-
let(:forum) { client.forums.create(name:
|
5
|
+
let(:forum) { client.forums.create(name: mock_uuid) }
|
6
6
|
|
7
7
|
include_examples "zendesk resource", {
|
8
8
|
:collection => lambda { client.topics },
|
9
|
-
:create_params => lambda { { title:
|
10
|
-
:update_params => lambda { { title:
|
9
|
+
:create_params => lambda { { title: mock_uuid, body: mock_uuid, forum_id: forum.id } },
|
10
|
+
:update_params => lambda { { title: mock_uuid, body: mock_uuid } },
|
11
11
|
}
|
12
12
|
end
|
data/spec/user_fields_spec.rb
CHANGED
@@ -5,8 +5,8 @@ describe "user_fields" do
|
|
5
5
|
|
6
6
|
include_examples "zendesk resource", {
|
7
7
|
:collection => lambda { client.user_fields },
|
8
|
-
:create_params => lambda { { title:
|
9
|
-
:update_params => lambda { { title:
|
8
|
+
:create_params => lambda { { title: mock_uuid, type: "text", key: "custom_#{SecureRandom.hex(3)}"} },
|
9
|
+
:update_params => lambda { { title: mock_uuid } },
|
10
10
|
:paged => false,
|
11
11
|
}
|
12
12
|
end
|
@@ -2,10 +2,10 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe "user_identities" do
|
4
4
|
let(:client) { create_client }
|
5
|
-
let(:user) { client.users.create(email:
|
5
|
+
let(:user) { client.users.create(email: mock_email, name: mock_uuid, verified: true) }
|
6
6
|
|
7
7
|
include_examples "zendesk resource", {
|
8
|
-
:create_params => lambda { { value: "ey+#{
|
8
|
+
:create_params => lambda { { value: "ey+#{mock_uuid}@example.org", type: "email", user_id: user.id } },
|
9
9
|
:update_params => lambda { { verified: true } },
|
10
10
|
:fetch_params => lambda { |uc| { "user_id" => uc.user_id, "id" => uc.id } },
|
11
11
|
:collection => lambda { client.user_identities(user_id: user.id) },
|
@@ -14,7 +14,7 @@ describe "user_identities" do
|
|
14
14
|
}
|
15
15
|
|
16
16
|
describe "#create_user_identity" do
|
17
|
-
let(:another_user) { client.users.create(email:
|
17
|
+
let(:another_user) { client.users.create(email: mock_email, name: mock_uuid, verified: true) }
|
18
18
|
|
19
19
|
it "should prevent duplicate identities across users" do
|
20
20
|
expect {
|
data/spec/users_spec.rb
CHANGED
@@ -5,8 +5,8 @@ describe "users" do
|
|
5
5
|
|
6
6
|
include_examples "zendesk resource", {
|
7
7
|
:collection => lambda { client.users },
|
8
|
-
:create_params => lambda { { email:
|
9
|
-
:update_params => lambda { { name:
|
8
|
+
:create_params => lambda { { email: mock_email, name: mock_uuid, verified: true } },
|
9
|
+
:update_params => lambda { { name: mock_uuid } },
|
10
10
|
}
|
11
11
|
|
12
12
|
it "should get current user" do
|
@@ -14,17 +14,43 @@ describe "users" do
|
|
14
14
|
expect(current_user.email).to eq(client.username)
|
15
15
|
end
|
16
16
|
|
17
|
+
describe "#create_user" do
|
18
|
+
it "should prevent duplicate external_ids" do
|
19
|
+
client.create_user(email: mock_email, name: "a", external_id: nil) # fine
|
20
|
+
client.create_user(email: mock_email, name: "b", external_id: nil) # also fine
|
21
|
+
client.create_user(email: mock_email, name: "c", external_id: "1") # it's cool
|
22
|
+
|
23
|
+
expect {
|
24
|
+
client.create_user(email: mock_email, name: "d", external_id: "1")
|
25
|
+
}.to raise_exception(Zendesk2::Error, /External has already been taken/)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
describe "#update_user" do
|
30
|
+
it "should prevent duplicate external_ids" do
|
31
|
+
user = client.users.create(email: mock_email, name: "a")
|
32
|
+
another_user = client.users.create(email: mock_email, name: "b")
|
33
|
+
|
34
|
+
client.update_user(id: user.id, external_id: nil) # fine
|
35
|
+
client.update_user(id: another_user.id, external_id: "1") # also fine
|
36
|
+
|
37
|
+
expect {
|
38
|
+
client.update_user("id" => user.id, external_id: "1")
|
39
|
+
}.to raise_exception(Zendesk2::Error, /External has already been taken/)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
17
43
|
describe "#search" do
|
18
44
|
it "should find a user based on details criteria with wildcards and by organization name", mock_only: true do
|
19
45
|
# detached user
|
20
|
-
client.users.create!(email:
|
46
|
+
client.users.create!(email: mock_email, name: mock_uuid)
|
21
47
|
|
22
48
|
# possible match
|
23
|
-
bad_org = client.organizations.create!(name:
|
24
|
-
client.users.create!(email:
|
49
|
+
bad_org = client.organizations.create!(name: mock_uuid)
|
50
|
+
client.users.create!(email: mock_email, name: mock_uuid, organization: bad_org)
|
25
51
|
|
26
|
-
org = client.organizations.create!(name:
|
27
|
-
user = client.users.create!(email:
|
52
|
+
org = client.organizations.create!(name: mock_uuid)
|
53
|
+
user = client.users.create!(email: mock_email, name: mock_uuid, organization: org, details: "anything_hello-something-michelle")
|
28
54
|
|
29
55
|
expect(client.users.search(details: "*michelle*", organization: org.name)).to contain_exactly(user)
|
30
56
|
expect(client.users.search(details: "*michelle*", organization: org.name[0..6])).to include(user)
|
@@ -32,10 +58,10 @@ describe "users" do
|
|
32
58
|
end
|
33
59
|
|
34
60
|
describe "#save" do
|
35
|
-
let!(:user) { client.users.create!(email:
|
61
|
+
let!(:user) { client.users.create!(email: mock_email, name: mock_uuid) }
|
36
62
|
|
37
63
|
it "should update organization" do
|
38
|
-
user.organization = organization = client.organizations.create!(name:
|
64
|
+
user.organization = organization = client.organizations.create!(name: mock_uuid)
|
39
65
|
|
40
66
|
user.save!
|
41
67
|
|
@@ -43,19 +69,19 @@ describe "users" do
|
|
43
69
|
end
|
44
70
|
|
45
71
|
it "should get requested tickets" do
|
46
|
-
ticket = client.tickets.create!(requester: user, subject:
|
72
|
+
ticket = client.tickets.create!(requester: user, subject: mock_uuid, description: mock_uuid)
|
47
73
|
|
48
74
|
expect(user.requested_tickets).to include ticket
|
49
75
|
end
|
50
76
|
|
51
77
|
it "should get ccd tickets", mock_only: true do
|
52
|
-
ticket = client.tickets.create!(collaborators: [user], subject:
|
78
|
+
ticket = client.tickets.create!(collaborators: [user], subject: mock_uuid, description: mock_uuid)
|
53
79
|
|
54
80
|
expect(user.ccd_tickets).to include ticket
|
55
81
|
end
|
56
82
|
|
57
83
|
it "cannot destroy a user with a ticket" do
|
58
|
-
client.tickets.create!(requester: user, subject:
|
84
|
+
client.tickets.create!(requester: user, subject: mock_uuid, description: mock_uuid)
|
59
85
|
|
60
86
|
expect(user.destroy).to be_falsey
|
61
87
|
|
@@ -74,7 +100,7 @@ describe "users" do
|
|
74
100
|
end
|
75
101
|
|
76
102
|
it "should create a new identity" do
|
77
|
-
email = "ey+#{
|
103
|
+
email = "ey+#{mock_uuid}@example.org"
|
78
104
|
|
79
105
|
new_identity = user.identities.create!(type: "email", value: email)
|
80
106
|
expect(new_identity.primary).to be_falsey
|
@@ -84,7 +110,7 @@ describe "users" do
|
|
84
110
|
end
|
85
111
|
|
86
112
|
it "should mark remaining identity as primary" do
|
87
|
-
email = "ey+#{
|
113
|
+
email = "ey+#{mock_uuid}@example.org"
|
88
114
|
|
89
115
|
initial_identity = user.identities.all.first
|
90
116
|
new_identity = user.identities.create!(type: "email", value: email)
|
@@ -98,7 +124,7 @@ describe "users" do
|
|
98
124
|
end
|
99
125
|
|
100
126
|
it "should not allow multiple primary identities" do
|
101
|
-
email = "ey+#{
|
127
|
+
email = "ey+#{mock_uuid}@example.org"
|
102
128
|
|
103
129
|
initial_identity = user.identities.all.first
|
104
130
|
new_identity = user.identities.create!(type: "email", value: email)
|
@@ -110,11 +136,11 @@ describe "users" do
|
|
110
136
|
end
|
111
137
|
|
112
138
|
it "should hate non-unique emails" do
|
113
|
-
email =
|
114
|
-
client.users.create!(email: email, name:
|
115
|
-
expect { client.users.create!(email: email, name:
|
139
|
+
email = mock_email
|
140
|
+
client.users.create!(email: email, name: mock_uuid)
|
141
|
+
expect { client.users.create!(email: email, name: mock_uuid) }.to raise_exception(Zendesk2::Error)
|
116
142
|
|
117
|
-
user = client.users.create(email: email, name:
|
143
|
+
user = client.users.create(email: email, name: mock_uuid)
|
118
144
|
|
119
145
|
expect(user.identity).to eq(nil)
|
120
146
|
expect(user.errors).to eq({"email" => ["Email: #{email} is already being used by another user"]})
|
@@ -124,7 +150,7 @@ describe "users" do
|
|
124
150
|
expect(user.identities.size).to eq(1)
|
125
151
|
|
126
152
|
original_email = user.email
|
127
|
-
user.email = (new_email =
|
153
|
+
user.email = (new_email = mock_email)
|
128
154
|
|
129
155
|
expect {
|
130
156
|
user.save!
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zendesk2
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Josh Lane
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-10-
|
11
|
+
date: 2014-10-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: addressable
|
@@ -255,6 +255,7 @@ files:
|
|
255
255
|
- spec/shared/zendesk_resource.rb
|
256
256
|
- spec/spec_helper.rb
|
257
257
|
- spec/support/client_helper.rb
|
258
|
+
- spec/support/data_helper.rb
|
258
259
|
- spec/ticket_fields_spec.rb
|
259
260
|
- spec/tickets_spec.rb
|
260
261
|
- spec/topic_comments_spec.rb
|
@@ -299,6 +300,7 @@ test_files:
|
|
299
300
|
- spec/shared/zendesk_resource.rb
|
300
301
|
- spec/spec_helper.rb
|
301
302
|
- spec/support/client_helper.rb
|
303
|
+
- spec/support/data_helper.rb
|
302
304
|
- spec/ticket_fields_spec.rb
|
303
305
|
- spec/tickets_spec.rb
|
304
306
|
- spec/topic_comments_spec.rb
|