streamsend 0.1.2 → 0.2.0
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 +7 -0
- data/.gitignore +2 -0
- data/.rspec +1 -0
- data/Gemfile +1 -1
- data/Gemfile.lock +40 -18
- data/lib/streamsend/api/account.rb +62 -0
- data/lib/streamsend/api/exception.rb +2 -0
- data/lib/streamsend/api/list.rb +55 -0
- data/lib/streamsend/api/resource.rb +38 -0
- data/lib/streamsend/api/subscriber.rb +86 -0
- data/lib/streamsend/api/user.rb +56 -0
- data/lib/streamsend.rb +14 -8
- data/spec/integration/account_spec.rb +69 -0
- data/spec/integration/integration.yml +5 -0
- data/spec/integration/list_spec.rb +68 -0
- data/spec/integration/spec_helper.rb +16 -0
- data/spec/integration/user_spec.rb +59 -0
- data/spec/lib/streamsend/api/list_spec.rb +179 -0
- data/spec/lib/streamsend/api/resource_spec.rb +24 -0
- data/spec/lib/streamsend/api/subscriber_spec.rb +274 -0
- data/spec/lib/streamsend/api/user_spec.rb +149 -0
- data/spec/lib/streamsend/api_spec.rb +31 -0
- data/spec/spec_helper.rb +13 -1
- data/streamsend.gemspec +11 -7
- metadata +141 -91
- data/lib/streamsend/list.rb +0 -36
- data/lib/streamsend/resource.rb +0 -23
- data/lib/streamsend/subscriber.rb +0 -81
- data/spec/lib/streamsend/list_spec.rb +0 -203
- data/spec/lib/streamsend/resource_spec.rb +0 -21
- data/spec/lib/streamsend/subscriber_spec.rb +0 -270
- data/spec/streamsend_spec.rb +0 -9
data/streamsend.gemspec
CHANGED
@@ -1,21 +1,25 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
|
3
3
|
Gem::Specification.new do |gem|
|
4
|
-
gem.authors = ["Scott Albertson"]
|
5
|
-
gem.email = %q{
|
4
|
+
gem.authors = ["Scott Albertson", "Jeff Roush"]
|
5
|
+
gem.email = %q{jroush@ezpublishing.com}
|
6
6
|
gem.summary = %q{Ruby wrapper for the StreamSend API.}
|
7
7
|
gem.description = %q{Ruby wrapper for the StreamSend API.}
|
8
|
-
gem.homepage = %q{
|
9
|
-
gem.date = %q{
|
8
|
+
gem.homepage = %q{https://github.com/Jeff-R/streamsend-ruby}
|
9
|
+
gem.date = %q{2013-07-09}
|
10
10
|
|
11
|
-
gem.add_dependency "httparty"
|
12
|
-
gem.
|
11
|
+
gem.add_dependency "httparty"
|
12
|
+
gem.add_dependency "activesupport", "~>3.2"
|
13
|
+
gem.add_dependency "builder"
|
14
|
+
gem.add_development_dependency "debugger"
|
15
|
+
gem.add_development_dependency "rspec"
|
13
16
|
gem.add_development_dependency "webmock", "~> 1.6"
|
17
|
+
gem.add_development_dependency "vcr"
|
14
18
|
|
15
19
|
gem.files = `git ls-files`.split($\)
|
16
20
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
17
21
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
18
22
|
gem.name = "streamsend"
|
19
23
|
gem.require_paths = ["lib"]
|
20
|
-
gem.version = "0.
|
24
|
+
gem.version = "0.2.0"
|
21
25
|
end
|
metadata
CHANGED
@@ -1,127 +1,177 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: streamsend
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 1
|
9
|
-
- 2
|
10
|
-
version: 0.1.2
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.2.0
|
11
5
|
platform: ruby
|
12
|
-
authors:
|
6
|
+
authors:
|
13
7
|
- Scott Albertson
|
8
|
+
- Jeff Roush
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2013-07-09 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
21
15
|
name: httparty
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - '>='
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: '0'
|
21
|
+
type: :runtime
|
22
22
|
prerelease: false
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - '>='
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: '0'
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: activesupport
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - ~>
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '3.2'
|
34
35
|
type: :runtime
|
35
|
-
version_requirements: *id001
|
36
|
-
- !ruby/object:Gem::Dependency
|
37
|
-
name: rspec
|
38
36
|
prerelease: false
|
39
|
-
|
40
|
-
|
41
|
-
requirements:
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
42
39
|
- - ~>
|
43
|
-
- !ruby/object:Gem::Version
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '3.2'
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: builder
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - '>='
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '0'
|
49
|
+
type: :runtime
|
50
|
+
prerelease: false
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - '>='
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '0'
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: debugger
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - '>='
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0'
|
63
|
+
type: :development
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: rspec
|
72
|
+
requirement: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
49
77
|
type: :development
|
50
|
-
|
51
|
-
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - '>='
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: '0'
|
84
|
+
- !ruby/object:Gem::Dependency
|
52
85
|
name: webmock
|
86
|
+
requirement: !ruby/object:Gem::Requirement
|
87
|
+
requirements:
|
88
|
+
- - ~>
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: '1.6'
|
91
|
+
type: :development
|
53
92
|
prerelease: false
|
54
|
-
|
55
|
-
|
56
|
-
requirements:
|
93
|
+
version_requirements: !ruby/object:Gem::Requirement
|
94
|
+
requirements:
|
57
95
|
- - ~>
|
58
|
-
- !ruby/object:Gem::Version
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: '1.6'
|
98
|
+
- !ruby/object:Gem::Dependency
|
99
|
+
name: vcr
|
100
|
+
requirement: !ruby/object:Gem::Requirement
|
101
|
+
requirements:
|
102
|
+
- - '>='
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: '0'
|
64
105
|
type: :development
|
65
|
-
|
106
|
+
prerelease: false
|
107
|
+
version_requirements: !ruby/object:Gem::Requirement
|
108
|
+
requirements:
|
109
|
+
- - '>='
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
version: '0'
|
66
112
|
description: Ruby wrapper for the StreamSend API.
|
67
|
-
email:
|
113
|
+
email: jroush@ezpublishing.com
|
68
114
|
executables: []
|
69
|
-
|
70
115
|
extensions: []
|
71
|
-
|
72
116
|
extra_rdoc_files: []
|
73
|
-
|
74
|
-
|
117
|
+
files:
|
118
|
+
- .gitignore
|
119
|
+
- .rspec
|
75
120
|
- Gemfile
|
76
121
|
- Gemfile.lock
|
77
122
|
- README.rdoc
|
78
123
|
- Rakefile
|
79
124
|
- lib/streamsend.rb
|
80
|
-
- lib/streamsend/
|
81
|
-
- lib/streamsend/
|
82
|
-
- lib/streamsend/
|
83
|
-
-
|
84
|
-
-
|
85
|
-
-
|
125
|
+
- lib/streamsend/api/account.rb
|
126
|
+
- lib/streamsend/api/exception.rb
|
127
|
+
- lib/streamsend/api/list.rb
|
128
|
+
- lib/streamsend/api/resource.rb
|
129
|
+
- lib/streamsend/api/subscriber.rb
|
130
|
+
- lib/streamsend/api/user.rb
|
131
|
+
- spec/integration/account_spec.rb
|
132
|
+
- spec/integration/integration.yml
|
133
|
+
- spec/integration/list_spec.rb
|
134
|
+
- spec/integration/spec_helper.rb
|
135
|
+
- spec/integration/user_spec.rb
|
136
|
+
- spec/lib/streamsend/api/list_spec.rb
|
137
|
+
- spec/lib/streamsend/api/resource_spec.rb
|
138
|
+
- spec/lib/streamsend/api/subscriber_spec.rb
|
139
|
+
- spec/lib/streamsend/api/user_spec.rb
|
140
|
+
- spec/lib/streamsend/api_spec.rb
|
86
141
|
- spec/spec_helper.rb
|
87
|
-
- spec/streamsend_spec.rb
|
88
142
|
- streamsend.gemspec
|
89
|
-
homepage:
|
143
|
+
homepage: https://github.com/Jeff-R/streamsend-ruby
|
90
144
|
licenses: []
|
91
|
-
|
145
|
+
metadata: {}
|
92
146
|
post_install_message:
|
93
147
|
rdoc_options: []
|
94
|
-
|
95
|
-
require_paths:
|
148
|
+
require_paths:
|
96
149
|
- lib
|
97
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
none: false
|
108
|
-
requirements:
|
109
|
-
- - ">="
|
110
|
-
- !ruby/object:Gem::Version
|
111
|
-
hash: 3
|
112
|
-
segments:
|
113
|
-
- 0
|
114
|
-
version: "0"
|
150
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
151
|
+
requirements:
|
152
|
+
- - '>='
|
153
|
+
- !ruby/object:Gem::Version
|
154
|
+
version: '0'
|
155
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - '>='
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0'
|
115
160
|
requirements: []
|
116
|
-
|
117
161
|
rubyforge_project:
|
118
|
-
rubygems_version:
|
162
|
+
rubygems_version: 2.0.3
|
119
163
|
signing_key:
|
120
|
-
specification_version:
|
164
|
+
specification_version: 4
|
121
165
|
summary: Ruby wrapper for the StreamSend API.
|
122
|
-
test_files:
|
123
|
-
- spec/
|
124
|
-
- spec/
|
125
|
-
- spec/
|
166
|
+
test_files:
|
167
|
+
- spec/integration/account_spec.rb
|
168
|
+
- spec/integration/integration.yml
|
169
|
+
- spec/integration/list_spec.rb
|
170
|
+
- spec/integration/spec_helper.rb
|
171
|
+
- spec/integration/user_spec.rb
|
172
|
+
- spec/lib/streamsend/api/list_spec.rb
|
173
|
+
- spec/lib/streamsend/api/resource_spec.rb
|
174
|
+
- spec/lib/streamsend/api/subscriber_spec.rb
|
175
|
+
- spec/lib/streamsend/api/user_spec.rb
|
176
|
+
- spec/lib/streamsend/api_spec.rb
|
126
177
|
- spec/spec_helper.rb
|
127
|
-
- spec/streamsend_spec.rb
|
data/lib/streamsend/list.rb
DELETED
@@ -1,36 +0,0 @@
|
|
1
|
-
module StreamSend
|
2
|
-
class List < Resource
|
3
|
-
def self.all
|
4
|
-
response = StreamSend.get("/audiences/#{audience_id}/lists.xml")
|
5
|
-
|
6
|
-
case response.code
|
7
|
-
when 200
|
8
|
-
response["lists"].collect { |data| new(data) }
|
9
|
-
else
|
10
|
-
raise "Could not find any lists. (#{response.code})"
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
def self.find(list_id)
|
15
|
-
response = StreamSend.get("/audiences/#{audience_id}/lists/#{list_id}.xml")
|
16
|
-
|
17
|
-
case response.code
|
18
|
-
when 200
|
19
|
-
new(response["list"])
|
20
|
-
else
|
21
|
-
raise "Could not find any lists. (#{response.code})"
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
def self.create(list_name)
|
26
|
-
response = StreamSend.post("/audiences/#{audience_id}/lists.xml", :query => {:list => {:name => list_name}})
|
27
|
-
|
28
|
-
if response.code == 201
|
29
|
-
response.headers["location"] =~ /audiences\/\d\/lists\/(\d+)$/
|
30
|
-
new_list_id = $1.to_i
|
31
|
-
else
|
32
|
-
raise "Could not create a list. (#{response.body})"
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
data/lib/streamsend/resource.rb
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
module StreamSend
|
2
|
-
class Resource
|
3
|
-
def initialize(data)
|
4
|
-
@data = data
|
5
|
-
end
|
6
|
-
|
7
|
-
def method_missing(method, *args, &block)
|
8
|
-
if @data.include?(method.to_s)
|
9
|
-
@data[method.to_s]
|
10
|
-
else
|
11
|
-
super
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
def id
|
16
|
-
@data["id"]
|
17
|
-
end
|
18
|
-
|
19
|
-
def self.audience_id
|
20
|
-
@audience_id ||= StreamSend.get("/audiences.xml").parsed_response["audiences"].first["id"]
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
@@ -1,81 +0,0 @@
|
|
1
|
-
module StreamSend
|
2
|
-
class Subscriber < Resource
|
3
|
-
def self.all
|
4
|
-
response = StreamSend.get("/audiences/#{audience_id}/people.xml")
|
5
|
-
|
6
|
-
case response.code
|
7
|
-
when 200
|
8
|
-
response["people"].collect { |data| new(data) }
|
9
|
-
else
|
10
|
-
raise "Could not find any subscribers. Make sure your audience ID is correct. (#{response.code})"
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
def self.find(email_address)
|
15
|
-
response = StreamSend.get("/audiences/#{audience_id}/people.xml?email_address=#{email_address}")
|
16
|
-
|
17
|
-
case response.code
|
18
|
-
when 200
|
19
|
-
if subscriber = response["people"].first
|
20
|
-
new(subscriber)
|
21
|
-
else
|
22
|
-
nil
|
23
|
-
end
|
24
|
-
else
|
25
|
-
raise "Could not find the subscriber. Make sure your audience ID is correct. (#{response.code})"
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
def self.create(person_hash)
|
30
|
-
response = StreamSend.post("/audiences/#{audience_id}/people.xml", :query => {:person => person_hash})
|
31
|
-
|
32
|
-
case response.code
|
33
|
-
when 201
|
34
|
-
response.headers["location"] =~ /audiences\/\d+\/people\/(\d+)$/
|
35
|
-
subscriber_id = $1
|
36
|
-
unless subscriber_id.nil?
|
37
|
-
subscriber_id.to_i
|
38
|
-
end
|
39
|
-
else
|
40
|
-
raise "Could not create the subscriber. (#{response.code})"
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
def show
|
45
|
-
response = StreamSend.get("/audiences/#{audience_id}/people/#{id}.xml")
|
46
|
-
|
47
|
-
case response.code
|
48
|
-
when 200
|
49
|
-
if subscriber = response["person"]
|
50
|
-
self.class.new(subscriber)
|
51
|
-
else
|
52
|
-
nil
|
53
|
-
end
|
54
|
-
else
|
55
|
-
raise "Could not show the subscriber. (#{response.code})"
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
def activate
|
60
|
-
response = StreamSend.post("/audiences/#{audience_id}/people/#{id}/activate.xml")
|
61
|
-
|
62
|
-
case response.code
|
63
|
-
when 200
|
64
|
-
true
|
65
|
-
else
|
66
|
-
raise "Could not activate the subscriber. (#{response.code})"
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
def unsubscribe
|
71
|
-
response = StreamSend.post("/audiences/#{audience_id}/people/#{id}/unsubscribe.xml")
|
72
|
-
|
73
|
-
case response.code
|
74
|
-
when 200
|
75
|
-
true
|
76
|
-
else
|
77
|
-
raise "Could not subscribe the subscriber. (#{response.code})"
|
78
|
-
end
|
79
|
-
end
|
80
|
-
end
|
81
|
-
end
|
@@ -1,203 +0,0 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), "../../spec_helper")
|
2
|
-
|
3
|
-
module StreamSend
|
4
|
-
describe "List" do
|
5
|
-
let(:app_host) { "http://test.host" }
|
6
|
-
before(:each) do
|
7
|
-
stub_http_request(:any, //).to_return(:body => "Page not found.", :status => 404)
|
8
|
-
|
9
|
-
@username = "scott"
|
10
|
-
@password = "topsecret"
|
11
|
-
@host = "test.host"
|
12
|
-
|
13
|
-
xml = <<-XML
|
14
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
15
|
-
<audiences type="array">
|
16
|
-
<audience>
|
17
|
-
<id type="integer">2</id>
|
18
|
-
</audience>
|
19
|
-
</audiences>
|
20
|
-
XML
|
21
|
-
stub_http_request(:get, "http://#{@username}:#{@password}@#{@host}/audiences.xml").to_return(:body => xml)
|
22
|
-
|
23
|
-
StreamSend.configure(@username, @password, @host)
|
24
|
-
end
|
25
|
-
|
26
|
-
describe ".audience_id" do
|
27
|
-
it "should return the id of the first audience" do
|
28
|
-
StreamSend::List.audience_id.should == 2
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
describe ".all" do
|
33
|
-
describe "with lists" do
|
34
|
-
before(:each) do
|
35
|
-
xml = <<-XML
|
36
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
37
|
-
<lists type="array">
|
38
|
-
<list>
|
39
|
-
<active-people-count type="integer">11</active-people-count>
|
40
|
-
<checked-by-default type="boolean" nil="true"></checked-by-default>
|
41
|
-
<created-at type="datetime">2012-01-14T18:11:50Z</created-at>
|
42
|
-
<deleted-at type="datetime" nil="true"></deleted-at>
|
43
|
-
<description nil="true"></description>
|
44
|
-
<id type="integer">42</id>
|
45
|
-
<inactive-people-count type="integer">0</inactive-people-count>
|
46
|
-
<name>First list</name>
|
47
|
-
<pending-people-count type="integer">0</pending-people-count>
|
48
|
-
<public type="boolean" nil="true"></public>
|
49
|
-
<status type="enum">idle</status>
|
50
|
-
<unsubscribed-people-count type="integer">0</unsubscribed-people-count>
|
51
|
-
<updated-at type="datetime">2012-01-14T18:11:50Z</updated-at>
|
52
|
-
<audience-id type="integer">2</audience-id>
|
53
|
-
</list>
|
54
|
-
</lists>
|
55
|
-
XML
|
56
|
-
|
57
|
-
stub_http_request(:get, "http://#{@username}:#{@password}@#{@host}/audiences/2/lists.xml").to_return(:body => xml)
|
58
|
-
end
|
59
|
-
|
60
|
-
it "should return array of one list object" do
|
61
|
-
lists = StreamSend::List.all
|
62
|
-
lists.size.should == 1
|
63
|
-
|
64
|
-
lists.first.should be_instance_of(StreamSend::List)
|
65
|
-
lists.first.id.should == 42
|
66
|
-
lists.first.name.should == "First list"
|
67
|
-
lists.first.created_at.should == Time.parse("2012-01-14T18:11:50Z")
|
68
|
-
end
|
69
|
-
end
|
70
|
-
|
71
|
-
describe "with no lists" do
|
72
|
-
before(:each) do
|
73
|
-
xml = <<-XML
|
74
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
75
|
-
<lists type="array"/>
|
76
|
-
XML
|
77
|
-
|
78
|
-
stub_http_request(:get, "http://#{@username}:#{@password}@#{@host}/audiences/2/lists.xml").to_return(:body => xml)
|
79
|
-
end
|
80
|
-
|
81
|
-
it "should return an empty array" do
|
82
|
-
StreamSend::List.all.should == []
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
|
-
describe "with invalid audience" do
|
87
|
-
before(:each) do
|
88
|
-
xml = <<-XML
|
89
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
90
|
-
<people type="array"/>
|
91
|
-
XML
|
92
|
-
|
93
|
-
stub_http_request(:get, "http://#{@username}:#{@password}@#{@host}/audiences/99/people.xml").to_return(:body => xml)
|
94
|
-
end
|
95
|
-
|
96
|
-
it "should raise an exception" do
|
97
|
-
lambda { StreamSend::List.all }.should raise_error
|
98
|
-
end
|
99
|
-
end
|
100
|
-
end
|
101
|
-
|
102
|
-
describe ".find" do
|
103
|
-
describe "with matching list" do
|
104
|
-
before(:each) do
|
105
|
-
xml = <<-XML
|
106
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
107
|
-
<list>
|
108
|
-
<active-people-count type="integer">11</active-people-count>
|
109
|
-
<checked-by-default type="boolean" nil="true"></checked-by-default>
|
110
|
-
<created-at type="datetime">2012-01-14T18:11:50Z</created-at>
|
111
|
-
<deleted-at type="datetime" nil="true"></deleted-at>
|
112
|
-
<description nil="true"></description>
|
113
|
-
<id type="integer">42</id>
|
114
|
-
<inactive-people-count type="integer">0</inactive-people-count>
|
115
|
-
<name>First list</name>
|
116
|
-
<pending-people-count type="integer">0</pending-people-count>
|
117
|
-
<public type="boolean" nil="true"></public>
|
118
|
-
<status type="enum">idle</status>
|
119
|
-
<unsubscribed-people-count type="integer">0</unsubscribed-people-count>
|
120
|
-
<updated-at type="datetime">2012-01-14T18:11:50Z</updated-at>
|
121
|
-
<audience-id type="integer">2</audience-id>
|
122
|
-
</list>
|
123
|
-
XML
|
124
|
-
|
125
|
-
stub_http_request(:get, /audiences\/2\/lists\/42.xml/).with(:id => "42").to_return(:body => xml)
|
126
|
-
end
|
127
|
-
|
128
|
-
it "should return list" do
|
129
|
-
list = StreamSend::List.find(42)
|
130
|
-
|
131
|
-
list.should be_instance_of(StreamSend::List)
|
132
|
-
list.id.should == 42
|
133
|
-
list.name.should == "First list"
|
134
|
-
list.created_at.should == Time.parse("2012-01-14T18:11:50Z")
|
135
|
-
end
|
136
|
-
end
|
137
|
-
|
138
|
-
describe "with no matching list" do
|
139
|
-
before(:each) do
|
140
|
-
xml = <<-XML
|
141
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
142
|
-
<lists type="array"\>
|
143
|
-
XML
|
144
|
-
|
145
|
-
stub_http_request(:get, "http://#{@username}:#{@password}@#{@host}/audiences/2/people.xml?email_address=bad.email@gmail.com").to_return(:status => 404)
|
146
|
-
end
|
147
|
-
|
148
|
-
it "should return throw an exception" do
|
149
|
-
lambda {
|
150
|
-
StreamSend::List.find(-1)
|
151
|
-
}.should raise_error
|
152
|
-
end
|
153
|
-
end
|
154
|
-
|
155
|
-
describe "with invalid audience" do
|
156
|
-
before(:each) do
|
157
|
-
xml = <<-XML
|
158
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
159
|
-
<people type="array"\>
|
160
|
-
XML
|
161
|
-
|
162
|
-
stub_http_request(:get, "http://#{@username}:#{@password}@#{@host}/audiences/99/people.xml?email_address=bad.email@gmail.com").to_return(:body => xml)
|
163
|
-
end
|
164
|
-
|
165
|
-
it "should raise an exception" do
|
166
|
-
lambda { StreamSend::List.find("scott@gmail.com") }.should raise_error
|
167
|
-
end
|
168
|
-
end
|
169
|
-
end
|
170
|
-
|
171
|
-
|
172
|
-
describe ".create" do
|
173
|
-
describe "with no existing list using the same name" do
|
174
|
-
before(:each) do
|
175
|
-
@new_list_name = "list 1"
|
176
|
-
new_list_params = { :list => {:name => @new_list_name} }
|
177
|
-
stub_http_request(:post, /audiences\/2\/lists.xml/).with(new_list_params).to_return(:status => 201, :headers => {:location => "#{app_host}/audiences/2/lists/42"} )
|
178
|
-
end
|
179
|
-
|
180
|
-
it "should return list" do
|
181
|
-
list_id = StreamSend::List.create(@new_list_name)
|
182
|
-
list_id.should == 42
|
183
|
-
end
|
184
|
-
end
|
185
|
-
|
186
|
-
describe "with an existing list using the same name" do
|
187
|
-
before(:each) do
|
188
|
-
@new_list_name = "list 1"
|
189
|
-
new_list_params = { :list => {:name => @new_list_name} }
|
190
|
-
@error_message = "<error>Name has already been taken<error>"
|
191
|
-
stub_http_request(:post, /audiences\/2\/lists.xml/).with(new_list_params).to_return(:status => 422, :body => @error_message)
|
192
|
-
end
|
193
|
-
|
194
|
-
it "should raise an error" do
|
195
|
-
lambda {
|
196
|
-
StreamSend::List.create(@new_list_name)
|
197
|
-
}.should raise_error
|
198
|
-
end
|
199
|
-
end
|
200
|
-
end
|
201
|
-
|
202
|
-
end
|
203
|
-
end
|
@@ -1,21 +0,0 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), "../../spec_helper")
|
2
|
-
|
3
|
-
module StreamSend
|
4
|
-
describe "Resource" do
|
5
|
-
describe "with missing method" do
|
6
|
-
before(:each) do
|
7
|
-
@resource = StreamSend::Resource.new({"name" => "scott"})
|
8
|
-
end
|
9
|
-
|
10
|
-
it "should return value" do
|
11
|
-
@resource.name.should == "scott"
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
describe "#id" do
|
16
|
-
it "should return id" do
|
17
|
-
StreamSend::Resource.new({"id" => 99}).id.should == 99
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|