zendesk2 1.2.3 → 1.2.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2a5501867637d62174442f46e0f9119117c5b36b
4
- data.tar.gz: a9242b5fe3c07db88175db6254be1fa1a2b4766f
3
+ metadata.gz: 930984502b3ffcce83fd01762bb8d48a07d760d5
4
+ data.tar.gz: 901281d2b7f73eeedbb0405ab259f62d6ab920aa
5
5
  SHA512:
6
- metadata.gz: f3d724891660d349ec816798a226deddfe4a9cfbf4eed4f572b25678f981427f720e6ab0973213b1e89ffeefe9834f58b0495755055744606793e2889df4bf19
7
- data.tar.gz: 04bbf03267e9ad8a67502d9da874be66735b6069ad2faf67059d7b8f1c7df63b211a33d1272f047110ecc0ca053d1f34aa87d95e46a5d52503de0bdb11112ee6
6
+ metadata.gz: f642fe7199612809c97ec24c1f3a680ac33a270944d4205c6316bf4a6a4429224f0b09d331f1af5b4d671345b1450029be7af405d96471fadfb12064d277fa40
7
+ data.tar.gz: 76141a4780845418663435b0ef1cd769d0fe5ba5cbcc277d31df3c8978587c5f497d3802e75e1b32497bcf5e6e627c97565241ce59e90b5c8c4fe7da917dbfe3
@@ -1,7 +1,7 @@
1
1
  class Zendesk2::Client
2
2
  class Real
3
3
  def get_user_identities(params={})
4
- user_id = params["user_id"]
4
+ user_id = require_parameters(params, "user_id")
5
5
  page_params = Zendesk2.paging_parameters(params)
6
6
 
7
7
  request(
@@ -14,9 +14,9 @@ class Zendesk2::Client
14
14
 
15
15
  class Mock
16
16
  def get_user_identities(params={})
17
- user_id = params["user_id"]
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"] == user_id } })
20
20
  end
21
21
  end # Mock
22
22
  end
@@ -17,25 +17,36 @@ class Zendesk2::Client
17
17
  user_id = params.delete("id")
18
18
  path = "/users/#{user_id}.json"
19
19
 
20
- if (email = params["email"]) && self.data[:identities].find { |k,i| i["type"] == "email" && i["value"] == email && i["user_id"] != user_id }
21
- error!(:invalid, details: {"email" => [ { "description" => "Email #{params["email"]} is already being used by another user" } ] })
20
+ email = params["email"]
21
+
22
+ existing_identity = self.data[:identities].values.find { |i| i["type"] == "email" && i["value"] == email }
23
+
24
+ if existing_identity && existing_identity["user_id"] != user_id
25
+ # email not allowed to conflict across users
26
+ error!(:invalid, details: { "email" => [ {
27
+ "description" => "Email #{params["email"]} is already being used by another user",
28
+ } ] })
29
+ elsif existing_identity && existing_identity["user_id"] == user_id
30
+ # no-op email already used
31
+ else
32
+ # add a new identity
33
+ user_identity_id = self.class.new_id # ugh
34
+
35
+ user_identity = {
36
+ "id" => user_identity_id,
37
+ "url" => url_for("/users/#{user_id}/identities/#{user_identity_id}.json"),
38
+ "created_at" => Time.now.iso8601,
39
+ "updated_at" => Time.now.iso8601,
40
+ "type" => "email",
41
+ "value" => email,
42
+ "verified" => false,
43
+ "primary" => false,
44
+ "user_id" => user_id,
45
+ }
46
+
47
+ self.data[:identities][user_identity_id] = user_identity
22
48
  end
23
49
 
24
- user_identity_id = self.class.new_id # ugh
25
-
26
- user_identity = {
27
- "id" => user_identity_id,
28
- "url" => url_for("/users/#{user_id}/identities/#{user_identity_id}.json"),
29
- "created_at" => Time.now.iso8601,
30
- "updated_at" => Time.now.iso8601,
31
- "type" => "email",
32
- "value" => params["email"],
33
- "verified" => false,
34
- "primary" => false,
35
- "user_id" => user_id,
36
- }
37
-
38
- self.data[:identities][user_identity_id] = user_identity
39
50
  body = self.data[:users][user_id].merge!(params)
40
51
  response(
41
52
  :method => :put,
@@ -44,6 +55,7 @@ class Zendesk2::Client
44
55
  "user" => body
45
56
  },
46
57
  )
58
+
47
59
  end
48
60
  end
49
61
  end
@@ -1,3 +1,3 @@
1
1
  module Zendesk2
2
- VERSION = "1.2.3"
2
+ VERSION = "1.2.4"
3
3
  end
data/spec/users_spec.rb CHANGED
@@ -32,11 +32,7 @@ describe "users" do
32
32
  end
33
33
 
34
34
  describe "#save" do
35
- before(:each) do
36
- @user = client.users.create!(email: "zendesk2+#{Zendesk2.uuid}@example.org", name: Zendesk2.uuid)
37
- end
38
-
39
- let(:user) { @user }
35
+ let!(:user) { client.users.create!(email: "zendesk2+#{Zendesk2.uuid}@example.org", name: Zendesk2.uuid) }
40
36
 
41
37
  it "should update organization" do
42
38
  user.organization = organization = client.organizations.create!(name: Zendesk2.uuid)
@@ -125,22 +121,29 @@ describe "users" do
125
121
  end
126
122
 
127
123
  it "should create another identity when updating email" do
124
+ expect(user.identities.size).to eq(1)
125
+
128
126
  original_email = user.email
129
127
  user.email = (new_email = "zendesk2+#{Zendesk2.uuid}@example.org")
130
- user.save!
131
128
 
132
- expect((identities = user.identities.all).size).to eq(2)
133
- new_identity = identities.find{|i| i.value == new_email}
134
- expect(new_identity).not_to be_nil
129
+ expect {
130
+ user.save!
131
+ }.to change { user.identities.size }.by(1)
135
132
 
136
- expect(new_identity.primary).to be_falsey
133
+ new_identity = user.identities.find { |i| i.value == new_email }
137
134
 
138
- original_identity = identities.find{|i| i.value == original_email}
139
- expect(original_identity).not_to be_nil
135
+ expect(new_identity).to be
136
+ expect(new_identity.primary).to eq(false)
140
137
 
141
- expect(original_identity.primary).to be_truthy
138
+ original_identity = user.identities.find { |i| i.value == original_email }
142
139
 
140
+ expect(original_identity).to be
141
+ expect(original_identity.primary).to eq(true)
143
142
  expect(user.reload.email).to eq(original_email)
143
+
144
+ expect {
145
+ user.save!
146
+ }.not_to change { user.identities.size }
144
147
  end
145
148
 
146
149
  it "should form 'legacy' login url" do
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.3
4
+ version: 1.2.4
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-09-25 00:00:00.000000000 Z
11
+ date: 2014-09-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: addressable