zendesk2 0.2.5 → 0.2.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -3,14 +3,21 @@ module Zendesk2::Attributes
3
3
  assoc_key = options[:key] || "#{name}_id"
4
4
  collection = options[:collection] || "#{name}s"
5
5
  define_method(name) do
6
- self.connection.send(collection).get(self.send(assoc_key))
6
+ if assoc_id = self.send(assoc_key)
7
+ self.connection.send(collection).get(assoc_id)
8
+ else self.instance_variable_get("@#{name}")
9
+ end
7
10
  end
8
11
  end
9
12
 
10
13
  def assoc_writer(name, options={})
11
14
  assoc_key = options[:key] || "#{name}_id"
12
15
  define_method("#{name}=") do |assoc|
13
- self.send("#{assoc_key}=", assoc.id)
16
+ if assoc.is_a?(Cistern::Model)
17
+ self.send("#{assoc_key}=", assoc.identity)
18
+ else
19
+ self.instance_variable_set("@#{name}", assoc)
20
+ end
14
21
  end
15
22
  end
16
23
 
@@ -66,7 +66,10 @@ class Zendesk2::Client::Ticket < Zendesk2::Model
66
66
  def save!
67
67
  data = if new_record?
68
68
  requires :subject, :description
69
- connection.create_ticket(params).body["ticket"]
69
+
70
+ with_requester = @requester && Zendesk2.stringify_keys(@requester)
71
+
72
+ connection.create_ticket(params.merge("requester" => with_requester)).body["ticket"]
70
73
  else
71
74
  requires :identity
72
75
  connection.update_ticket(params.merge("id" => self.identity)).body["ticket"]
@@ -109,7 +112,7 @@ class Zendesk2::Client::Ticket < Zendesk2::Model
109
112
 
110
113
  # @return [Zendesk2::Client::TicketAudits] all audits for this ticket
111
114
  def audits
112
- self.connection.ticket_audits(:ticket_id => self.identity).all
115
+ self.connection.ticket_audits(ticket_id: self.identity).all
113
116
  end
114
117
 
115
118
  # @return [Array<Zendesk2::Client::AuditEvent>] audit events of type 'Comment'
@@ -13,6 +13,17 @@ class Zendesk2::Client
13
13
  def create_ticket(params={})
14
14
  identity = self.class.new_id
15
15
 
16
+ if requester = params.delete('requester')
17
+ user_id = if known_user = self.users.search(email: requester['email']).first
18
+ known_user.identity
19
+ else
20
+ # name is not required in this case
21
+ create_user(requester).body["user"]["id"]
22
+ end
23
+
24
+ params['requester_id'] = user_id
25
+ end
26
+
16
27
  record = {
17
28
  "id" => identity,
18
29
  "url" => url_for("/tickets/#{identity}.json"),
@@ -1,3 +1,3 @@
1
1
  module Zendesk2
2
- VERSION = "0.2.5"
2
+ VERSION = "0.2.6"
3
3
  end
data/spec/tickets_spec.rb CHANGED
@@ -2,11 +2,23 @@ require 'spec_helper'
2
2
 
3
3
  describe "tickets" do
4
4
  let(:client) { create_client }
5
- it_should_behave_like "a resource",
5
+ it_should_behave_like "a resource",
6
6
  :tickets,
7
7
  lambda { {subject: Zendesk2.uuid, description: Zendesk2.uuid} },
8
8
  lambda { {subject: Zendesk2.uuid} }
9
9
 
10
+ describe "when creating a ticket" do
11
+ let!(:requester_email) { "newuser@example.org" }
12
+ let!(:ticket) { client.tickets.create(subject: Zendesk2.uuid, description: Zendesk2.uuid, requester: {email: requester_email}) }
13
+
14
+ it "should create requester" do
15
+ requester = client.users.search(email: requester_email).first
16
+ requester.should_not be_nil
17
+
18
+ ticket.requester.should == requester
19
+ end
20
+ end
21
+
10
22
  describe "with a created ticket" do
11
23
  let(:ticket) { client.tickets.create(subject: Zendesk2.uuid, description: Zendesk2.uuid) }
12
24
  it "should get requester" do
metadata CHANGED
@@ -1,24 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zendesk2
3
3
  version: !ruby/object:Gem::Version
4
+ version: 0.2.6
4
5
  prerelease:
5
- version: 0.2.5
6
6
  platform: ruby
7
7
  authors:
8
8
  - Josh Lane
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-05-10 00:00:00.000000000 Z
12
+ date: 2013-05-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: cistern
16
- version_requirements: !ruby/object:Gem::Requirement
17
- none: false
18
- requirements:
19
- - - ~>
20
- - !ruby/object:Gem::Version
21
- version: 0.2.0
22
16
  requirement: !ruby/object:Gem::Requirement
23
17
  none: false
24
18
  requirements:
@@ -27,14 +21,14 @@ dependencies:
27
21
  version: 0.2.0
28
22
  type: :runtime
29
23
  prerelease: false
30
- - !ruby/object:Gem::Dependency
31
- name: faraday
32
24
  version_requirements: !ruby/object:Gem::Requirement
33
25
  none: false
34
26
  requirements:
35
- - - ! '>='
27
+ - - ~>
36
28
  - !ruby/object:Gem::Version
37
- version: '0'
29
+ version: 0.2.0
30
+ - !ruby/object:Gem::Dependency
31
+ name: faraday
38
32
  requirement: !ruby/object:Gem::Requirement
39
33
  none: false
40
34
  requirements:
@@ -43,14 +37,14 @@ dependencies:
43
37
  version: '0'
44
38
  type: :runtime
45
39
  prerelease: false
46
- - !ruby/object:Gem::Dependency
47
- name: faraday_middleware
48
40
  version_requirements: !ruby/object:Gem::Requirement
49
41
  none: false
50
42
  requirements:
51
43
  - - ! '>='
52
44
  - !ruby/object:Gem::Version
53
45
  version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: faraday_middleware
54
48
  requirement: !ruby/object:Gem::Requirement
55
49
  none: false
56
50
  requirements:
@@ -59,14 +53,14 @@ dependencies:
59
53
  version: '0'
60
54
  type: :runtime
61
55
  prerelease: false
62
- - !ruby/object:Gem::Dependency
63
- name: addressable
64
56
  version_requirements: !ruby/object:Gem::Requirement
65
57
  none: false
66
58
  requirements:
67
59
  - - ! '>='
68
60
  - !ruby/object:Gem::Version
69
61
  version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: addressable
70
64
  requirement: !ruby/object:Gem::Requirement
71
65
  none: false
72
66
  requirements:
@@ -75,14 +69,14 @@ dependencies:
75
69
  version: '0'
76
70
  type: :runtime
77
71
  prerelease: false
78
- - !ruby/object:Gem::Dependency
79
- name: jwt
80
72
  version_requirements: !ruby/object:Gem::Requirement
81
73
  none: false
82
74
  requirements:
83
75
  - - ! '>='
84
76
  - !ruby/object:Gem::Version
85
77
  version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: jwt
86
80
  requirement: !ruby/object:Gem::Requirement
87
81
  none: false
88
82
  requirements:
@@ -91,6 +85,12 @@ dependencies:
91
85
  version: '0'
92
86
  type: :runtime
93
87
  prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
94
  description: Zendesk V2 API client
95
95
  email:
96
96
  - me@joshualane.com