zendesk2 1.2.7 → 1.2.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/lib/zendesk2/client/mock.rb +7 -1
  3. data/lib/zendesk2/client/models/ticket.rb +1 -1
  4. data/lib/zendesk2/client/requests/create_category.rb +1 -1
  5. data/lib/zendesk2/client/requests/create_ticket.rb +9 -7
  6. data/lib/zendesk2/client/requests/create_user.rb +1 -1
  7. data/lib/zendesk2/client/requests/create_user_identity.rb +2 -1
  8. data/lib/zendesk2/client/requests/destroy_category.rb +1 -1
  9. data/lib/zendesk2/client/requests/destroy_forum.rb +2 -1
  10. data/lib/zendesk2/client/requests/destroy_group.rb +1 -2
  11. data/lib/zendesk2/client/requests/destroy_membership.rb +2 -1
  12. data/lib/zendesk2/client/requests/destroy_organization.rb +2 -2
  13. data/lib/zendesk2/client/requests/destroy_ticket.rb +1 -1
  14. data/lib/zendesk2/client/requests/destroy_ticket_field.rb +1 -1
  15. data/lib/zendesk2/client/requests/destroy_topic.rb +2 -1
  16. data/lib/zendesk2/client/requests/destroy_topic_comment.rb +2 -1
  17. data/lib/zendesk2/client/requests/destroy_user.rb +3 -5
  18. data/lib/zendesk2/client/requests/destroy_user_field.rb +1 -1
  19. data/lib/zendesk2/client/requests/destroy_user_identity.rb +4 -4
  20. data/lib/zendesk2/client/requests/get_forum.rb +1 -1
  21. data/lib/zendesk2/client/requests/get_help_center_article.rb +1 -1
  22. data/lib/zendesk2/client/requests/get_help_center_category.rb +1 -1
  23. data/lib/zendesk2/client/requests/get_help_center_section.rb +1 -1
  24. data/lib/zendesk2/client/requests/get_organization_by_external_id.rb +2 -2
  25. data/lib/zendesk2/client/requests/get_requested_tickets.rb +2 -2
  26. data/lib/zendesk2/client/requests/get_topic.rb +1 -1
  27. data/lib/zendesk2/client/requests/get_user.rb +8 -4
  28. data/lib/zendesk2/client/requests/get_user_identities.rb +1 -1
  29. data/lib/zendesk2/client/requests/mark_user_identity_primary.rb +2 -2
  30. data/lib/zendesk2/client/requests/search_user.rb +1 -1
  31. data/lib/zendesk2/client/requests/update_category.rb +1 -1
  32. data/lib/zendesk2/client/requests/update_forum.rb +2 -1
  33. data/lib/zendesk2/client/requests/update_help_center_article.rb +1 -1
  34. data/lib/zendesk2/client/requests/update_help_center_category.rb +2 -2
  35. data/lib/zendesk2/client/requests/update_help_center_section.rb +2 -2
  36. data/lib/zendesk2/client/requests/update_organization.rb +1 -1
  37. data/lib/zendesk2/client/requests/update_ticket.rb +1 -1
  38. data/lib/zendesk2/client/requests/update_ticket_field.rb +3 -3
  39. data/lib/zendesk2/client/requests/update_topic.rb +2 -1
  40. data/lib/zendesk2/client/requests/update_user.rb +5 -4
  41. data/lib/zendesk2/client/requests/update_user_identity.rb +3 -3
  42. data/lib/zendesk2/version.rb +1 -1
  43. data/spec/tickets_spec.rb +2 -2
  44. data/spec/users_spec.rb +18 -8
  45. metadata +2 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fbedbdbd2cc1fb5d7181d274138df03c74caf78a
4
- data.tar.gz: d1b795649c0ecc16cf9142bc7c527b9f9048c81c
3
+ metadata.gz: be50d350e9c25fc106b0bc4155ee76d24ebce43a
4
+ data.tar.gz: dda78a4ca0bae941f2c1357a0d443ff50ecc06e1
5
5
  SHA512:
6
- metadata.gz: 93400647817f08b86d3322a4dc24282bd5b0ce04218cb8d3e782da177d84312f552ca85eeccb020ea5b71fa419dbc96bfb8ed4ed6ed32bef42d41f52ed912e20
7
- data.tar.gz: 7864462a046770514e143cf51d0ba2af739c21c968e327523087445ab3af25a70e5d198fbb7bbf5ea7372bb35bcf21745887d812610be29ba61b00b83e0fbc79
6
+ metadata.gz: c8e5ebae513b256ed1fc3f55851f8ad572753dce377b68fca8009376f1ab65cc73ba1aae3e4684d0523bf1e1bc900eadd741117de802931643a967357d0100ba
7
+ data.tar.gz: 39641e3dc44246592f5e980da926c5a69b754f0d51fb5d6c8497878d6b1475e93bd5a91fd10856660538e33c29df4e098dac6e65a93e44cca1824e3bc3d9b8fa
@@ -30,6 +30,7 @@ class Zendesk2::Client < Cistern::Service
30
30
  def self.new_id
31
31
  @current_id ||= 0
32
32
  @current_id += 1
33
+ @current_id.to_s
33
34
  end
34
35
 
35
36
  def data
@@ -136,13 +137,18 @@ class Zendesk2::Client < Cistern::Service
136
137
  end
137
138
 
138
139
  def find!(collection, identity, options={})
139
- if resource = self.data[collection][identity]
140
+ if resource = self.data[collection][identity.to_s]
140
141
  resource
141
142
  else
142
143
  error!(options[:error] || :not_found)
143
144
  end
144
145
  end
145
146
 
147
+ def delete!(collection, identity, options={})
148
+ self.data[collection].delete(identity.to_s) ||
149
+ error!(options[:error] || :not_found)
150
+ end
151
+
146
152
  def error!(type, options={})
147
153
  status, body = self.class.error_map[type]
148
154
  body.merge!("details" => options[:details]) if options[:details]
@@ -67,7 +67,7 @@ class Zendesk2::Client::Ticket < Zendesk2::Model
67
67
  data = if new_record?
68
68
  requires :subject, :description
69
69
 
70
- with_requester = @requester && Zendesk2.stringify_keys(@requester)
70
+ with_requester = (@requester || nil) && Zendesk2.stringify_keys(@requester)
71
71
 
72
72
  connection.create_ticket(params.merge("requester" => with_requester)).body["ticket"]
73
73
  else
@@ -20,7 +20,7 @@ class Zendesk2::Client
20
20
  "updated_at" => Time.now.iso8601,
21
21
  }.merge(params)
22
22
 
23
- self.data[:categories][identity]= record
23
+ self.data[:categories][identity] = record
24
24
 
25
25
  response(
26
26
  :method => :post,
@@ -19,6 +19,8 @@ class Zendesk2::Client
19
19
  error!(:invalid, :details => {"base" => [{"description" => "Description: cannot be blank"}]})
20
20
  end
21
21
 
22
+ requester_id = params.delete('requester_id')
23
+
22
24
  if requester = params.delete('requester')
23
25
  if !requester['name'] || requester['name'].size < 1
24
26
  response(
@@ -41,7 +43,7 @@ class Zendesk2::Client
41
43
  else
42
44
  # name is not required in this case
43
45
  create_user(requester).body["user"]["id"]
44
- end
46
+ end.to_s
45
47
 
46
48
  params['requester_id'] = user_id
47
49
  end
@@ -49,15 +51,15 @@ class Zendesk2::Client
49
51
  requested_custom_fields = (params.delete("custom_fields") || [])
50
52
 
51
53
  custom_fields = requested_custom_fields.map do |cf|
52
- field_id = cf["id"].to_i
54
+ field_id = cf["id"].to_s
53
55
  if self.data[:ticket_fields][field_id]
54
56
  {"id" => field_id, "value" => cf["value"] }
55
57
  end
56
58
  end.compact
57
59
 
58
60
  self.data[:ticket_fields].each do |field_id, field|
59
- requested_custom_fields.find { |cf| cf["id"] == field_id } ||
60
- custom_fields << {"id" => field_id, "value" => nil }
61
+ requested_custom_fields.find { |cf| cf["id"] == field_id.to_s } ||
62
+ custom_fields << {"id" => field_id.to_s, "value" => nil }
61
63
  end
62
64
 
63
65
  record = {
@@ -70,11 +72,11 @@ class Zendesk2::Client
70
72
  "custom_fields" => custom_fields,
71
73
  }.merge(params)
72
74
 
73
- record["requester_id"] ||= current_user["id"]
74
- record["submitter_id"] = current_user["id"]
75
+ record["requester_id"] ||= (requester_id && requester_id.to_s) || current_user["id"].to_s
76
+ record["submitter_id"] = current_user["id"].to_s
75
77
 
76
78
  # FIXME: throw error if user doesn't exist?
77
- requester = self.data[:users][record["requester_id"]]
79
+ requester = self.find!(:users, record["requester_id"])
78
80
  record["organization_id"] = requester["organization_id"]
79
81
 
80
82
  self.data[:tickets][identity] = record
@@ -33,7 +33,7 @@ class Zendesk2::Client
33
33
  "description" => "Email: #{email} is already being used by another user"
34
34
  }]})
35
35
  else
36
- user_identity_id = self.class.new_id # ugh
36
+ user_identity_id = self.class.new_id
37
37
 
38
38
  user_identity = {
39
39
  "id" => user_identity_id,
@@ -16,7 +16,7 @@ class Zendesk2::Client
16
16
  params = Cistern::Hash.stringify_keys(params)
17
17
 
18
18
  identity = self.class.new_id
19
- user_id = params["user_id"]
19
+ user_id = params.delete("user_id").to_s
20
20
 
21
21
  record = {
22
22
  "id" => identity,
@@ -25,6 +25,7 @@ class Zendesk2::Client
25
25
  "updated_at" => Time.now.iso8601,
26
26
  "verified" => false,
27
27
  "primary" => false,
28
+ "user_id" => user_id,
28
29
  }.merge(params)
29
30
 
30
31
  record.merge("primary" => true) if self.data[:identities].values.find { |ui| ui["user_id"] == user_id }.nil?
@@ -13,7 +13,7 @@ class Zendesk2::Client
13
13
  class Mock
14
14
  def destroy_category(params={})
15
15
  id = params["id"]
16
- body = self.data[:categories].delete(id)
16
+ body = self.delete!(:categories, id)
17
17
 
18
18
  response(
19
19
  :method => :delete,
@@ -15,7 +15,8 @@ class Zendesk2::Client
15
15
  id = params["id"]
16
16
  path = "/forums/#{id}.json"
17
17
 
18
- body = self.data[:forums].delete(id)
18
+ body = self.delete!(:forums, id)
19
+
19
20
  response(
20
21
  :method => :delete,
21
22
  :path => path,
@@ -13,8 +13,7 @@ class Zendesk2::Client
13
13
  class Mock
14
14
  def destroy_group(params={})
15
15
  id = params["id"]
16
- body = self.data[:groups][id]
17
- body["deleted"] = true
16
+ body = self.find!(:groups, id).merge!("deleted" => true)
18
17
 
19
18
  response(
20
19
  :method => :delete,
@@ -14,7 +14,8 @@ class Zendesk2::Client
14
14
  def destroy_membership(params={})
15
15
  id = params["id"]
16
16
 
17
- body = self.data[:memberships].delete(id)
17
+ body = self.delete!(:memberships, id)
18
+
18
19
  response(
19
20
  :method => :delete,
20
21
  :path => "/organization_memberships/#{id}.json",
@@ -12,8 +12,8 @@ class Zendesk2::Client
12
12
 
13
13
  class Mock
14
14
  def destroy_organization(params={})
15
- id = params["id"]
16
- body = self.data[:organizations].delete(id)
15
+ id = require_parameters(params, "id")
16
+ body = self.delete!(:organizations, id)
17
17
 
18
18
  response(
19
19
  :method => :delete,
@@ -13,7 +13,7 @@ class Zendesk2::Client
13
13
  class Mock
14
14
  def destroy_ticket(params={})
15
15
  id = params["id"]
16
- body = self.data[:tickets].delete(id)
16
+ body = self.delete!(:tickets, id)
17
17
 
18
18
  response(
19
19
  :method => :delete,
@@ -13,7 +13,7 @@ class Zendesk2::Client
13
13
  class Mock
14
14
  def destroy_ticket_field(params={})
15
15
  id = params["id"]
16
- body = self.data[:ticket_fields].delete(id)
16
+ body = self.delete!(:ticket_fields, id)
17
17
 
18
18
  response(
19
19
  :method => :delete,
@@ -15,7 +15,8 @@ class Zendesk2::Client
15
15
  id = params["id"]
16
16
  path = "/topics/#{id}.json"
17
17
 
18
- body = self.data[:topics].delete(id)
18
+ body = self.delete!(:topics, id)
19
+
19
20
  response(
20
21
  :method => :delete,
21
22
  :path => path,
@@ -17,7 +17,8 @@ class Zendesk2::Client
17
17
  topic_id = params["topic_id"]
18
18
  path = "/topics/#{topic_id}/comments/#{id}.json"
19
19
 
20
- body = self.data[:topic_comments].delete(id)
20
+ body = self.delete!(:topic_comments, id)
21
+
21
22
  response(
22
23
  :method => :delete,
23
24
  :path => path,
@@ -12,17 +12,15 @@ class Zendesk2::Client
12
12
 
13
13
  class Mock
14
14
  def destroy_user(params={})
15
- id = params["id"]
15
+ id = params["id"].to_s
16
16
  path = "/users/#{id}.json"
17
17
 
18
- tickets = self.data[:tickets].values.select{|t| t["requester_id"] == id}.size
19
-
20
- find!(:users, id)
18
+ tickets = self.data[:tickets].values.select { |t| t["requester_id"] == id }.size
21
19
 
22
20
  if tickets < 1
23
21
  self.data[:identities].each { |k,v| self.data[:identities].delete(k) if v["user_id"] == id }
24
22
 
25
- body = self.data[:users].delete(id)
23
+ body = self.delete!(:users, id)
26
24
 
27
25
  response(
28
26
  :method => :delete,
@@ -13,7 +13,7 @@ class Zendesk2::Client
13
13
  class Mock
14
14
  def destroy_user_field(params={})
15
15
  id = params["id"]
16
- body = self.data[:user_fields].delete(id)
16
+ body = self.delete!(:user_fields, id)
17
17
 
18
18
  response(
19
19
  :method => :delete,
@@ -13,12 +13,12 @@ class Zendesk2::Client
13
13
 
14
14
  class Mock
15
15
  def destroy_user_identity(params={})
16
- id = params["id"]
17
- user_id = params["user_id"]
16
+ id = params["id"].to_s
17
+ user_id = params["user_id"].to_s
18
18
  path = "/users/#{user_id}/identities/#{id}.json"
19
19
 
20
- user_identity = self.data[:identities][id]
21
- body = self.data[:identities].delete(id)
20
+ body = self.delete!(:identities, id)
21
+
22
22
  response(
23
23
  :method => :delete,
24
24
  :path => path,
@@ -13,7 +13,7 @@ class Zendesk2::Client
13
13
  class Mock
14
14
  def get_forum(params={})
15
15
  id = params["id"]
16
- body = self.data[:forums][id]
16
+ body = self.find!(:forums, id)
17
17
 
18
18
  response(
19
19
  :path => "/forums/#{id}.json",
@@ -33,7 +33,7 @@ class Zendesk2::Client
33
33
  response(
34
34
  :path => path,
35
35
  :body => {
36
- "article" => self.find!(:help_center_articles, id.to_i)
36
+ "article" => self.find!(:help_center_articles, id)
37
37
  },
38
38
  )
39
39
  end
@@ -33,7 +33,7 @@ class Zendesk2::Client
33
33
  response(
34
34
  :path => path,
35
35
  :body => {
36
- "category" => self.find!(:help_center_categories, id.to_i)
36
+ "category" => self.find!(:help_center_categories, id)
37
37
  },
38
38
  )
39
39
  end
@@ -33,7 +33,7 @@ class Zendesk2::Client
33
33
  response(
34
34
  :path => path,
35
35
  :body => {
36
- "section" => self.find!(:help_center_sections, id.to_i)
36
+ "section" => self.find!(:help_center_sections, id)
37
37
  },
38
38
  )
39
39
  end
@@ -3,7 +3,7 @@ class Zendesk2::Client
3
3
  def get_organization_by_external_id(external_id)
4
4
  request(
5
5
  :method => :get,
6
- :params => {external_id: external_id},
6
+ :params => { external_id: external_id },
7
7
  :path => "/organizations/search.json",
8
8
  )
9
9
  end
@@ -13,7 +13,7 @@ class Zendesk2::Client
13
13
  def get_organization_by_external_id(external_id)
14
14
  collection = self.data[:organizations]
15
15
 
16
- results = collection.select{|k,v| v["external_id"] == external_id}.values
16
+ results = collection.select { |k,v| v["external_id"].to_s == external_id.to_s }.values
17
17
 
18
18
  response(
19
19
  :path => "/organizations/search.json",
@@ -14,9 +14,9 @@ class Zendesk2::Client
14
14
 
15
15
  class Mock
16
16
  def get_requested_tickets(params={})
17
- id = params["id"]
17
+ id = params["id"].to_s
18
18
 
19
- page(params, :tickets, "/requesteds/#{id}/tickets.json", "tickets", filter: lambda{|c| c.select{|u| u["requester_id"] == id}})
19
+ page(params, :tickets, "/requesteds/#{id}/tickets.json", "tickets", filter: lambda { |c| c.select { |u| u["requester_id"] == id } })
20
20
  end
21
21
  end # Mock
22
22
  end
@@ -13,7 +13,7 @@ class Zendesk2::Client
13
13
  class Mock
14
14
  def get_topic(params={})
15
15
  id = params["id"]
16
- body = self.data[:topics][id]
16
+ body = self.find!(:topics, id)
17
17
 
18
18
  response(
19
19
  :path => "/topics/#{id}.json",
@@ -12,17 +12,21 @@ class Zendesk2::Client
12
12
 
13
13
  class Mock
14
14
  def get_user(params={})
15
- id = require_parameters(params, "id").to_i
15
+ id = require_parameters(params, "id")
16
16
 
17
- identities = self.data[:identities].values.select { |i| i["user_id"] == id }
18
- identity = identities.find { |i| i["type"] == "email" && i["primary"] } || identities.find { |i| i["type"] == "email" }
17
+ identities = self.data[:identities].values.select { |i| i["user_id"] == id.to_s }
18
+ body = find!(:users, id).dup
19
+
20
+ if identity = identities.find { |i| i["type"] == "email" && i["primary"] } || identities.find { |i| i["type"] == "email" }
21
+ body.merge!("email" => identity["value"])
22
+ end
19
23
 
20
24
  # @todo what happens if no identity?
21
25
 
22
26
  response(
23
27
  :path => "/users/#{id}.json",
24
28
  :body => {
25
- "user" => find!(:users, id).merge("email" => identity["value"]),
29
+ "user" => body,
26
30
  },
27
31
  )
28
32
  end
@@ -16,7 +16,7 @@ class Zendesk2::Client
16
16
  def get_user_identities(params={})
17
17
  user_id = require_parameters(params, "user_id")
18
18
 
19
- page(params, :identities, "/users/#{user_id}/identities.json", "identities", filter: lambda { |c| c.select { |a| a["user_id"] == user_id } })
19
+ page(params, :identities, "/users/#{user_id}/identities.json", "identities", filter: lambda { |c| c.select { |a| a["user_id"].to_s == user_id.to_s } })
20
20
  end
21
21
  end # Mock
22
22
  end
@@ -13,8 +13,8 @@ class Zendesk2::Client
13
13
  end
14
14
  class Mock
15
15
  def mark_user_identity_primary(params={})
16
- id = params.delete("id")
17
- user_id = params.delete("user_id")
16
+ id = params.delete("id").to_s
17
+ user_id = params.delete("user_id").to_s
18
18
  path = "/users/#{user_id}/identities/#{id}/make_primary.json"
19
19
 
20
20
  user_identity = self.find!(:identities, id)
@@ -19,7 +19,7 @@ class Zendesk2::Client
19
19
 
20
20
  # allow searching by organization name
21
21
  collection = collection.map do |user|
22
- if organization = self.data[:organizations][user["organization_id"]]
22
+ if organization = self.data[:organizations][user["organization_id"].to_s]
23
23
  user.merge("organization" => organization["name"])
24
24
  else
25
25
  user
@@ -15,7 +15,7 @@ class Zendesk2::Client
15
15
  class Mock
16
16
  def update_category(params={})
17
17
  id = params.delete("id")
18
- body = self.data[:categories][id].merge!(params)
18
+ body = self.find!(:categories, id).merge!(params)
19
19
 
20
20
  response(
21
21
  :method => :put,
@@ -17,7 +17,8 @@ class Zendesk2::Client
17
17
  id = params.delete("id")
18
18
  path = "/forums/#{id}.json"
19
19
 
20
- body = self.data[:forums][id].merge!(params)
20
+ body = self.find!(:forums, id).merge!(params)
21
+
21
22
  response(
22
23
  :method => :put,
23
24
  :path => path,
@@ -34,7 +34,7 @@ class Zendesk2::Client
34
34
  "/help_center/articles/#{id}.json"
35
35
  end
36
36
 
37
- body = self.data[:help_center_articles][id.to_i].merge!(params)
37
+ body = self.find!(:help_center_articles, id).merge!(params)
38
38
 
39
39
  response(
40
40
  :method => :put,
@@ -25,7 +25,7 @@ class Zendesk2::Client
25
25
 
26
26
  require_parameters(params, "id")
27
27
 
28
- id = params.delete("id")
28
+ id = params.delete("id").to_s
29
29
  locale = params["locale"]
30
30
 
31
31
  path = if locale
@@ -34,7 +34,7 @@ class Zendesk2::Client
34
34
  "/help_center/categories/#{id}.json"
35
35
  end
36
36
 
37
- body = self.data[:help_center_categories][id.to_i].merge!(params)
37
+ body = self.find!(:help_center_categories, id).merge!(params)
38
38
 
39
39
  response(
40
40
  :method => :put,
@@ -25,7 +25,7 @@ class Zendesk2::Client
25
25
 
26
26
  require_parameters(params, "id")
27
27
 
28
- id = params.delete("id")
28
+ id = params.delete("id").to_s
29
29
  locale = params["locale"]
30
30
 
31
31
  path = if locale
@@ -34,7 +34,7 @@ class Zendesk2::Client
34
34
  "/help_center/sections/#{id}.json"
35
35
  end
36
36
 
37
- body = self.data[:help_center_sections][id.to_i].merge!(params)
37
+ body = self.find!(:help_center_sections, id).merge!(params)
38
38
 
39
39
  response(
40
40
  :method => :put,
@@ -20,7 +20,7 @@ class Zendesk2::Client
20
20
  organization = self.find!(:organizations, id)
21
21
 
22
22
  other_organizations = self.data[:organizations].dup
23
- other_organizations.delete(id)
23
+ other_organizations.delete(id.to_s)
24
24
 
25
25
  if other_organizations.values.find { |o| o["name"] == params["name"] }
26
26
  error!(:invalid, details: {"name" => [ { "description" => "Name: has already been taken" } ]})
@@ -15,7 +15,7 @@ class Zendesk2::Client
15
15
  class Mock
16
16
  def update_ticket(params={})
17
17
  ticket_id = params.delete("id")
18
- body = self.data[:tickets][ticket_id].merge!(params)
18
+ body = self.find!(:tickets, ticket_id).merge!(params)
19
19
 
20
20
  if comment = params["comment"]
21
21
  comment_id = self.class.new_id
@@ -14,12 +14,12 @@ class Zendesk2::Client
14
14
  end
15
15
  class Mock
16
16
  def update_ticket_field(params={})
17
- ticket_field_id = params.delete("id")
18
- body = self.data[:ticket_fields][ticket_field_id].merge!(params)
17
+ id = params.delete("id")
18
+ body = self.find!(:ticket_fields, id).merge!(params)
19
19
 
20
20
  response(
21
21
  :method => :put,
22
- :path => "/ticket_fields/#{ticket_field_id}.json",
22
+ :path => "/ticket_fields/#{id}.json",
23
23
  :body => {
24
24
  "ticket_field" => body
25
25
  },
@@ -17,7 +17,8 @@ class Zendesk2::Client
17
17
  id = params.delete("id")
18
18
  path = "/topics/#{id}.json"
19
19
 
20
- body = self.data[:topics][id].merge!(params)
20
+ body = self.find!(:topics, id).merge!(params)
21
+
21
22
  response(
22
23
  :method => :put,
23
24
  :path => path,
@@ -1,7 +1,8 @@
1
1
  class Zendesk2::Client
2
2
  class Real
3
- def update_user(params={})
4
- id = params.delete("id")
3
+ def update_user(_params={})
4
+ params = Cistern::Hash.stringify_keys(_params)
5
+ id = params.delete("id")
5
6
 
6
7
  request(
7
8
  :method => :put,
@@ -15,7 +16,7 @@ class Zendesk2::Client
15
16
  class Mock
16
17
  def update_user(_params={})
17
18
  params = Cistern::Hash.stringify_keys(_params)
18
- user_id = params.delete("id")
19
+ user_id = params.delete("id").to_s
19
20
  path = "/users/#{user_id}.json"
20
21
 
21
22
  email = params["email"]
@@ -57,7 +58,7 @@ class Zendesk2::Client
57
58
  self.data[:identities][user_identity_id] = user_identity
58
59
  end
59
60
 
60
- body = self.data[:users][user_id].merge!(params)
61
+ body = self.find!(:users, user_id).merge!(params)
61
62
 
62
63
  response(
63
64
  :method => :put,
@@ -16,11 +16,11 @@ class Zendesk2::Client
16
16
  end
17
17
  class Mock
18
18
  def update_user_identity(params={})
19
- id = params.delete("id")
20
- user_id = params.delete("user_id")
19
+ id = params.delete("id").to_s
20
+ user_id = params.delete("user_id").to_s
21
21
  path = "/users/#{user_id}/identities/#{id}.json"
22
22
 
23
- body = self.data[:identities][id].merge!(Cistern::Hash.slice(params, "verified"))
23
+ body = self.find!(:identities, id).merge!(Cistern::Hash.slice(params, "verified"))
24
24
  response(
25
25
  :method => :put,
26
26
  :path => path,
@@ -1,3 +1,3 @@
1
1
  module Zendesk2
2
- VERSION = "1.2.7"
2
+ VERSION = "1.2.9"
3
3
  end
data/spec/tickets_spec.rb CHANGED
@@ -111,13 +111,13 @@ describe "Zendesk2::Client" do
111
111
 
112
112
  it "should be based on ticket_fields" do
113
113
  ticket = client.tickets.create!(subject: mock_uuid, description: mock_uuid)
114
- custom_field = ticket.custom_fields.find { |cf| cf["id"] == ticket_field.identity }
114
+ custom_field = ticket.custom_fields.find { |cf| cf["id"].to_s == ticket_field.identity.to_s }
115
115
 
116
116
  expect(custom_field).not_to be_nil
117
117
  expect(custom_field["value"]).to be_nil
118
118
 
119
119
  ticket = client.tickets.create!(subject: mock_uuid, description: mock_uuid, custom_fields: [{"id" => ticket_field.identity, "value" => "jessicaspacekat"}])
120
- custom_field = ticket.custom_fields.find { |cf| cf["id"] == ticket_field.identity }
120
+ custom_field = ticket.custom_fields.find { |cf| cf["id"].to_s == ticket_field.identity.to_s }
121
121
 
122
122
  expect(custom_field).not_to be_nil
123
123
  expect(custom_field["value"]).to eq("jessicaspacekat")
data/spec/users_spec.rb CHANGED
@@ -16,12 +16,14 @@ describe "users" do
16
16
 
17
17
  describe "#create_user" do
18
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
19
+ external_id = mock_uuid
20
+
21
+ client.create_user(email: mock_email, name: "a", external_id: nil) # fine
22
+ client.create_user(email: mock_email, name: "b", external_id: nil) # also fine
23
+ client.create_user(email: mock_email, name: "c", external_id: external_id) # it's cool
22
24
 
23
25
  expect {
24
- client.create_user(email: mock_email, name: "d", external_id: "1")
26
+ client.create_user(email: mock_email, name: "d", external_id: external_id)
25
27
  }.to raise_exception(Zendesk2::Error, /External has already been taken/)
26
28
  end
27
29
  end
@@ -31,11 +33,13 @@ describe "users" do
31
33
  user = client.users.create(email: mock_email, name: "a")
32
34
  another_user = client.users.create(email: mock_email, name: "b")
33
35
 
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
+ external_id = mock_uuid
37
+
38
+ client.update_user(id: user.id, external_id: nil) # fine
39
+ client.update_user(id: another_user.id, external_id: external_id) # also fine
36
40
 
37
41
  expect {
38
- client.update_user("id" => user.id, external_id: "1")
42
+ client.update_user("id" => user.id, external_id: external_id)
39
43
  }.to raise_exception(Zendesk2::Error, /External has already been taken/)
40
44
  end
41
45
  end
@@ -103,6 +107,7 @@ describe "users" do
103
107
  email = "ey+#{mock_uuid}@example.org"
104
108
 
105
109
  new_identity = user.identities.create!(type: "email", value: email)
110
+
106
111
  expect(new_identity.primary).to be_falsey
107
112
  expect(new_identity.verified).to be_falsey
108
113
  expect(new_identity.type).to eq("email")
@@ -115,11 +120,16 @@ describe "users" do
115
120
  initial_identity = user.identities.all.first
116
121
  new_identity = user.identities.create!(type: "email", value: email)
117
122
 
118
- initial_identity.destroy
123
+ expect {
124
+ initial_identity.destroy
125
+ }.to change { user.identities.all }.
126
+ from(a_collection_containing_exactly(initial_identity, new_identity)).
127
+ to(a_collection_containing_exactly(new_identity))
119
128
 
120
129
  expect(new_identity.reload.primary).to be_falsey
121
130
 
122
131
  new_identity.primary!
132
+
123
133
  expect(new_identity.reload.primary).to be_truthy
124
134
  end
125
135
 
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.7
4
+ version: 1.2.9
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-15 00:00:00.000000000 Z
11
+ date: 2014-10-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: addressable
@@ -308,4 +308,3 @@ test_files:
308
308
  - spec/user_fields_spec.rb
309
309
  - spec/user_identities_spec.rb
310
310
  - spec/users_spec.rb
311
- has_rdoc: