letter_opener-web 0.1.2 → 0.2.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d082c444b632a753df4f94e3bb8c96b6413af731
4
- data.tar.gz: dcea4c2c20c8f2ed378bb2f50fe2232ad2b1258b
3
+ metadata.gz: 3c7cdd2eff4d68d396704911da805e669a21a7c4
4
+ data.tar.gz: 831abdd6403869d3aedecc07a582c9392d625df2
5
5
  SHA512:
6
- metadata.gz: 5b470a9fa64cc55ccac666e93d6db92b7d1562894defad36fa762b324b2847a4dde3d34254eb2a15d7df909e682131eef2d2ac62dfa7cda6c85f0fa9b3e85c1c
7
- data.tar.gz: 5f5d298c366fb62aa78f43dbbb78a0b04af77b7255d8c33e0a91216511961d6223738ecd6bc76e0f790537e546988c6696c8436d042434f40ce6c4d1c58b1e98
6
+ metadata.gz: 21ce082ff79021ec0b5bd3bb009386b4fc6e8cb11711bdca6cfebf0724118345682f8af918f67e7581962299b267657690f7109cdf26e5d9838e27a3c2a27945
7
+ data.tar.gz: 5fd0793678165a9c7cbb8bbfed7f60264112f0a454081547566f6d00d86b880a6037aabec4a323c88a640a70fd018c04ac0c71673abfef8f5b2bb2650943fdd3
@@ -3,16 +3,18 @@ before_install: gem install bundler --pre
3
3
  install:
4
4
  - gem update --system
5
5
  - bundle update
6
+ script: xvfb-run rake
6
7
  rvm:
7
8
  - 1.9.3
8
9
  - 2.0.0
9
- - 2.1.1
10
- - rbx
11
- - jruby
10
+ - 2.1
11
+ - 2.2
12
+ - rbx-2
13
+ - jruby-19mode
12
14
  branches:
13
15
  only:
14
16
  - master
15
17
  matrix:
16
18
  allow_failures:
17
- - rvm: rbx
18
- - rvm: jruby
19
+ - rvm: rbx-2
20
+ - rvm: jruby-19mode
data/Gemfile CHANGED
@@ -1,4 +1,7 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- # Specify your gem's dependencies in letter_opener-web.gemspec
4
3
  gemspec
4
+
5
+ group :development, :test do
6
+ gem 'coveralls', :require => false
7
+ end
data/README.md CHANGED
@@ -1,7 +1,13 @@
1
1
  # LetterOpener::Web
2
2
 
3
+ ## Notice
4
+ This project moved to [Goatmail](https://github.com/tyabe/goatmail).
5
+
3
6
  [![Gem Version](https://badge.fury.io/rb/letter_opener-web.svg)](http://badge.fury.io/rb/letter_opener-web)
4
7
  [![Build Status](https://travis-ci.org/tyabe/letter_opener-web.svg)](https://travis-ci.org/tyabe/letter_opener-web)
8
+ [![Coverage Status](https://coveralls.io/repos/tyabe/letter_opener-web/badge.png)](https://coveralls.io/r/tyabe/letter_opener-web)
9
+ [![Code Climate](https://codeclimate.com/github/tyabe/letter_opener-web.png)](https://codeclimate.com/github/tyabe/letter_opener-web)
10
+ [![Dependency Status](https://gemnasium.com/tyabe/letter_opener-web.svg)](https://gemnasium.com/tyabe/letter_opener-web)
5
11
 
6
12
  A Sinatra-based frontend to the [letter_opener](https://github.com/ryanb/letter_opener).
7
13
  This provides almost the same feature as the [letter_opener_web](https://github.com/fgrehm/letter_opener_web).
@@ -13,6 +13,12 @@ Gem::Specification.new do |spec|
13
13
  spec.homepage = "http://github.com/tyabe/letter_opener-web"
14
14
  spec.license = "MIT"
15
15
 
16
+ spec.post_install_message = <<-MESSAGE
17
+ ! The 'letter_opener-web' gem has been deprecated and has been replaced by 'goatmail'.
18
+ ! See: https://rubygems.org/gems/goatmail
19
+ ! And: https://github.com/tyabe/goatmail
20
+ MESSAGE
21
+
16
22
  spec.files = `git ls-files -z`.split("\x0")
17
23
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
24
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
@@ -27,4 +33,8 @@ Gem::Specification.new do |spec|
27
33
  spec.add_development_dependency "minitest-power_assert"
28
34
  spec.add_development_dependency "rack-test"
29
35
  spec.add_development_dependency "mail"
36
+ spec.add_development_dependency 'capybara'
37
+ spec.add_development_dependency 'capybara-webkit'
38
+ spec.add_development_dependency 'capybara_minitest_spec'
39
+ spec.add_development_dependency 'poltergeist'
30
40
  end
@@ -11,7 +11,7 @@ module LetterOpener
11
11
 
12
12
  enable :method_override
13
13
 
14
- if defined?(Padrino)
14
+ if defined?(Padrino) && Padrino.version < '0.13.0'
15
15
  def self.setup_application!; end
16
16
  def self.dependencies; []; end
17
17
  def self.reload!; end
@@ -21,6 +21,12 @@ module LetterOpener
21
21
  end
22
22
  end
23
23
 
24
+ helpers do
25
+ def h(text)
26
+ Rack::Utils.escape_html(text)
27
+ end
28
+ end
29
+
24
30
  def root_path
25
31
  "#{env['SCRIPT_NAME']}/"
26
32
  end
@@ -20,6 +20,20 @@ jQuery(function($) {
20
20
  if (ids.length <= 0) { return false; }
21
21
  var self = $(this), message = self.data('confirm');
22
22
  if (message && !confirm(message)) { return false; }
23
- $(this).find(':hidden[name=message_ids]').val(ids);
23
+ self.find('button[type=submit]').attr("disabled", "disabled");
24
+ self.find(':hidden[name=message_ids]').val(ids);
25
+ });
26
+ $('#refresh').on('click', function(e) {
27
+ var self = $(this);
28
+ var icon = self.find( ".glyphicon" );
29
+ icon.addClass( "glyphicon-animate" );
30
+ });
31
+ $('#search').on('submit', function(e) {
32
+ e.preventDefault();
33
+ });
34
+ $('.message_list').searcher({
35
+ itemSelector: 'li',
36
+ textSelector: 'dt',
37
+ inputSelector: '#search_input'
24
38
  });
25
39
  });
@@ -0,0 +1,5 @@
1
+ /*! jQuery Searcher Plugin - v0.1.0 - 2014-01-06
2
+ * https://github.com/lloiser/jquery-searcher/
3
+ * Copyright (c) 2014 Lukas Beranek; Licensed MIT
4
+ */
5
+ !function(a){"use strict";function b(b,c){this.element=b,this.options=a.extend({},e,c),this._create()}var c="searcher",d="plugin_"+c,e={itemSelector:"tbody > tr",textSelector:"td",inputSelector:"",caseSensitive:!1,toggle:function(b,c){a(b).toggle(c)}};b.prototype={_create:function(){this._$element=a(this.element);var b=a.proxy(this._onValueChange,this);this._$input=a(this.options.inputSelector).bind("input change keyup",b),this._lastValue=""},_onValueChange:function(){var b=this.options,c=b.textSelector,d=b.caseSensitive,e=b.toggle,f=this._$input.val();d||(f=f.toLowerCase()),f!==this._lastValue&&(this._lastValue=f,this._$element.find(b.itemSelector).each(function(){var b=a(this),g=b;c&&(g=b.find(c)),g=g.filter(function(){var b=a(this).text();return d||(b=b.toLowerCase()),b.indexOf(f)>=0}),e(this,g.length>0)}))}},a.fn[c]=function(c){return this.each(function(){var e=a.data(this,d);e?a.extend(e.options,c):a.data(this,d,new b(this,c))})}}(jQuery,window,document);
@@ -56,6 +56,14 @@ input[type="checkbox"] + label {
56
56
  #delete {
57
57
  display:inline;
58
58
  }
59
+ #search {
60
+ top: 0px;
61
+ left: 128px;
62
+ position: absolute;
63
+ }
64
+ #search .form-control-feedback {
65
+ right: 0px;
66
+ }
59
67
  .left {
60
68
  overflow-y: auto;
61
69
  margin-top: 96px;
@@ -118,3 +126,13 @@ li.message.active {
118
126
  li.message.active a {
119
127
  color: #fff;
120
128
  }
129
+ .glyphicon-animate {
130
+ animation-name: rotateThis;
131
+ animation-duration: .5s;
132
+ animation-iteration-count: infinite;
133
+ animation-timing-function: linear;
134
+ }
135
+ @keyframes rotateThis {
136
+ from { transform: scale( 1 ) rotate( 0deg ); }
137
+ to { transform: scale( 1 ) rotate( 360deg ); }
138
+ }
@@ -6,6 +6,6 @@ module LetterOpener
6
6
  ActionMailer::Base.add_delivery_method :letter_opener, LetterOpener::DeliveryMethod, :location => Rails.root.join("tmp", "letter_opener")
7
7
  end
8
8
  end
9
- end
9
+ end if defined?(::Rails)
10
10
  end
11
11
  end
@@ -1,5 +1,5 @@
1
1
  module LetterOpener
2
2
  module Web
3
- VERSION = "0.1.2"
3
+ VERSION = "0.2.0"
4
4
  end
5
5
  end
@@ -19,9 +19,15 @@
19
19
  <span class="glyphicon glyphicon-trash"></span>
20
20
  </button>
21
21
  </form>
22
- <a class="btn btn-primary refresh" href="<%= root_path %>">
22
+ <a id="refresh" class="btn btn-primary refresh" href="<%= root_path %>">
23
23
  <span class="glyphicon glyphicon-refresh"></span>
24
24
  </a>
25
+ <form id="search" class="form-horizontal">
26
+ <div class="form-group has-feedback">
27
+ <input id="search_input" class="form-control" />
28
+ <span class="form-control-feedback glyphicon glyphicon-search"></span>
29
+ </div>
30
+ </form>
25
31
  </div>
26
32
  </li>
27
33
  </ul>
@@ -35,7 +41,7 @@
35
41
  <label for="message_<%= message.id %>"></label>
36
42
  <a href="<%= root_path + message.id %>" target='mail'>
37
43
  <dl>
38
- <dt><%= message.info[:subject] || message.id %></dt>
44
+ <dt><%=h message.info[:subject] || message.id %></dt>
39
45
  <dd class="text-right"><small><%= message.sent_at %></small></dd>
40
46
  </dl>
41
47
  </a>
@@ -9,6 +9,7 @@
9
9
  <link href="<%= root_path %>stylesheets/application.css" media="screen" rel="stylesheet" type="text/css" />
10
10
  <script type="text/javascript" src="<%= root_path %>javascripts/jquery.min.js"></script>
11
11
  <script type="text/javascript" src="<%= root_path %>javascripts/bootstrap.min.js"></script>
12
+ <script type="text/javascript" src="<%= root_path %>javascripts/jquery.searcher.min.js"></script>
12
13
  <script type="text/javascript" src="<%= root_path %>javascripts/application.js"></script>
13
14
  </head>
14
15
  <body>
@@ -3,14 +3,23 @@ require 'rack/test'
3
3
  require 'minitest/autorun'
4
4
  require 'minitest/pride'
5
5
  require 'minitest/spec'
6
+ require 'capybara'
7
+ require 'capybara/dsl'
8
+ require 'capybara/webkit'
9
+ require 'capybara/poltergeist'
6
10
  require 'mail'
7
11
  require 'letter_opener/web'
8
- if RUBY_VERSION >= '2.0'
12
+ if /^ruby/ =~ RUBY_DESCRIPTION && RUBY_VERSION >= '2.0'
9
13
  require 'minitest-power_assert'
10
14
  end
15
+ if ENV['TRAVIS']
16
+ require 'coveralls'
17
+ Coveralls.wear!
18
+ end
11
19
 
12
20
  class MiniTest::Spec
13
21
  include Rack::Test::Methods
22
+ include Capybara::DSL
14
23
  def app
15
24
  LetterOpener::Web::App
16
25
  end
@@ -31,3 +40,7 @@ end
31
40
  MiniTest::Spec.after do
32
41
  FileUtils.rm_rf(test_location)
33
42
  end
43
+
44
+ Capybara.app = LetterOpener::Web::App
45
+ Capybara.default_driver = :webkit
46
+ Capybara.javascript_driver = :poltergeist
@@ -0,0 +1,38 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/helper')
2
+
3
+ describe LetterOpener::Web::App do
4
+
5
+ before do
6
+ Mail.new {
7
+ from 'foo@example.com'
8
+ to 'bar@example.com'
9
+ subject '<h1>Hello</h1>'
10
+ body 'World!'
11
+ }.deliver!
12
+ end
13
+
14
+ it 'can display index' do
15
+ visit '/'
16
+
17
+ assert_equal page.status_code, 200
18
+ assert page.has_content? 'Hello'
19
+ within_frame 'mail' do
20
+ assert ! page.has_content?('World!')
21
+ end
22
+ end
23
+
24
+ it 'can display message' do
25
+ visit '/'
26
+ click_link 'Hello'
27
+
28
+ within_frame 'mail' do
29
+ assert page.has_content? 'World!'
30
+ end
31
+ end
32
+
33
+ it 'subject of the message are escaped' do
34
+ visit '/'
35
+ assert page.has_content? '<h1>Hello</h1>'
36
+ end
37
+
38
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: letter_opener-web
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Takeshi Yabe
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-06-18 00:00:00.000000000 Z
11
+ date: 2014-12-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: letter_opener
@@ -122,6 +122,62 @@ dependencies:
122
122
  - - ">="
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: capybara
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: capybara-webkit
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: capybara_minitest_spec
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: poltergeist
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
125
181
  description: a Sinatra Application to browse the email sent by letter_opener
126
182
  email: tyabe@nilidea.com
127
183
  executables: []
@@ -145,6 +201,7 @@ files:
145
201
  - lib/letter_opener/web/assets/javascripts/application.js
146
202
  - lib/letter_opener/web/assets/javascripts/bootstrap.min.js
147
203
  - lib/letter_opener/web/assets/javascripts/jquery.min.js
204
+ - lib/letter_opener/web/assets/javascripts/jquery.searcher.min.js
148
205
  - lib/letter_opener/web/assets/stylesheets/application.css
149
206
  - lib/letter_opener/web/assets/stylesheets/bootstrap.min.css
150
207
  - lib/letter_opener/web/message.rb
@@ -153,13 +210,17 @@ files:
153
210
  - lib/letter_opener/web/views/index.erb
154
211
  - lib/letter_opener/web/views/layout.erb
155
212
  - test/helper.rb
213
+ - test/test_app.rb
156
214
  - test/test_delivery_method.rb
157
215
  - test/test_message.rb
158
216
  homepage: http://github.com/tyabe/letter_opener-web
159
217
  licenses:
160
218
  - MIT
161
219
  metadata: {}
162
- post_install_message:
220
+ post_install_message: |2
221
+ ! The 'letter_opener-web' gem has been deprecated and has been replaced by 'goatmail'.
222
+ ! See: https://rubygems.org/gems/goatmail
223
+ ! And: https://github.com/tyabe/goatmail
163
224
  rdoc_options: []
164
225
  require_paths:
165
226
  - lib
@@ -175,11 +236,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
175
236
  version: '0'
176
237
  requirements: []
177
238
  rubyforge_project:
178
- rubygems_version: 2.2.2
239
+ rubygems_version: 2.4.5
179
240
  signing_key:
180
241
  specification_version: 4
181
242
  summary: Sinatra-based letter_opener web interface
182
243
  test_files:
183
244
  - test/helper.rb
245
+ - test/test_app.rb
184
246
  - test/test_delivery_method.rb
185
247
  - test/test_message.rb