zendesk2 0.2.5 → 0.2.6

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.
@@ -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