delighted 1.7.0 → 1.8.0rc1
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 +5 -5
- data/CHANGELOG.md +6 -0
- data/README.md +11 -0
- data/lib/delighted.rb +1 -0
- data/lib/delighted/operations/delete.rb +20 -0
- data/lib/delighted/resource.rb +14 -0
- data/lib/delighted/resources/person.rb +1 -0
- data/lib/delighted/version.rb +1 -1
- data/test/delighted_test.rb +37 -0
- metadata +6 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 92ff2bf5264a02443144522c7aa937d879d285414b2f27d5da9a149d8523b851
|
4
|
+
data.tar.gz: 0671a5ab613fdf6824dd86527d9fd0592eee37d0f53052a5e1e2b24b55ba3eae
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8ec727249f7682b0c3bf66fb0bfd921f456a013e775d4f206d98e61fb35807312c6329e105acb9f5ef8c7276839a47c67829e7e7b2626bd0e9a4e3d91d6d8d6d
|
7
|
+
data.tar.gz: 9914a4c08a10787c4da9a94d6a7208bc5345cf513535a36945442596a6d0967372a2c1a216b0028e88ee888b06e286c72325fa54c162d9ca7ca4389e486bc861
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -72,6 +72,17 @@ survey_responses_page1 = Delighted::Bounce.all
|
|
72
72
|
survey_responses_page2 = Delighted::Bounce.all(:page => 2)
|
73
73
|
```
|
74
74
|
|
75
|
+
Deleting a person and all of the data associated with them:
|
76
|
+
|
77
|
+
```ruby
|
78
|
+
# Delete by person id
|
79
|
+
Delighted::Person.delete(:id => 42)
|
80
|
+
# Delete by email address
|
81
|
+
Delighted::Person.delete(:email => "test@example.com")
|
82
|
+
# Delete by phone number (must be E.164 format)
|
83
|
+
Delighted::Person.delete(:phone_number => "+14155551212")
|
84
|
+
```
|
85
|
+
|
75
86
|
Deleting pending survey requests
|
76
87
|
|
77
88
|
```ruby
|
data/lib/delighted.rb
CHANGED
@@ -15,6 +15,7 @@ require 'delighted/operations/all'
|
|
15
15
|
require 'delighted/operations/create'
|
16
16
|
require 'delighted/operations/retrieve'
|
17
17
|
require 'delighted/operations/update'
|
18
|
+
require 'delighted/operations/delete'
|
18
19
|
|
19
20
|
require 'delighted/resources/bounce'
|
20
21
|
require 'delighted/resources/metrics'
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Delighted
|
2
|
+
module Operations
|
3
|
+
module Delete
|
4
|
+
def self.included(klass)
|
5
|
+
klass.extend(ClassMethods)
|
6
|
+
end
|
7
|
+
|
8
|
+
module ClassMethods
|
9
|
+
def path(id = nil)
|
10
|
+
id ? "#{@path}/#{CGI.escape(id)}" : @path
|
11
|
+
end
|
12
|
+
|
13
|
+
def delete(id_hash, client = Delighted.shared_client)
|
14
|
+
id = identifier_string(id_hash)
|
15
|
+
client.delete_json(path(id))
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
data/lib/delighted/resource.rb
CHANGED
@@ -11,6 +11,20 @@ module Delighted
|
|
11
11
|
def singleton_resource?
|
12
12
|
!!@singleton_resource
|
13
13
|
end
|
14
|
+
|
15
|
+
def identifier_string(identifier_hash)
|
16
|
+
raise ArgumentError, "must pass Hash" unless Hash === identifier_hash
|
17
|
+
raise ArgumentError, "must pass exactly one identifier name and value" unless identifier_hash.size == 1
|
18
|
+
|
19
|
+
identifier_key = identifier_hash.keys.first
|
20
|
+
identifier_value = identifier_hash.values.first
|
21
|
+
|
22
|
+
if identifier_key.to_s == "id"
|
23
|
+
identifier_value.to_s
|
24
|
+
else
|
25
|
+
"#{identifier_key}:#{identifier_value}"
|
26
|
+
end
|
27
|
+
end
|
14
28
|
end
|
15
29
|
|
16
30
|
undef :id if method_defined?(:id)
|
data/lib/delighted/version.rb
CHANGED
data/test/delighted_test.rb
CHANGED
@@ -80,6 +80,43 @@ class Delighted::PeopleTest < Delighted::TestCase
|
|
80
80
|
assert_kind_of Hash, result
|
81
81
|
assert_equal({ :ok => true }, result)
|
82
82
|
end
|
83
|
+
|
84
|
+
def test_deleting_a_person_with_multiple_identifiers
|
85
|
+
assert_raises(ArgumentError) { Delighted::Person.delete(:id => 57, :email => "foo@example.com") }
|
86
|
+
end
|
87
|
+
|
88
|
+
def test_deleting_a_person_by_id
|
89
|
+
uri = URI.parse("https://api.delightedapp.com/v1/people/57")
|
90
|
+
headers = { 'Authorization' => @auth_header, "Accept" => "application/json", 'Content-Type' => 'application/json', 'User-Agent' => "Delighted RubyGem #{Delighted::VERSION}" }
|
91
|
+
response = Delighted::HTTPResponse.new(202, {}, Delighted::JSON.dump({ :ok => true }))
|
92
|
+
mock_http_adapter.expects(:request).with(:delete, uri, headers, nil).once.returns(response)
|
93
|
+
|
94
|
+
result = Delighted::Person.delete(:id => 57)
|
95
|
+
assert_kind_of Hash, result
|
96
|
+
assert_equal({ :ok => true }, result)
|
97
|
+
end
|
98
|
+
|
99
|
+
def test_deleting_a_person_by_email
|
100
|
+
uri = URI.parse("https://api.delightedapp.com/v1/people/email%3Afoo%40bar.com")
|
101
|
+
headers = { 'Authorization' => @auth_header, "Accept" => "application/json", 'Content-Type' => 'application/json', 'User-Agent' => "Delighted RubyGem #{Delighted::VERSION}" }
|
102
|
+
response = Delighted::HTTPResponse.new(202, {}, Delighted::JSON.dump({ :ok => true }))
|
103
|
+
mock_http_adapter.expects(:request).with(:delete, uri, headers, nil).once.returns(response)
|
104
|
+
|
105
|
+
result = Delighted::Person.delete(:email => "foo@bar.com")
|
106
|
+
assert_kind_of Hash, result
|
107
|
+
assert_equal({ :ok => true }, result)
|
108
|
+
end
|
109
|
+
|
110
|
+
def test_deleting_a_person_by_phone_number
|
111
|
+
uri = URI.parse("https://api.delightedapp.com/v1/people/phone_number%3A%2B14155551212")
|
112
|
+
headers = { 'Authorization' => @auth_header, "Accept" => "application/json", 'Content-Type' => 'application/json', 'User-Agent' => "Delighted RubyGem #{Delighted::VERSION}" }
|
113
|
+
response = Delighted::HTTPResponse.new(202, {}, Delighted::JSON.dump({ :ok => true }))
|
114
|
+
mock_http_adapter.expects(:request).with(:delete, uri, headers, nil).once.returns(response)
|
115
|
+
|
116
|
+
result = Delighted::Person.delete(:phone_number => "+14155551212")
|
117
|
+
assert_kind_of Hash, result
|
118
|
+
assert_equal({ :ok => true }, result)
|
119
|
+
end
|
83
120
|
end
|
84
121
|
|
85
122
|
class Delighted::SurveyResponseTest < Delighted::TestCase
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: delighted
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.8.0rc1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mark Dodwell
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-05-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: multi_json
|
@@ -90,6 +90,7 @@ files:
|
|
90
90
|
- lib/delighted/json.rb
|
91
91
|
- lib/delighted/operations/all.rb
|
92
92
|
- lib/delighted/operations/create.rb
|
93
|
+
- lib/delighted/operations/delete.rb
|
93
94
|
- lib/delighted/operations/retrieve.rb
|
94
95
|
- lib/delighted/operations/update.rb
|
95
96
|
- lib/delighted/resource.rb
|
@@ -119,12 +120,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
119
120
|
version: '0'
|
120
121
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
121
122
|
requirements:
|
122
|
-
- - "
|
123
|
+
- - ">"
|
123
124
|
- !ruby/object:Gem::Version
|
124
|
-
version:
|
125
|
+
version: 1.3.1
|
125
126
|
requirements: []
|
126
127
|
rubyforge_project:
|
127
|
-
rubygems_version: 2.6
|
128
|
+
rubygems_version: 2.7.6
|
128
129
|
signing_key:
|
129
130
|
specification_version: 4
|
130
131
|
summary: Delighted is the fastest and easiest way to gather actionable feedback from
|