mailer 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,46 @@
1
+ module Mailer
2
+ module Config
3
+
4
+ # Defaultapi domain
5
+ DEFAULT_API_DOMAIN = 'http://127.0.0.1:80/api/'
6
+
7
+ # Defailt api token
8
+ DEFAULT_API_TOKEN = nil
9
+
10
+ # Valid options keys
11
+ VALID_OPTIONS_KEYS = [
12
+ :api_token,
13
+ :api_domain
14
+ ]
15
+
16
+ # Valid options accessor
17
+ attr_accessor *VALID_OPTIONS_KEYS
18
+
19
+ def self.extended(base)
20
+ base.reset
21
+ end
22
+
23
+ def configure
24
+ yield self
25
+ self
26
+ end
27
+
28
+ # Create a hash of options and their values
29
+ #
30
+ # @return [Hash]
31
+ def options
32
+ options = {}
33
+ VALID_OPTIONS_KEYS.each{|k| options[k] = send(k)}
34
+ options
35
+ end
36
+
37
+ # Reset config
38
+ #
39
+ # @return [self]
40
+ def reset
41
+ self.api_token = DEFAULT_API_TOKEN
42
+ self.api_domain = DEFAULT_API_DOMAIN
43
+ self
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,3 @@
1
+ module Mailer
2
+ VERSION = "0.0.4"
3
+ end
@@ -0,0 +1,20 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require File.expand_path('../lib/mailer/version', __FILE__)
3
+
4
+ Gem::Specification.new do |gem|
5
+ gem.name = "mailer"
6
+ gem.require_paths = ["lib"]
7
+ gem.version = Mailer::VERSION
8
+ gem.authors = ["Andrey Subbota"]
9
+ gem.email = ["subbota@gmail.com"]
10
+ gem.description = %q{Mailer interface}
11
+ gem.summary = %q{Mailer interface}
12
+ gem.homepage = ""
13
+
14
+ gem.add_development_dependency 'undev'
15
+ gem.add_dependency "unweary", '~> 1.0.2'
16
+
17
+ gem.files = `git ls-files`.split($\)
18
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
19
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
20
+ end
@@ -0,0 +1,72 @@
1
+ require 'test_helper'
2
+ require 'webmock/minitest'
3
+
4
+ class Mailer::ClientTest < MiniTest::Unit::TestCase
5
+
6
+ def setup
7
+ @api_token = 'token'
8
+ @api_domain = 'http://127.0.0.1/'
9
+
10
+ Mailer.configure do |config|
11
+ config.api_token = @api_token
12
+ config.api_domain = @api_domain
13
+ end
14
+ @client = Mailer::Client.new(:api_token => @api_token)
15
+ end
16
+
17
+ def test_should_get_instanse
18
+ assert_kind_of(Mailer::Client, @client)
19
+ end
20
+
21
+ def test_should_send_letter
22
+ letter = {
23
+ :reply_email => 'user@example.com',
24
+ :reply_name => 'user',
25
+ :id => 1,
26
+ :body => 'body',
27
+ :subject => 'subject'
28
+ }
29
+ stub_request = stub_request(:post, "#{@api_domain}/api/client/letters.json")
30
+ .with(:body => {
31
+ "letter" => {
32
+ "body" => "body",
33
+ "reply_email" => "user@example.com",
34
+ "reply_name" => "user",
35
+ "subject" => "subject"
36
+ },
37
+ "id" => "1",
38
+ "api_token" => @api_token
39
+ })
40
+ @client.send_letter letter
41
+
42
+ assert_requested stub_request
43
+ end
44
+
45
+ def test_should_subscribe_user
46
+ stub_request = stub_request(:put, "#{@api_domain}/api/client/lists/1/subscribe.json")
47
+ .with(:body => {
48
+ "email" => "user@example.com",
49
+ "api_token" => @api_token
50
+ })
51
+ .to_return(:status => 200, :body => "", :headers => {})
52
+
53
+ @client.subscribe_user :email => 'user@example.com', :id => 1
54
+ assert_requested stub_request
55
+ end
56
+
57
+ def test_should_create_maillist
58
+ stub_request = stub_request(:post, "#{@api_domain}/api/client/lists.json")
59
+ .with(:body => {
60
+ "list" => {
61
+ "name" => "name",
62
+ "id" => "id"
63
+ },
64
+ "api_token" => @api_token
65
+ })
66
+ .to_return(:status => 200, :body => "", :headers => {})
67
+
68
+ @client.create_maillist :name => 'name', :id => 'id'
69
+ assert_requested stub_request
70
+ end
71
+
72
+ end
@@ -0,0 +1,2 @@
1
+ require 'minitest/unit'
2
+ require 'mailer'
metadata ADDED
@@ -0,0 +1,109 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mailer
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.4
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Andrey Subbota
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-06-13 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: undev
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: unweary
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: 1.0.2
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: 1.0.2
46
+ description: Mailer interface
47
+ email:
48
+ - subbota@gmail.com
49
+ executables: []
50
+ extensions: []
51
+ extra_rdoc_files: []
52
+ files:
53
+ - .gitignore
54
+ - Gemfile
55
+ - LICENSE
56
+ - README.md
57
+ - Rakefile
58
+ - doc/Mailer.html
59
+ - doc/Mailer/Client.html
60
+ - doc/Mailer/Config.html
61
+ - doc/_index.html
62
+ - doc/class_list.html
63
+ - doc/css/common.css
64
+ - doc/css/full_list.css
65
+ - doc/css/style.css
66
+ - doc/file.README.html
67
+ - doc/file_list.html
68
+ - doc/frames.html
69
+ - doc/index.html
70
+ - doc/js/app.js
71
+ - doc/js/full_list.js
72
+ - doc/js/jquery.js
73
+ - doc/method_list.html
74
+ - doc/top-level-namespace.html
75
+ - lib/mailer.rb
76
+ - lib/mailer/client.rb
77
+ - lib/mailer/config.rb
78
+ - lib/mailer/version.rb
79
+ - mailer.gemspec
80
+ - test/mailer/client_test.rb
81
+ - test/test_helper.rb
82
+ homepage: ''
83
+ licenses: []
84
+ post_install_message:
85
+ rdoc_options: []
86
+ require_paths:
87
+ - lib
88
+ required_ruby_version: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ required_rubygems_version: !ruby/object:Gem::Requirement
95
+ none: false
96
+ requirements:
97
+ - - ! '>='
98
+ - !ruby/object:Gem::Version
99
+ version: '0'
100
+ requirements: []
101
+ rubyforge_project:
102
+ rubygems_version: 1.8.23
103
+ signing_key:
104
+ specification_version: 3
105
+ summary: Mailer interface
106
+ test_files:
107
+ - test/mailer/client_test.rb
108
+ - test/test_helper.rb
109
+ has_rdoc: