cannikin-postal 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.document +5 -0
- data/.gitignore +8 -0
- data/LICENSE +20 -0
- data/README.rdoc +28 -0
- data/Rakefile +59 -0
- data/VERSION +1 -0
- data/lib/postal/base.rb +47 -0
- data/lib/postal/list.rb +28 -0
- data/lib/postal/lmapi/lmapi.rb +1311 -0
- data/lib/postal/lmapi/lmapi_driver.rb +687 -0
- data/lib/postal/lmapi/lmapi_mapping_registry.rb +1237 -0
- data/lib/postal/mailing.rb +171 -0
- data/lib/postal/member.rb +115 -0
- data/lib/postal.rb +47 -0
- data/postal.gemspec +63 -0
- data/test/list_test.rb +20 -0
- data/test/lmapiClient.rb +854 -0
- data/test/lyris_sample.yml +14 -0
- data/test/mailing_test.rb +45 -0
- data/test/member_test.rb +67 -0
- data/test/postal_suite.rb +4 -0
- data/test/test_helper.rb +22 -0
- metadata +80 -0
@@ -0,0 +1,14 @@
|
|
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
|
+
# valid_email => when testing mailings, this is where they will be sent to
|
5
|
+
# from: => used as the From: for those test mailings
|
6
|
+
|
7
|
+
config:
|
8
|
+
username: username@company.com
|
9
|
+
password: company123
|
10
|
+
wsdl: http://mail.company.com:82/?wsdl
|
11
|
+
list_name: company-sample
|
12
|
+
valid_email: me@company.com
|
13
|
+
from: The Company <noreply@company.com>
|
14
|
+
|
@@ -0,0 +1,45 @@
|
|
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['valid_email'],
|
13
|
+
:html_message => "<p>Test from Postal at #{Time.now.to_s}</p>",
|
14
|
+
:text_message => 'Test from Postal at #{Time.now.to_s}',
|
15
|
+
:from => @config['from'],
|
16
|
+
:list_name => @config['list_name'],
|
17
|
+
:subject => 'postal_test.rb')
|
18
|
+
assert mail.valid?
|
19
|
+
assert mail.send
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_can_send_mailing_after_making_valid
|
23
|
+
mail = Postal::Mailing.new( :to => @config['valid_email'],
|
24
|
+
:html_message => "<p>Test from Postal at #{Time.now.to_s}</p>",
|
25
|
+
:text_message => 'Test from Postal at #{Time.now.to_s}',
|
26
|
+
:from => @config['from'] )
|
27
|
+
assert !mail.valid?
|
28
|
+
mail.list_name = @config['list_name']
|
29
|
+
assert !mail.valid?
|
30
|
+
mail.subject = 'postal_test.rb'
|
31
|
+
assert mail.valid?
|
32
|
+
assert mail.send
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_cannot_send_invalid_mailing
|
36
|
+
mail = Postal::Mailing.new( :to => @config['valid_email'],
|
37
|
+
:html_message => "<p>Test from Postal at #{Time.now.to_s}</p>",
|
38
|
+
:text_message => 'Test from Postal at #{Time.now.to_s}',
|
39
|
+
:from => @config['from'] )
|
40
|
+
assert !mail.valid?
|
41
|
+
assert !mail.send
|
42
|
+
assert_raises(Postal::CouldNotSendMailing) { mail.send! }
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
data/test/member_test.rb
ADDED
@@ -0,0 +1,67 @@
|
|
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("john.doe#{rand(1000000)}@anonymous.com", "John Doe", @config['list_name']).save
|
18
|
+
assert Postal::Member.new("john.doe#{rand(1000000)}@anonymous.com", "John Doe", @config['list_name']).save!
|
19
|
+
assert Postal::Member.new("john.doe#{rand(1000000)}@anonymous.com", '', @config['list_name']).save # create member with no name
|
20
|
+
assert Postal::Member.new("john.doe#{rand(1000000)}@anonymous.com", '', @config['list_name']).save! # create member with no name
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_duplicate_member_cannot_be_saved
|
24
|
+
new_member = Postal::Member.new("john.doe#{rand(1000000)}@anonymous.com","Original",@config['list_name'])
|
25
|
+
new_member.save
|
26
|
+
repeat_member = Postal::Member.new(new_member.email,"Duplicate",@config['list_name'])
|
27
|
+
assert !repeat_member.save
|
28
|
+
assert_raises(Postal::CouldNotCreateMember) { repeat_member.save! }
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_create_user_in_one_step
|
32
|
+
assert Postal::Member.create("john.doe#{rand(1000000)}@anonymous.com","John Doe", @config['list_name'])
|
33
|
+
assert Postal::Member.create!("john.doe#{rand(1000000)}@anonymous.com","John Doe", @config['list_name'])
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_can_update_user_demographics_after_creation
|
37
|
+
new_member = Postal::Member.create("john.doe#{rand(1000000)}@anonymous.com","John Doe", @config['list_name'])
|
38
|
+
assert new_member.update_attributes(:field_0 => 'Baseball')
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_can_create_user_and_demographics_at_creation
|
42
|
+
assert Postal::Member.create("john.doe#{rand(1000000)}@anonymous.com","John Doe", @config['list_name'], :field_0 => 'Baseball', :field_1 => 'Male')
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_can_find_member_by_id
|
46
|
+
new_member = Postal::Member.create("john.doe#{rand(1000000)}@anonymous.com","John Doe", @config['list_name'])
|
47
|
+
assert Postal::Member.find(new_member.id, @config['list_name'])
|
48
|
+
end
|
49
|
+
|
50
|
+
def test_can_find_member_by_email
|
51
|
+
new_member = Postal::Member.create("john.doe#{rand(1000000)}@anonymous.com","John Doe", @config['list_name'])
|
52
|
+
assert Postal::Member.find(new_member.email, @config['list_name'])
|
53
|
+
end
|
54
|
+
|
55
|
+
def test_can_find_member_by_filters
|
56
|
+
Postal::Member.create("john.doe#{rand(1000000)}@anonymous.com","John Doe", @config['list_name'])
|
57
|
+
assert Postal::Member.find_by_filter(["ListName=#{@config['list_name']}",'EmailAddress like john.doe%'])
|
58
|
+
end
|
59
|
+
|
60
|
+
def test_can_delete_member
|
61
|
+
new_member = Postal::Member.create("john.doe-delete@anonymous.com","John Doe", @config['list_name'])
|
62
|
+
assert Postal::Member.find(new_member.email, @config['list_name'])
|
63
|
+
Postal::Member.destroy(["ListName=#{@config['list_name']}","EmailAddress like john.doe-delete%"])
|
64
|
+
assert !Postal::Member.find(new_member.email, @config['list_name'])
|
65
|
+
end
|
66
|
+
|
67
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,22 @@
|
|
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
|
+
end
|
17
|
+
|
18
|
+
def delete_test_members
|
19
|
+
Postal::Member.destroy(["ListName=#{@config['list_name']}",'EmailAddress like john.doe%'])
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
metadata
ADDED
@@ -0,0 +1,80 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: cannikin-postal
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Rob Cameron
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2009-08-28 00:00:00 -07:00
|
13
|
+
default_executable:
|
14
|
+
dependencies: []
|
15
|
+
|
16
|
+
description: Lyris is an enterprise email service. Postal makes it easy for Ruby to talk to Lyris's API.
|
17
|
+
email: cannikinn@gmail.com
|
18
|
+
executables: []
|
19
|
+
|
20
|
+
extensions: []
|
21
|
+
|
22
|
+
extra_rdoc_files:
|
23
|
+
- LICENSE
|
24
|
+
- README.rdoc
|
25
|
+
files:
|
26
|
+
- .document
|
27
|
+
- .gitignore
|
28
|
+
- LICENSE
|
29
|
+
- README.rdoc
|
30
|
+
- Rakefile
|
31
|
+
- VERSION
|
32
|
+
- lib/postal.rb
|
33
|
+
- lib/postal/base.rb
|
34
|
+
- lib/postal/list.rb
|
35
|
+
- lib/postal/lmapi/lmapi.rb
|
36
|
+
- lib/postal/lmapi/lmapi_driver.rb
|
37
|
+
- lib/postal/lmapi/lmapi_mapping_registry.rb
|
38
|
+
- lib/postal/mailing.rb
|
39
|
+
- lib/postal/member.rb
|
40
|
+
- postal.gemspec
|
41
|
+
- test/list_test.rb
|
42
|
+
- test/lmapiClient.rb
|
43
|
+
- test/lyris_sample.yml
|
44
|
+
- test/mailing_test.rb
|
45
|
+
- test/member_test.rb
|
46
|
+
- test/postal_suite.rb
|
47
|
+
- test/test_helper.rb
|
48
|
+
has_rdoc: false
|
49
|
+
homepage: http://github.com/cannikin/postal
|
50
|
+
post_install_message:
|
51
|
+
rdoc_options:
|
52
|
+
- --charset=UTF-8
|
53
|
+
require_paths:
|
54
|
+
- lib
|
55
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
56
|
+
requirements:
|
57
|
+
- - ">="
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: "0"
|
60
|
+
version:
|
61
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
62
|
+
requirements:
|
63
|
+
- - ">="
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: "0"
|
66
|
+
version:
|
67
|
+
requirements: []
|
68
|
+
|
69
|
+
rubyforge_project:
|
70
|
+
rubygems_version: 1.2.0
|
71
|
+
signing_key:
|
72
|
+
specification_version: 3
|
73
|
+
summary: Gem for talking to the Lyris API
|
74
|
+
test_files:
|
75
|
+
- test/list_test.rb
|
76
|
+
- test/lmapiClient.rb
|
77
|
+
- test/mailing_test.rb
|
78
|
+
- test/member_test.rb
|
79
|
+
- test/postal_suite.rb
|
80
|
+
- test/test_helper.rb
|