test/campaign_test.rb in createsend-0.0.1 vs test/campaign_test.rb in createsend-0.0.2
- old
+ new
@@ -1,8 +1,8 @@
require File.dirname(__FILE__) + '/helper'
-class ClientTest < Test::Unit::TestCase
+class CampaignTest < Test::Unit::TestCase
context "when an api caller is authenticated" do
setup do
@api_key = '123123123123123123123'
CreateSend.api_key @api_key
@campaign = Campaign.new(:campaign_id => '787y87y87y87y87y87y87')
@@ -10,14 +10,20 @@
should "create a campaign" do
client_id = '87y8d7qyw8d7yq8w7ydwqwd'
stub_post(@api_key, "campaigns/#{client_id}.json", "create_campaign.json")
campaign_id = Campaign.create client_id, "subject", "name", "g'day", "good.day@example.com", "good.day@example.com",
- "http://example.com/campaign.html", "http://example.com/campaign.txt", [ '7y12989e82ue98u2e', 'dh9w89q8w98wudwd989' ], []
+ "http://example.com/campaign.html", "http://example.com/campaign.txt", [ '7y12989e82ue98u2e', 'dh9w89q8w98wudwd989' ],
+ [ 'y78q9w8d9w8ud9q8uw', 'djw98quw9duqw98uwd98' ]
campaign_id.should == "787y87y87y87y87y87y87"
end
-
+
+ should "send a preview of a draft campaign" do
+ stub_post(@api_key, "campaigns/#{@campaign.campaign_id}/sendpreview.json", nil)
+ @campaign.send_preview [ "test+89898u9@example.com", "test+787y8y7y8@example.com" ], "random"
+ end
+
should "send a campaign" do
stub_post(@api_key, "campaigns/#{@campaign.campaign_id}/send.json", nil)
@campaign.send "confirmation@example.com"
end
@@ -33,66 +39,109 @@
summary.TotalOpened.should == 10
summary.Clicks.should == 0
summary.Unsubscribed.should == 0
summary.Bounced.should == 0
summary.UniqueOpened.should == 5
- summary.WebVersionURL.should == "http://clientone.createsend.com//t/ViewEmail/r/3A433FC72FFE3B8B/C67FD2F38AC4859C/"
+ summary.WebVersionURL.should == "http://clientone.createsend.com/t/ViewEmail/r/3A433FC72FFE3B8B/C67FD2F38AC4859C/"
end
- should "get the lists for a campaign" do
- stub_get(@api_key, "campaigns/#{@campaign.campaign_id}/lists.json", "campaign_lists.json")
- lists = @campaign.lists
- lists.size.should == 2
- lists.first.Name.should == "List One"
- lists.first.ListID.should == "a58ee1d3039b8bec838e6d1482a8a965"
+ should "get the lists and segments for a campaign" do
+ stub_get(@api_key, "campaigns/#{@campaign.campaign_id}/listsandsegments.json", "campaign_listsandsegments.json")
+ ls = @campaign.lists_and_segments
+ ls.Lists.size.should == 1
+ ls.Segments.size.should == 1
+ ls.Lists.first.Name.should == "List One"
+ ls.Lists.first.ListID.should == "a58ee1d3039b8bec838e6d1482a8a965"
+ ls.Segments.first.Title.should == "Segment for campaign"
+ ls.Segments.first.ListID.should == "2bea949d0bf96148c3e6a209d2e82060"
+ ls.Segments.first.SegmentID.should == "dba84a225d5ce3d19105d7257baac46f"
end
- # TODO: Add this test once segments has been implemented
- # should "get the segments for a campaign" do
- # end
+ should "get the recipients for a campaign" do
+ stub_get(@api_key, "campaigns/#{@campaign.campaign_id}/recipients.json?pagesize=20&orderfield=email&page=1&orderdirection=asc", "campaign_recipients.json")
+ res = @campaign.recipients page=1, page_size=20
+ res.ResultsOrderedBy.should == "email"
+ res.OrderDirection.should == "asc"
+ res.PageNumber.should == 1
+ res.PageSize.should == 20
+ res.RecordsOnThisPage.should == 20
+ res.TotalNumberOfRecords.should == 2200
+ res.NumberOfPages.should == 110
+ res.Results.size.should == 20
+ res.Results.first.EmailAddress.should == "subs+6g76t7t0@example.com"
+ res.Results.first.ListID.should == "a994a3caf1328a16af9a69a730eaa706"
+ end
should "get the opens for a campaign" do
min_date = "2010-01-01"
- stub_get(@api_key, "campaigns/#{@campaign.campaign_id}/opens.json?date=#{CGI.escape(min_date)}", "campaign_opens.json")
+ stub_get(@api_key, "campaigns/#{@campaign.campaign_id}/opens.json?page=1&pagesize=1000&orderfield=date&orderdirection=asc&date=#{CGI.escape(min_date)}", "campaign_opens.json")
opens = @campaign.opens min_date
- opens.size.should == 5
- opens.first.EmailAddress.should == "subs+6576576576@example.com"
- opens.first.ListID.should == "512a3bc577a58fdf689c654329b50fa0"
- opens.first.Date.should == "2010-10-11 08:29:00"
- opens.first.IPAddress.should == "192.168.126.87"
+ opens.Results.size.should == 5
+ opens.Results.first.EmailAddress.should == "subs+6576576576@example.com"
+ opens.Results.first.ListID.should == "512a3bc577a58fdf689c654329b50fa0"
+ opens.Results.first.Date.should == "2010-10-11 08:29:00"
+ opens.Results.first.IPAddress.should == "192.168.126.87"
+ opens.ResultsOrderedBy.should == "date"
+ opens.OrderDirection.should == "asc"
+ opens.PageNumber.should == 1
+ opens.PageSize.should == 1000
+ opens.RecordsOnThisPage.should == 5
+ opens.TotalNumberOfRecords.should == 5
+ opens.NumberOfPages.should == 1
end
should "get the subscriber clicks for a campaign" do
min_date = "2010-01-01"
- stub_get(@api_key, "campaigns/#{@campaign.campaign_id}/clicks.json?date=#{CGI.escape(min_date)}", "campaign_clicks.json")
+ stub_get(@api_key, "campaigns/#{@campaign.campaign_id}/clicks.json?page=1&pagesize=1000&orderfield=date&orderdirection=asc&date=#{CGI.escape(min_date)}", "campaign_clicks.json")
clicks = @campaign.clicks min_date
- clicks.size.should == 3
- clicks.first.EmailAddress.should == "subs+6576576576@example.com"
- clicks.first.URL.should == "http://video.google.com.au/?hl=en&tab=wv"
- clicks.first.ListID.should == "512a3bc577a58fdf689c654329b50fa0"
- clicks.first.Date.should == "2010-10-11 08:29:00"
- clicks.first.IPAddress.should == "192.168.126.87"
+ clicks.Results.size.should == 3
+ clicks.Results.first.EmailAddress.should == "subs+6576576576@example.com"
+ clicks.Results.first.URL.should == "http://video.google.com.au/?hl=en&tab=wv"
+ clicks.Results.first.ListID.should == "512a3bc577a58fdf689c654329b50fa0"
+ clicks.Results.first.Date.should == "2010-10-11 08:29:00"
+ clicks.Results.first.IPAddress.should == "192.168.126.87"
+ clicks.ResultsOrderedBy.should == "date"
+ clicks.OrderDirection.should == "asc"
+ clicks.PageNumber.should == 1
+ clicks.PageSize.should == 1000
+ clicks.RecordsOnThisPage.should == 3
+ clicks.TotalNumberOfRecords.should == 3
+ clicks.NumberOfPages.should == 1
end
should "get the unsubscribes for a campaign" do
min_date = "2010-01-01"
- stub_get(@api_key, "campaigns/#{@campaign.campaign_id}/unsubscribes.json?date=#{CGI.escape(min_date)}", "campaign_unsubscribes.json")
+ stub_get(@api_key, "campaigns/#{@campaign.campaign_id}/unsubscribes.json?page=1&pagesize=1000&orderfield=date&orderdirection=asc&date=#{CGI.escape(min_date)}", "campaign_unsubscribes.json")
unsubscribes = @campaign.unsubscribes min_date
- unsubscribes.size.should == 1
- unsubscribes.first.EmailAddress.should == "subs+6576576576@example.com"
- unsubscribes.first.ListID.should == "512a3bc577a58fdf689c654329b50fa0"
- unsubscribes.first.Date.should == "2010-10-11 08:29:00"
- unsubscribes.first.IPAddress.should == "192.168.126.87"
+ unsubscribes.Results.size.should == 1
+ unsubscribes.Results.first.EmailAddress.should == "subs+6576576576@example.com"
+ unsubscribes.Results.first.ListID.should == "512a3bc577a58fdf689c654329b50fa0"
+ unsubscribes.Results.first.Date.should == "2010-10-11 08:29:00"
+ unsubscribes.Results.first.IPAddress.should == "192.168.126.87"
+ unsubscribes.ResultsOrderedBy.should == "date"
+ unsubscribes.OrderDirection.should == "asc"
+ unsubscribes.PageNumber.should == 1
+ unsubscribes.PageSize.should == 1000
+ unsubscribes.RecordsOnThisPage.should == 1
+ unsubscribes.TotalNumberOfRecords.should == 1
+ unsubscribes.NumberOfPages.should == 1
end
should "get the bounces for a campaign" do
- stub_get(@api_key, "campaigns/#{@campaign.campaign_id}/bounces.json", "campaign_bounces.json")
+ stub_get(@api_key, "campaigns/#{@campaign.campaign_id}/bounces.json?page=1&pagesize=1000&orderfield=date&orderdirection=asc", "campaign_bounces.json")
bounces = @campaign.bounces
- bounces.size.should == 2
- bounces.first.EmailAddress.should == "asdf@softbouncemyemail.com"
- bounces.first.ListID.should == "654523a5855b4a440bae3fb295641546"
- bounces.first.BounceType.should == "Soft"
- bounces.first.Date.should == "2010-07-02 16:46:00"
- bounces.first.Reason.should == "Bounce - But No Email Address Returned "
+ bounces.Results.size.should == 2
+ bounces.Results.first.EmailAddress.should == "asdf@softbouncemyemail.com"
+ bounces.Results.first.ListID.should == "654523a5855b4a440bae3fb295641546"
+ bounces.Results.first.BounceType.should == "Soft"
+ bounces.Results.first.Date.should == "2010-07-02 16:46:00"
+ bounces.Results.first.Reason.should == "Bounce - But No Email Address Returned "
+ bounces.ResultsOrderedBy.should == "date"
+ bounces.OrderDirection.should == "asc"
+ bounces.PageNumber.should == 1
+ bounces.PageSize.should == 1000
+ bounces.RecordsOnThisPage.should == 2
+ bounces.TotalNumberOfRecords.should == 2
+ bounces.NumberOfPages.should == 1
end
end
end
\ No newline at end of file