postal 0.1.4

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.
@@ -0,0 +1,16 @@
1
+ # This is the Lyris config for your tests. This runs your test against a real Lyris implementation, so make sure
2
+ # you're using a test list that won't mind having tons of users added and subtracted on a regular basis.
3
+ #
4
+ # email_in_list => when testing mailings, this is where they will be sent to (this user is on your list)
5
+ # email_not_in_list => another test email, but this email address isn't in your list
6
+ # from: => used as the From: for those test mailings
7
+
8
+ config:
9
+ username: username@company.com
10
+ password: company123
11
+ wsdl: http://mail.company.com:82/?wsdl
12
+ list_name: company-sample
13
+ email_in_list: me@company.com
14
+ email_not_in_list: other@somewhere.com
15
+ from: The Company <noreply@company.com>
16
+
@@ -0,0 +1,60 @@
1
+ require 'test_helper'
2
+
3
+ class MailingTest < Test::Unit::TestCase
4
+
5
+ @config = nil
6
+
7
+ def setup
8
+ load_config
9
+ end
10
+
11
+ def test_can_send_valid_mailing
12
+ mail = Postal::Mailing.new( :to => @config['email_in_list'],
13
+ :html_message => "<p>Test from Postal at #{Time.now.to_s}</p>",
14
+ :text_message => 'Test test from Postal at #{Time.now.to_s}',
15
+ :from => @config['from'],
16
+ :subject => 'postal_test.rb')
17
+ assert mail.valid?
18
+ assert mail.send
19
+
20
+ # with explicit list_name
21
+ mail = Postal::Mailing.new( :to => @config['email_in_list'],
22
+ :html_message => "<p>Test from Postal at #{Time.now.to_s}</p>",
23
+ :text_message => 'Test test from Postal at #{Time.now.to_s}',
24
+ :from => @config['from'],
25
+ :list_name => @config['list_name'],
26
+ :subject => 'postal_test.rb')
27
+ assert mail.valid?
28
+ assert mail.send
29
+ end
30
+
31
+ def test_can_send_email_to_address_not_in_list
32
+ mail = Postal::Mailing.new( :to => @config['email_not_in_list'],
33
+ :html_message => "<p>Test from Postal at #{Time.now.to_s}</p>",
34
+ :text_message => 'Text test from Postal at #{Time.now.to_s}',
35
+ :from => @config['from'],
36
+ :subject => 'postal_test.rb')
37
+ assert mail.send
38
+ end
39
+
40
+ def test_can_send_mailing_after_making_valid
41
+ mail = Postal::Mailing.new( :to => @config['email_in_list'],
42
+ :html_message => "<p>Test from Postal at #{Time.now.to_s}</p>",
43
+ :from => @config['from'] )
44
+ assert !mail.valid?
45
+ mail.list_name = @config['list_name']
46
+ assert !mail.valid?
47
+ mail.subject = 'postal_test.rb'
48
+ assert mail.valid?
49
+ end
50
+
51
+ def test_cannot_send_invalid_mailing
52
+ mail = Postal::Mailing.new( :to => @config['valid_email'],
53
+ :html_message => "<p>Test from Postal at #{Time.now.to_s}</p>",
54
+ :from => @config['from'] )
55
+ assert !mail.valid?
56
+ assert !mail.send
57
+ assert_raises(Postal::CouldNotSendMailing) { mail.send! }
58
+ end
59
+
60
+ end
@@ -0,0 +1,89 @@
1
+ require 'test_helper'
2
+
3
+ class MemberTest < Test::Unit::TestCase
4
+
5
+ @config = nil
6
+
7
+ def setup
8
+ load_config
9
+ end
10
+
11
+ def teardown
12
+ delete_test_members
13
+ end
14
+
15
+ # members
16
+ def test_can_create_member
17
+ assert Postal::Member.new(:email => "john.doe#{rand(1000000)}@anonymous.com", :name => "John Doe").save
18
+ assert Postal::Member.new(:email => "john.doe#{rand(1000000)}@anonymous.com", :name => "John Doe").save!
19
+ assert Postal::Member.new(:email => "john.doe#{rand(1000000)}@anonymous.com").save # create member with no name
20
+ assert Postal::Member.new(:email => "john.doe#{rand(1000000)}@anonymous.com").save! # create member with no name
21
+ end
22
+
23
+ def test_can_create_member_with_explicit_list
24
+ assert Postal::Member.new(:email => "john.doe#{rand(1000000)}@anonymous.com", :name => "John Doe", :list_name => @config['list_name']).save
25
+ end
26
+
27
+ def test_duplicate_member_cannot_be_saved
28
+ new_member = Postal::Member.new(:email => "john.doe#{rand(1000000)}@anonymous.com", :name => "Original")
29
+ new_member.save
30
+ repeat_member = Postal::Member.new(:email => new_member.email, :name => "Duplicate")
31
+ assert !repeat_member.save
32
+ assert_raises(Postal::CouldNotCreateMember) { repeat_member.save! }
33
+ end
34
+
35
+ def test_create_user_in_one_step
36
+ assert Postal::Member.create(:email => "john.doe#{rand(1000000)}@anonymous.com", :name => "John Doe")
37
+ assert Postal::Member.create!(:email => "john.doe#{rand(1000000)}@anonymous.com", :name => "John Doe")
38
+ end
39
+
40
+ def test_can_update_user_demographics_after_creation
41
+ new_member = Postal::Member.create(:email => "john.doe#{rand(1000000)}@anonymous.com", :name => "John Doe")
42
+ assert new_member.update_attributes(:field_0 => 'Baseball')
43
+ end
44
+
45
+ def test_can_create_user_and_demographics_at_creation
46
+ assert Postal::Member.create(:email => "john.doe#{rand(1000000)}@anonymous.com", :name => "John Doe", :field_0 => 'Baseball', :field_1 => 'Male')
47
+ end
48
+
49
+ def test_can_find_member_by_id
50
+ new_member = Postal::Member.create(:email => "john.doe#{rand(1000000)}@anonymous.com", :name => "John Doe")
51
+ assert Postal::Member.find(new_member.id)
52
+ assert Postal::Member.find(new_member.id, @config['list_name']) # with explicit list_name
53
+ end
54
+
55
+ def test_can_find_member_by_email
56
+ new_member = Postal::Member.create(:email => "john.doe#{rand(1000000)}@anonymous.com", :name => "John Doe")
57
+ assert Postal::Member.find(new_member.email)
58
+ assert Postal::Member.find(new_member.email, @config['list_name']) # with explicit list_name
59
+ end
60
+
61
+ def test_can_find_member_by_filters
62
+ Postal::Member.create(:email => "john.doe#{rand(1000000)}@anonymous.com", :name => "John Doe")
63
+ Postal::Member.create(:email => "john.doe#{rand(1000000)}@anonymous.com", :name => "John Doe 2")
64
+ assert members = Postal::Member.find_by_filter('EmailAddress like john.doe%')
65
+ assert_equal members.size, 2
66
+ assert Postal::Member.find_by_filter("ListName=#{@config['list_name']}",'EmailAddress like john.doe%') # with explicit list_name
67
+ end
68
+
69
+ def test_can_delete_member
70
+ new_member = Postal::Member.create(:email => "john.doe-delete@anonymous.com", :name => "John Doe")
71
+ assert Postal::Member.find(new_member.email)
72
+ Postal::Member.destroy("EmailAddress like john.doe-delete%")
73
+ assert !Postal::Member.find(new_member.email)
74
+
75
+ # explicit list_name
76
+ new_member = Postal::Member.create(:email => "john.doe-delete@anonymous.com", :name => "John Doe")
77
+ assert Postal::Member.find(new_member.email)
78
+ Postal::Member.destroy("ListName=#{@config['list_name']}","EmailAddress like john.doe-delete%")
79
+ assert !Postal::Member.find(new_member.email)
80
+ end
81
+
82
+ def test_can_create_find_and_update_member
83
+ Postal::Member.create(:email => "john.doe#{rand(1000000)}@anonymous.com", :name => "John Doe")
84
+ assert member = Postal::Member.find_by_filter('EmailAddress like john.doe%')
85
+ assert member.update_attributes(:field_0 => 'Baseball')
86
+ assert_equal Postal::Member.find_by_filter('EmailAddress like john.doe%').demographics[:field_0], 'Baseball'
87
+ end
88
+
89
+ end
@@ -0,0 +1,4 @@
1
+ require 'test/unit'
2
+ require 'list_test'
3
+ require 'member_test'
4
+ require 'mailing_test'
@@ -0,0 +1,23 @@
1
+ require 'rubygems'
2
+ require 'test/unit'
3
+ # require 'shoulda'
4
+
5
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
6
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
7
+ require 'postal'
8
+
9
+ class Test::Unit::TestCase
10
+
11
+ def load_config
12
+ @config = YAML.load(File.read('lyris.yml'))['config']
13
+ Postal.options[:wsdl] = @config['wsdl']
14
+ Postal.options[:username] = @config['username']
15
+ Postal.options[:password] = @config['password']
16
+ Postal.options[:list_name] = @config['list_name']
17
+ end
18
+
19
+ def delete_test_members
20
+ Postal::Member.destroy('EmailAddress like john.doe%')
21
+ end
22
+
23
+ end
metadata ADDED
@@ -0,0 +1,91 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: postal
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.4
5
+ platform: ruby
6
+ authors:
7
+ - Rob Cameron
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-08-31 00:00:00 -07:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: soap4r
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: 1.5.8
24
+ version:
25
+ description: Lyris is an enterprise email service. Postal makes it easy for Ruby to talk to Lyris's API.
26
+ email: cannikinn@gmail.com
27
+ executables: []
28
+
29
+ extensions: []
30
+
31
+ extra_rdoc_files:
32
+ - LICENSE
33
+ - README.rdoc
34
+ files:
35
+ - .document
36
+ - .gitignore
37
+ - LICENSE
38
+ - README.rdoc
39
+ - Rakefile
40
+ - VERSION
41
+ - lib/postal.rb
42
+ - lib/postal/base.rb
43
+ - lib/postal/list.rb
44
+ - lib/postal/lmapi/lmapi.rb
45
+ - lib/postal/lmapi/lmapi_driver.rb
46
+ - lib/postal/lmapi/lmapi_mapping_registry.rb
47
+ - lib/postal/mailing.rb
48
+ - lib/postal/member.rb
49
+ - postal.gemspec
50
+ - test/list_test.rb
51
+ - test/lmapiClient.rb
52
+ - test/lyris_sample.yml
53
+ - test/mailing_test.rb
54
+ - test/member_test.rb
55
+ - test/postal_suite.rb
56
+ - test/test_helper.rb
57
+ has_rdoc: true
58
+ homepage: http://github.com/cannikin/postal
59
+ licenses: []
60
+
61
+ post_install_message:
62
+ rdoc_options:
63
+ - --charset=UTF-8
64
+ require_paths:
65
+ - lib
66
+ required_ruby_version: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - ">="
69
+ - !ruby/object:Gem::Version
70
+ version: "0"
71
+ version:
72
+ required_rubygems_version: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: "0"
77
+ version:
78
+ requirements: []
79
+
80
+ rubyforge_project:
81
+ rubygems_version: 1.3.5
82
+ signing_key:
83
+ specification_version: 3
84
+ summary: Gem for talking to the Lyris API
85
+ test_files:
86
+ - test/list_test.rb
87
+ - test/lmapiClient.rb
88
+ - test/mailing_test.rb
89
+ - test/member_test.rb
90
+ - test/postal_suite.rb
91
+ - test/test_helper.rb