constant_contact 1.3.2 → 1.3.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -2,7 +2,7 @@
2
2
  module ConstantContact
3
3
  class Activity < Base
4
4
  self.format = ActiveResource::Formats::HtmlEncodedFormat
5
- attr_accessor :contacts, :lists, :activity_type
5
+ attr_accessor :contacts, :lists, :activity_type, :raw_data # Data is a reserved word in Rails
6
6
 
7
7
  def self.parse_id(url)
8
8
  url.to_s.split('/').last
@@ -29,16 +29,19 @@ module ConstantContact
29
29
  protected
30
30
  def encoded_data
31
31
  result = "&data="
32
- result += CGI.escape("Email Address,First Name,Last Name\n")
33
- contact_strings = []
34
- self.contacts.each do |contact|
35
- contact_strings << "#{contact.email_address}, #{contact.first_name}, #{contact.last_name}"
36
- end
37
- result += CGI.escape(contact_strings.join("\n"))
32
+ if self.raw_data.nil?
33
+ result += CGI.escape("Email Address,First Name,Last Name\n")
34
+ contact_strings = []
35
+ self.contacts.each do |contact|
36
+ contact_strings << "#{contact.email_address}, #{contact.first_name}, #{contact.last_name}"
37
+ end
38
+ result += CGI.escape(contact_strings.join("\n"))
39
+ else
40
+ result += CGI.escape(self.raw_data)
41
+ end
38
42
  return result
39
43
  end
40
44
 
41
-
42
45
  def encoded_lists
43
46
  result = ""
44
47
  self.lists.each do |list|
@@ -1,3 +1,3 @@
1
1
  module ConstantContact
2
- VERSION = '1.3.2'.freeze
2
+ VERSION = '1.3.3'.freeze
3
3
  end
@@ -3,38 +3,60 @@ require File.dirname(__FILE__) + '/../test_helper'
3
3
  class Activity < Test::Unit::TestCase
4
4
 
5
5
  context 'encode' do
6
- setup do
7
- @contacts = []
8
- 3.times do |n|
9
- @contacts << ConstantContact::Contact.new(:first_name => "Fred#{n}",
10
- :last_name => "Test#{n}",
11
- :email_address => "email#{n}@gmail.com")
12
- end
13
- @activity = ConstantContact::Activity.new(:activity_type => "SV_ADD")
14
- @activity.contacts = @contacts
15
- @list = ConstantContact::List.new
16
- @list.stubs(:id).returns('http://api.constantcontact.com/ws/customers/joesflowers/lists/2')
17
- @activity.lists = [@list]
6
+ context 'with raw data' do
7
+ setup do
8
+ @data = "Email Address,Custom Field1\nemail1@domain.com,custom1\nemail2@domain.com,custom2"
9
+ @list = ConstantContact::List.new
10
+ @list.stubs(:id).returns('http://api.constantcontact.com/ws/customers/freerobby/lists/3')
11
+ @activity = ConstantContact::Activity.new(
12
+ :activity_type => "SV_ADD"
13
+ )
14
+ @activity.raw_data = @data
15
+ @activity.lists = [@list]
16
+ end
17
+ should 'use raw data, bypassing contact parsing' do
18
+ assert_match(CGI.escape(@data), @activity.encode)
19
+ end
20
+ should 'include activity type' do
21
+ assert_match('activityType=SV_ADD', @activity.encode)
22
+ end
23
+ should 'include list' do
24
+ assert_match(CGI.escape(@list.id), @activity.encode)
25
+ end
18
26
  end
19
-
20
- should 'include activity type' do
21
- assert_match(/activityType=SV_ADD/, @activity.encode)
22
- end
23
-
24
- should 'include contacts data' do
25
- assert_match(/\&data\=Email\+Address\%2CFirst\+Name\%2CLast\+Name\%0A/, @activity.encode)
26
- assert_match(/email0\%40gmail\.com\%2C\+Fred0\%2C\+Test0\%0A/, @activity.encode)
27
- end
28
-
29
- should 'include lists' do
30
- assert_match(/Test2\&lists\=http\%3A\%2F\%2Fapi\.constantcontact\.com\%2Fws\%2Fcustomers\%2Fjoesflowers\%2Flists\%2F2/, @activity.encode)
27
+ context 'with contact data' do
28
+ setup do
29
+ @contacts = []
30
+ 3.times do |n|
31
+ @contacts << ConstantContact::Contact.new(:first_name => "Fred#{n}",
32
+ :last_name => "Test#{n}",
33
+ :email_address => "email#{n}@gmail.com")
34
+ end
35
+ @activity = ConstantContact::Activity.new(:activity_type => "SV_ADD")
36
+ @activity.contacts = @contacts
37
+ @list = ConstantContact::List.new
38
+ @list.stubs(:id).returns('http://api.constantcontact.com/ws/customers/joesflowers/lists/2')
39
+ @activity.lists = [@list]
40
+ end
41
+
42
+ should 'include activity type' do
43
+ assert_match(/activityType=SV_ADD/, @activity.encode)
44
+ end
45
+
46
+ should 'include contacts data' do
47
+ assert_match(/\&data\=Email\+Address\%2CFirst\+Name\%2CLast\+Name\%0A/, @activity.encode)
48
+ assert_match(/email0\%40gmail\.com\%2C\+Fred0\%2C\+Test0\%0A/, @activity.encode)
49
+ end
50
+
51
+ should 'include lists' do
52
+ assert_match(/Test2\&lists\=http\%3A\%2F\%2Fapi\.constantcontact\.com\%2Fws\%2Fcustomers\%2Fjoesflowers\%2Flists\%2F2/, @activity.encode)
53
+ end
31
54
  end
32
-
33
55
  end
34
56
 
35
57
  context 'format' do
36
58
  should 'be html encoded' do
37
- assert_equal ActiveResource::Formats[:html_encoded], ConstantContact::Activity.format
59
+ assert_equal ActiveResource::Formats[:html_encoded], ConstantContact::Activity.connection.format
38
60
  end
39
61
  end
40
62
 
data/test/test_helper.rb CHANGED
@@ -2,7 +2,6 @@ require 'rubygems'
2
2
  require 'active_support/test_case'
3
3
  require 'test/unit'
4
4
  require 'shoulda'
5
- require 'matchy'
6
5
  require 'mocha'
7
6
  require 'fakeweb'
8
7
 
@@ -16,7 +15,7 @@ class Test::Unit::TestCase
16
15
  end
17
16
 
18
17
  def fixture_file(filename)
19
- return '' if filename == ''
18
+ return '' if filename.blank?
20
19
  file_path = File.expand_path(File.dirname(__FILE__) + '/fixtures/' + filename)
21
20
  File.read(file_path)
22
21
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: constant_contact
3
3
  version: !ruby/object:Gem::Version
4
- hash: 31
4
+ hash: 29
5
5
  prerelease: false
6
6
  segments:
7
7
  - 1
8
8
  - 3
9
- - 2
10
- version: 1.3.2
9
+ - 3
10
+ version: 1.3.3
11
11
  platform: ruby
12
12
  authors:
13
13
  - Tim Case
@@ -18,7 +18,7 @@ autorequire:
18
18
  bindir: bin
19
19
  cert_chain: []
20
20
 
21
- date: 2010-11-30 00:00:00 -05:00
21
+ date: 2011-01-12 00:00:00 -05:00
22
22
  default_executable:
23
23
  dependencies:
24
24
  - !ruby/object:Gem::Dependency
@@ -80,7 +80,7 @@ dependencies:
80
80
  type: :development
81
81
  version_requirements: *id004
82
82
  - !ruby/object:Gem::Dependency
83
- name: matchy
83
+ name: mocha
84
84
  prerelease: false
85
85
  requirement: &id005 !ruby/object:Gem::Requirement
86
86
  none: false
@@ -94,7 +94,7 @@ dependencies:
94
94
  type: :development
95
95
  version_requirements: *id005
96
96
  - !ruby/object:Gem::Dependency
97
- name: mocha
97
+ name: fakeweb
98
98
  prerelease: false
99
99
  requirement: &id006 !ruby/object:Gem::Requirement
100
100
  none: false
@@ -107,20 +107,6 @@ dependencies:
107
107
  version: "0"
108
108
  type: :development
109
109
  version_requirements: *id006
110
- - !ruby/object:Gem::Dependency
111
- name: fakeweb
112
- prerelease: false
113
- requirement: &id007 !ruby/object:Gem::Requirement
114
- none: false
115
- requirements:
116
- - - ">="
117
- - !ruby/object:Gem::Version
118
- hash: 3
119
- segments:
120
- - 0
121
- version: "0"
122
- type: :development
123
- version_requirements: *id007
124
110
  description: This is a very ActiveResource-like ruby wrapper to the Constant Contact API.
125
111
  email:
126
112
  executables: []