streamsend 1.0.0.rc16 → 1.0.0.rc19

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.
Files changed (39) hide show
  1. checksums.yaml +8 -8
  2. data/.gitignore +2 -0
  3. data/Gemfile.lock +9 -7
  4. data/lib/streamsend/api/base/count.rb +27 -0
  5. data/lib/streamsend/api/base/index.rb +13 -15
  6. data/lib/streamsend/api/blast.rb +6 -6
  7. data/lib/streamsend/api/bounce.rb +2 -2
  8. data/lib/streamsend/api/click.rb +2 -2
  9. data/lib/streamsend/api/configuration.rb +4 -0
  10. data/lib/streamsend/api/hash_xml_serializer.rb +58 -0
  11. data/lib/streamsend/api/list.rb +1 -1
  12. data/lib/streamsend/api/membership.rb +16 -3
  13. data/lib/streamsend/api/person.rb +4 -8
  14. data/lib/streamsend/api/result.rb +32 -1
  15. data/lib/streamsend/api/session.rb +22 -1
  16. data/lib/streamsend/api/unsubscribe.rb +2 -2
  17. data/lib/streamsend/version.rb +1 -1
  18. data/lib/streamsend.rb +3 -4
  19. data/spec/lib/streamsend/api/integration/blast_spec.rb +4 -4
  20. data/spec/lib/streamsend/api/integration/bounce_spec.rb +3 -0
  21. data/spec/lib/streamsend/api/integration/click_spec.rb +2 -0
  22. data/spec/lib/streamsend/api/integration/link_spec.rb +2 -0
  23. data/spec/lib/streamsend/api/integration/membership_spec.rb +27 -1
  24. data/spec/lib/streamsend/api/integration/owner_spec.rb +25 -18
  25. data/spec/lib/streamsend/api/integration/person_spec.rb +12 -2
  26. data/spec/lib/streamsend/api/integration/unsubscribe_spec.rb +2 -0
  27. data/spec/lib/streamsend/api/integration/view_spec.rb +1 -0
  28. data/spec/lib/streamsend/api/unit/base/count_spec.rb +57 -0
  29. data/spec/lib/streamsend/api/unit/base/index_spec.rb +42 -18
  30. data/spec/lib/streamsend/api/unit/blast_spec.rb +6 -9
  31. data/spec/lib/streamsend/api/unit/bounce_spec.rb +5 -7
  32. data/spec/lib/streamsend/api/unit/click_spec.rb +4 -4
  33. data/spec/lib/streamsend/api/unit/hash_xml_serializer_spec.rb +63 -0
  34. data/spec/lib/streamsend/api/unit/link_spec.rb +2 -2
  35. data/spec/lib/streamsend/api/unit/membership_spec.rb +23 -9
  36. data/spec/lib/streamsend/api/unit/person_spec.rb +10 -11
  37. data/spec/lib/streamsend/api/unit/result_spec.rb +32 -3
  38. data/spec/lib/streamsend/api/unit/unsubscribe_spec.rb +4 -6
  39. metadata +9 -3
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ZmY1MDIyZThjMDUxODE1ZmYyMzViNjliMWJlYTVmZDg2NzA0NTY1ZQ==
4
+ YjU4NDE1YWQyOWQzNzVhNTA1OTFmNTMwYjU0NGU0MDU3Y2E0Y2UzYw==
5
5
  data.tar.gz: !binary |-
6
- ODQxZWFmMjg2M2EzMWZlODhmYjMzYTQyMzRjMzFhN2I3OGEzZTA5ZQ==
6
+ N2Q5MWQwNjIxYWRhYWYyYWQzNjQyNWY4MzIwMjU5NjhlNzBhN2RjNw==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- M2FiNTlmZDhmMTU5MDhlMjQwY2MxZWQxMDI0ZWNiNDg2Mjg4MTkzNWE5ZDZi
10
- MzI5YTM0ZGFlYWQ5N2IxNTQ2NjEwY2E1OTUwMDI5ZTJlNGM5M2NiMTUxZTM5
11
- MjY5MWNkZDBhOTZhMjBmN2I5YjFlNGIzMDhjYTc1MjQxY2VjNTQ=
9
+ NzMwMTI3MjVjMTBmYTM3YTA4OTkxYTBlMzU0MDlkMzg1N2NjODU1ZTYxZDUy
10
+ NGE2MmMxNDA5Yzg1M2M3M2FmNzkxZmM4ZDVmZTE2MDk3ODM5MzFmYWU1MDgz
11
+ YjUyYjI2OWFmNTdiZTZlZGViNzA2ZmIyNDQyYjQ1ZjkxNzQ5N2E=
12
12
  data.tar.gz: !binary |-
13
- NzNmNDEyNDdiODUzZGVhNTY4N2ZjYzExODc5NjFjNmMwNzIwN2IxNWIyYjk4
14
- MWY5NTkwMmFlYzlhYWMzYWViMThhNjgxMjJhNDkyNDQyMzk3NDg1ZGI2OGI4
15
- NTczMjAzOTBlMWZlNjhhOThiNTNjNDAwOThjNTI3NjBiNzBiNDg=
13
+ YmRhMmRlNDk0ZThlMjJkZWUyODk4Zjg5ODM2YjMxZmRlNzgzODlkMTU4YzYz
14
+ MTg5ZDlmNTAyMDJlNzkyNjQwZTgxZTIxMDQ3NjM4ZGZiOGFlZDNlYTFkZGRm
15
+ ZjYyZmE5YTBlZWI3ODQxY2JkMmJlZjkwMDlhOWRlZWMyYTRkZTA=
data/.gitignore CHANGED
@@ -12,6 +12,8 @@ test/tmp
12
12
  test/version_tmp
13
13
  tmp
14
14
  config/streamsend-ruby.yml
15
+ test.txt
16
+ tags
15
17
 
16
18
  # YARD artifacts
17
19
  .yardoc
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- streamsend (1.0.0.rc15)
4
+ streamsend (1.0.0.rc18)
5
5
  activesupport (~> 3.2)
6
6
  builder
7
7
  httmultiparty
@@ -9,7 +9,7 @@ PATH
9
9
  GEM
10
10
  remote: http://rubygems.org/
11
11
  specs:
12
- activesupport (3.2.15)
12
+ activesupport (3.2.17)
13
13
  i18n (~> 0.6, >= 0.6.4)
14
14
  multi_json (~> 1.0)
15
15
  addressable (2.3.5)
@@ -25,17 +25,19 @@ GEM
25
25
  debugger-ruby_core_source (1.2.3)
26
26
  diff-lcs (1.2.4)
27
27
  git-commit-story (0.1.5)
28
- httmultiparty (0.3.10)
28
+ httmultiparty (0.3.14)
29
29
  httparty (>= 0.7.3)
30
+ mimemagic
30
31
  multipart-post
31
- httparty (0.12.0)
32
+ httparty (0.13.1)
32
33
  json (~> 1.8)
33
34
  multi_xml (>= 0.5.2)
34
- i18n (0.6.5)
35
+ i18n (0.6.9)
35
36
  json (1.8.1)
36
- multi_json (1.8.2)
37
+ mimemagic (0.2.1)
38
+ multi_json (1.9.2)
37
39
  multi_xml (0.5.5)
38
- multipart-post (1.2.0)
40
+ multipart-post (2.0.0)
39
41
  pair-salad (0.1.1)
40
42
  rake (10.1.0)
41
43
  rspec (2.14.1)
@@ -0,0 +1,27 @@
1
+ require "open-uri"
2
+
3
+ module StreamSend
4
+ module Api
5
+ module Call
6
+ class Count < StreamSend::Api::Call::BaseCall
7
+ def execute()
8
+ response = session.get(uri)
9
+ case response.code
10
+ when 200
11
+ response.parsed_response["count"]
12
+ when 400
13
+ raise StreamSend::Api::ApiException.new(get_error_from(response))
14
+ when 401
15
+ raise StreamSend::Api::UnauthorizedException.new("Please check your credentials and host: " + session.base_uri)
16
+ else
17
+ raise StreamSend::Api::Exception.new("Could not return count of #{namespace}. (#{response.code})")
18
+ end
19
+ end
20
+
21
+ def uri
22
+ "#{base_uri}/count.xml"
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -5,11 +5,13 @@ module StreamSend
5
5
  module Call
6
6
  class Index < StreamSend::Api::Call::BaseCall
7
7
  def execute(index_options = {})
8
- @options = index_options
9
- response = session.get(uri, @options)
8
+ options = build_query_with(index_options)
9
+ response = session.get(uri, options)
10
10
  case response.code
11
11
  when 200
12
12
  response.parsed_response[namespace].collect { |data| StreamSend::Api::Result.new(data) }
13
+ when 400
14
+ raise StreamSend::Api::ApiException.new(get_error_from(response))
13
15
  when 401
14
16
  raise StreamSend::Api::UnauthorizedException.new("Please check your credentials and host: " + session.base_uri)
15
17
  else
@@ -17,20 +19,16 @@ module StreamSend
17
19
  end
18
20
  end
19
21
 
20
- def uri
21
- (@options[:page]) ? "#{base_uri}.xml#{paging_query_string}" : "#{base_uri}.xml"
22
- end
23
-
24
- def paging_query_string
25
- "?page=#{page}&per_page=#{per_page}"
26
- end
27
-
28
- def page
29
- @options[:page] || 1
22
+ def build_query_with(options)
23
+ if (options[:query].nil? && options[:headers].nil? && !options.empty?)
24
+ {:query => options}
25
+ else
26
+ options
27
+ end
30
28
  end
31
29
 
32
- def per_page
33
- @options[:per_page] || StreamSend::PER_PAGE_DEFAULT
30
+ def uri
31
+ "#{base_uri}.xml"
34
32
  end
35
33
  end
36
34
 
@@ -47,7 +45,7 @@ module StreamSend
47
45
  end
48
46
 
49
47
  def uri
50
- "#{blast_uri_for(@blast_id)}#{paging_query_string}"
48
+ "#{blast_uri_for(@blast_id)}"
51
49
  end
52
50
  end
53
51
  end
@@ -1,21 +1,21 @@
1
1
  module StreamSend
2
2
  module Api
3
3
  module Blast
4
- class Index < StreamSend::Api::Call::AudienceIndex
4
+ class Index < StreamSend::Api::Call::Index
5
5
  def uri
6
- "#{audiences_uri}#{paging_query_string}"
6
+ "#{audiences_uri}"
7
7
  end
8
8
  end
9
9
 
10
- class Scheduled < StreamSend::Api::Call::AudienceIndex
10
+ class Scheduled < StreamSend::Api::Call::Index
11
11
  def uri
12
- "#{base_audience_uri}/scheduled.xml#{paging_query_string}"
12
+ "#{base_audience_uri}/scheduled.xml"
13
13
  end
14
14
  end
15
15
 
16
- class Sent < StreamSend::Api::Call::AudienceIndex
16
+ class Sent < StreamSend::Api::Call::Index
17
17
  def uri
18
- "#{base_audience_uri}/sent.xml#{paging_query_string}"
18
+ "#{base_audience_uri}/sent.xml"
19
19
  end
20
20
  end
21
21
 
@@ -6,13 +6,13 @@ module StreamSend
6
6
 
7
7
  class Soft < StreamSend::Api::Call::BlastIndex
8
8
  def uri
9
- "#{base_blast_uri_for(@blast_id)}/soft.xml#{paging_query_string}"
9
+ "#{base_blast_uri_for(@blast_id)}/soft.xml"
10
10
  end
11
11
  end
12
12
 
13
13
  class Hard < StreamSend::Api::Call::BlastIndex
14
14
  def uri
15
- "#{base_blast_uri_for(@blast_id)}/hard.xml#{paging_query_string}"
15
+ "#{base_blast_uri_for(@blast_id)}/hard.xml"
16
16
  end
17
17
  end
18
18
  end
@@ -9,8 +9,8 @@ module StreamSend
9
9
  end
10
10
 
11
11
  def uri
12
- return "#{base_blast_only_for(@blast_id)}/links/#{@link_id}/clicks.xml#{paging_query_string}" if @link_id
13
- "#{base_blast_uri_for(@blast_id)}.xml#{paging_query_string}"
12
+ return "#{base_blast_only_for(@blast_id)}/links/#{@link_id}/clicks.xml" if @link_id
13
+ "#{base_blast_uri_for(@blast_id)}.xml"
14
14
  end
15
15
  end
16
16
  end
@@ -21,6 +21,10 @@ module StreamSend
21
21
  def self.base_uri
22
22
  config["root_account"]["base_uri"] if config
23
23
  end
24
+
25
+ def self.send_data_as_xml
26
+ config["root_account"]["send_data_as_xml"] if config
27
+ end
24
28
  end
25
29
  end
26
30
  end
@@ -0,0 +1,58 @@
1
+ module StreamSend
2
+ module Api
3
+ class HashXmlSerializer
4
+ def serialize(hash, options = {})
5
+ xml = serialize_hash(hash, options)
6
+ end
7
+
8
+ private
9
+
10
+ def serialize_hash(hash, options)
11
+ builder = get_builder(options)
12
+ root_name = get_root_name(hash, options)
13
+
14
+ hash.keys.each do |key|
15
+ value = hash[key]
16
+ if(value.is_a?(Hash))
17
+ builder.tag!(root_name) do
18
+ process_nested_hash(key, value, options)
19
+ end
20
+ else
21
+ build_tag_for(builder, key, value)
22
+ end
23
+ end
24
+
25
+ builder.target!
26
+ end
27
+
28
+ def build_tag_for(builder, key, value)
29
+ if value
30
+ value = value.join(", ") if value.is_a?(Array)
31
+ builder.tag!(tag_name_for(key), value)
32
+ else
33
+ builder.tag!(tag_name_for(key), {:nil => true}, value)
34
+ end
35
+ end
36
+
37
+ def process_nested_hash(key, value, options)
38
+ options[:skip_instruct] = true
39
+ options[:root] = tag_name_for(value.keys[0])
40
+ serialize_hash(value, options)
41
+ end
42
+
43
+ def get_root_name(hash, options)
44
+ options[:root] || tag_name_for(hash.keys[0])
45
+ end
46
+
47
+ def get_builder(options)
48
+ xml = options[:builder] ||= ::Builder::XmlMarkup.new(:indent => 2)
49
+ xml.instruct! unless options[:skip_instruct]
50
+ xml
51
+ end
52
+
53
+ def tag_name_for(key)
54
+ key.to_s.dasherize
55
+ end
56
+ end
57
+ end
58
+ end
@@ -9,7 +9,7 @@ module StreamSend
9
9
 
10
10
  def uri
11
11
  return "#{base_audience_only}/people/#{@person_id}/lists.xml" if @person_id
12
- audiences_uri
12
+ super
13
13
  end
14
14
  end
15
15
 
@@ -1,7 +1,7 @@
1
1
  module StreamSend
2
2
  module Api
3
3
  module Membership
4
- class Index < StreamSend::Api::Call::AudienceIndex
4
+ class Index < StreamSend::Api::Call::Index
5
5
  def execute(person_id, list_id = nil, options = {})
6
6
  @person_id = person_id
7
7
  @list_id = list_id
@@ -10,8 +10,21 @@ module StreamSend
10
10
 
11
11
  def uri
12
12
  base = "#{base_audience_only}/people/#{@person_id}/"
13
- return "#{base}lists/#{@list_id}/memberships.xml#{paging_query_string}" if @list_id
14
- "#{base}memberships.xml#{paging_query_string}"
13
+ return "#{base}lists/#{@list_id}/memberships.xml" if @list_id
14
+ "#{base}memberships.xml"
15
+ end
16
+ end
17
+
18
+ class Count < StreamSend::Api::Call::Count
19
+ def execute(person_id = nil, list_id = nil)
20
+ @person_id = person_id
21
+ @list_id = list_id
22
+ super()
23
+ end
24
+
25
+ def uri
26
+ return "#{base_audience_only}/people/#{@person_id}/memberships/count.xml" if @person_id
27
+ "#{base_audience_only}/lists/#{@list_id}/memberships/count.xml"
15
28
  end
16
29
  end
17
30
 
@@ -21,7 +21,7 @@ module StreamSend
21
21
 
22
22
  def uri
23
23
  return "#{base_audience_only}/lists/#{@list_id}/people.xml" if @list_id
24
- "#{super}#{paging_query_string}"
24
+ super
25
25
  end
26
26
  end
27
27
 
@@ -45,10 +45,6 @@ module StreamSend
45
45
  index_options.merge!(:query => { :owner_id => owner_id })
46
46
  super(index_options)
47
47
  end
48
-
49
- def uri
50
- "#{super}#{paging_query_string}"
51
- end
52
48
  end
53
49
 
54
50
  class Activate < StreamSend::Api::Call::BaseCall
@@ -64,14 +60,14 @@ module StreamSend
64
60
  class Click < StreamSend::Api::Click::Index
65
61
  def uri
66
62
  base = "#{session.base_uri}/blasts/#{@blast_id}"
67
- return "#{base_blast_only_for(@blast_id)}/links/#{@link_id}/clicks/people.xml#{paging_query_string}" if @link_id
68
- "#{base_blast_only_for(@blast_id)}/clicks/people.xml#{paging_query_string}"
63
+ return "#{base_blast_only_for(@blast_id)}/links/#{@link_id}/clicks/people.xml" if @link_id
64
+ "#{base_blast_only_for(@blast_id)}/clicks/people.xml"
69
65
  end
70
66
  end
71
67
 
72
68
  class View < StreamSend::Api::Call::BlastIndex
73
69
  def uri
74
- "#{base_blast_only_for(@blast_id)}/views/people.xml#{paging_query_string}"
70
+ "#{base_blast_only_for(@blast_id)}/views/people.xml"
75
71
  end
76
72
  end
77
73
 
@@ -6,7 +6,38 @@ module StreamSend
6
6
  end
7
7
 
8
8
  def to_hash
9
- self.marshal_dump
9
+ marshal_nested_result_object(self)
10
+ end
11
+
12
+ def attributes
13
+ result_attributes = self.methods.grep /\w=$/
14
+ result_attributes.collect {|attribute| attribute.to_s.chomp('=')}
15
+ end
16
+
17
+ def self.create_nested_result_object(object_hash)
18
+ return case object_hash
19
+ when Hash
20
+ object_hash = object_hash.clone
21
+ object_hash.each do |key, value|
22
+ object_hash[key] = create_nested_result_object(value)
23
+ end
24
+ Result.new(object_hash)
25
+ when Array
26
+ object_hash = object_hash.clone
27
+ object_hash.map! { |i| create_nested_result_object(i) }
28
+ else
29
+ object_hash
30
+ end
31
+ end
32
+
33
+ private
34
+
35
+ def marshal_nested_result_object(result)
36
+ result.attributes.each do |attribute|
37
+ value = result.send(attribute.to_sym)
38
+ result.send("#{attribute}=", marshal_nested_result_object(value)) if value.is_a?(StreamSend::Api::Result)
39
+ end
40
+ result.marshal_dump
10
41
  end
11
42
  end
12
43
  end
@@ -1,10 +1,11 @@
1
1
  module StreamSend
2
2
  module Api
3
3
  class Session
4
- def initialize(username = nil, password = nil, base_uri = nil)
4
+ def initialize(username = nil, password = nil, base_uri = nil, use_xml = nil)
5
5
  @base_uri = load_base_uri(base_uri)
6
6
  @username = load_username(username)
7
7
  @password = load_password(password)
8
+ @send_data_as_xml = send_data_as_xml?(use_xml)
8
9
  end
9
10
 
10
11
  def load_base_uri base_uri
@@ -28,6 +29,13 @@ module StreamSend
28
29
  raise StreamSend::Api::Exception.new("Unable to create session: no API password provided.")
29
30
  end
30
31
 
32
+ def send_data_as_xml?(send_as_xml)
33
+ return send_as_xml if send_as_xml
34
+ return ENV['STREAMSEND_USE_XML'] if ENV['STREAMSEND_USE_XML']
35
+ return StreamSend::Api::Configuration.send_data_as_xml
36
+ false
37
+ end
38
+
31
39
  def get(uri, options = {})
32
40
  options.merge!(self.basic_auth_credentials)
33
41
  HTTParty.get(uri, options)
@@ -35,11 +43,13 @@ module StreamSend
35
43
 
36
44
  def put(uri, options = {})
37
45
  options.merge!(self.basic_auth_credentials)
46
+ convert_request_to_xml(options) if send_data_as_xml
38
47
  HTTParty.put(uri, options)
39
48
  end
40
49
 
41
50
  def post(uri, options = {})
42
51
  options.merge!(self.basic_auth_credentials)
52
+ convert_request_to_xml(options) if send_data_as_xml
43
53
  HTTMultiParty.post(uri, options)
44
54
  end
45
55
 
@@ -48,10 +58,19 @@ module StreamSend
48
58
  HTTParty.delete(uri, options)
49
59
  end
50
60
 
61
+ def convert_request_to_xml(options)
62
+ options[:headers]["Content-Type"] = "text/xml"
63
+ options[:body] = StreamSend::Api::HashXmlSerializer.new.serialize(options[:body])
64
+ end
65
+
51
66
  def base_uri
52
67
  @base_uri
53
68
  end
54
69
 
70
+ def send_data_as_xml
71
+ @send_data_as_xml
72
+ end
73
+
55
74
  def basic_auth_credentials
56
75
  { :basic_auth => { :username => @username, :password => @password } }
57
76
  end
@@ -59,7 +78,9 @@ module StreamSend
59
78
  def audience_id
60
79
  @audience_id ||= get_audience_id
61
80
  end
81
+
62
82
  private
83
+
63
84
  def get_audience_id
64
85
  audience = StreamSend::Api::Audience::Index.new(self).execute().first
65
86
  if audience
@@ -6,13 +6,13 @@ module StreamSend
6
6
 
7
7
  class Manual < StreamSend::Api::Call::BlastIndex
8
8
  def uri
9
- "#{base_blast_uri_for(@blast_id)}/manual.xml#{paging_query_string}"
9
+ "#{base_blast_uri_for(@blast_id)}/manual.xml"
10
10
  end
11
11
  end
12
12
 
13
13
  class Complaint < StreamSend::Api::Call::BlastIndex
14
14
  def uri
15
- "#{base_blast_uri_for(@blast_id)}/complaint.xml#{paging_query_string}"
15
+ "#{base_blast_uri_for(@blast_id)}/complaint.xml"
16
16
  end
17
17
  end
18
18
  end
@@ -1,3 +1,3 @@
1
1
  module StreamSend
2
- VERSION = "1.0.0.rc16"
2
+ VERSION = "1.0.0.rc19"
3
3
  end
data/lib/streamsend.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  require "rubygems"
2
2
  require "httmultiparty"
3
3
  require "ostruct"
4
+ require "builder"
4
5
  require "active_support/inflector"
5
6
  require "active_support/core_ext"
6
7
 
@@ -14,6 +15,7 @@ require "streamsend/api/base/show"
14
15
  require "streamsend/api/base/update"
15
16
  require "streamsend/api/base/create"
16
17
  require "streamsend/api/base/destroy"
18
+ require "streamsend/api/base/count"
17
19
  require "streamsend/api/audience"
18
20
  require "streamsend/api/session"
19
21
 
@@ -37,7 +39,4 @@ require "streamsend/api/unsubscribe"
37
39
  require "streamsend/api/upload"
38
40
  require "streamsend/api/view"
39
41
  require "streamsend/api/user"
40
-
41
- module StreamSend
42
- PER_PAGE_DEFAULT = 100
43
- end
42
+ require "streamsend/api/hash_xml_serializer"
@@ -25,7 +25,7 @@ module StreamSend
25
25
  describe Index do
26
26
  it "returns an index of blasts" do
27
27
  index = Index.new(session)
28
- blasts = index.execute
28
+ blasts = index.execute(:page => 1)
29
29
  expect(blasts.count).to be > 0
30
30
  end
31
31
  end
@@ -33,9 +33,9 @@ module StreamSend
33
33
  describe Scheduled do
34
34
  it "returns scheduled blasts if there are any" do
35
35
  scheduler = Scheduled.new(session)
36
- scheduled = scheduler.execute
36
+ scheduled = scheduler.execute(:page => 1)
37
37
  if scheduled.count > 0
38
- scheduled_values = ["scheduled", "preparing"]
38
+ scheduled_values = ["scheduled", "preparing", "failed to render", "waiting"]
39
39
  expect(scheduled_values).to include(scheduled[0].status)
40
40
  else
41
41
  pending "No scheduled blasts at this time to inspect or something went wrong."
@@ -46,7 +46,7 @@ module StreamSend
46
46
  describe Sent do
47
47
  it "returns sent blasts" do
48
48
  senter = Sent.new(session)
49
- sent = senter.execute
49
+ sent = senter.execute({:page => 1})
50
50
  expect(sent.count).to be > 0
51
51
  expect(sent[0].status).to eq("sent")
52
52
  end
@@ -21,16 +21,19 @@ module StreamSend
21
21
 
22
22
  describe "#execute" do
23
23
  it "returns an array of bounces" do
24
+ pending "Can't create bounces"
24
25
  bounces = indexer.execute(@blast_id)
25
26
  expect(bounces.count).to be <= 1
26
27
  end
27
28
 
28
29
  it "returns an array of hard bounces" do
30
+ pending "Can't create bounces"
29
31
  bounces = harder.execute(@blast_id)
30
32
  expect(bounces.count).to eq(0) #can't create a hard bounce :/
31
33
  end
32
34
 
33
35
  it "returns an array of soft bounces" do
36
+ pending "Can't create bounces"
34
37
  bounces = softer.execute(@blast_id)
35
38
  expect(bounces.count).to eq(1)
36
39
  expect(bounces[0].bounce_type).to eq("soft")
@@ -21,11 +21,13 @@ module StreamSend
21
21
 
22
22
  describe "#execute" do
23
23
  it "returns an array of clicks" do
24
+ pending "Can't create clicks through api"
24
25
  bounces = indexer.execute(blast_id)
25
26
  expect(bounces.count).to be > 0
26
27
  end
27
28
 
28
29
  it "returns an array of clicks by link_id" do
30
+ pending "Can't create clicks through api"
29
31
  bounces = indexer.execute(blast_id, link_id)
30
32
  expect(bounces.count).to be > 0
31
33
  end
@@ -17,6 +17,7 @@ module StreamSend
17
17
 
18
18
  describe Index do
19
19
  it "returns an array of links" do
20
+ pending "Create blast, don't expect fixture"
20
21
  indexer = Index.new(session)
21
22
  links = indexer.execute(blast_id)
22
23
  expect(links.count).to be > 0
@@ -25,6 +26,7 @@ module StreamSend
25
26
 
26
27
  describe Show do
27
28
  it "returns a link by id" do
29
+ pending "Create blast, don't expect fixture"
28
30
  indexer = Index.new(session)
29
31
  links = indexer.execute(blast_id)
30
32
  link = links[0]
@@ -27,7 +27,7 @@ module StreamSend
27
27
  id = creator.execute(membership_hash)
28
28
 
29
29
  indexer = Index.new(session)
30
- memberships = indexer.execute(person_id)
30
+ memberships = indexer.execute(person_id, nil, :page => 1)
31
31
  expect(memberships.count).to be > 0
32
32
 
33
33
  destroyer = Destroy.new(session)
@@ -63,6 +63,32 @@ module StreamSend
63
63
  end.to raise_exception(StreamSend::Api::Exception, "Could not find any memberships with the specified id. (404)")
64
64
  end
65
65
  end
66
+
67
+ describe Count do
68
+ it "returns a count of people one a list" do
69
+ creator = Create.new(session)
70
+ id = creator.execute(membership_hash)
71
+
72
+ counter = Count.new(session)
73
+ people_count = counter.execute(person_id)
74
+ expect(people_count).to eq(1)
75
+
76
+ destroyer = Destroy.new(session)
77
+ destroyer.execute(id)
78
+ end
79
+
80
+ it "returns a count of lists a person is on" do
81
+ creator = Create.new(session)
82
+ id = creator.execute(membership_hash)
83
+
84
+ counter = Count.new(session)
85
+ list_count = counter.execute(nil, list_id)
86
+ expect(list_count).to eq(1)
87
+
88
+ destroyer = Destroy.new(session)
89
+ destroyer.execute(id)
90
+ end
91
+ end
66
92
  end
67
93
  end
68
94
  end