simply_messages 0.0.2 → 0.1.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.
- data/.gitignore +1 -0
- data/.rspec +1 -0
- data/README.rdoc +4 -4
- data/Rakefile +1 -1
- data/lib/simply_messages/version.rb +1 -1
- data/simply_messages.gemspec +1 -1
- data/spec/app.rb +59 -0
- data/spec/controllers/users_controller_spec.rb +44 -0
- data/spec/spec_helper.rb +28 -0
- metadata +8 -6
- data/test/functional/helpers_test.rb +0 -81
- data/test/test_helper.rb +0 -11
data/.rspec
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
--color
|
data/README.rdoc
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
= simply_messages
|
|
2
2
|
|
|
3
|
-
simply_messages is a Rails plugin providing a unified notice/alert messages handling (like those: flash.now[:notice] = 'Yeah').
|
|
3
|
+
simply_messages is a Rails plugin providing a unified notice/alert messages handling (like those: flash.now[:notice] = 'Yeah') and model validation errors.
|
|
4
4
|
Based on the message_block by Ben Hughes (http://github.com/railsgarden/message_block).
|
|
5
5
|
|
|
6
6
|
|
|
@@ -37,7 +37,7 @@ In `app/views/layouts/application.html.erb`:
|
|
|
37
37
|
<%= messages_block %>
|
|
38
38
|
|
|
39
39
|
|
|
40
|
-
By default the messages_block function will display all flash[:notice] and flash[:alert] messages and all errors for model object associated by name with the current controller (so it will display all model errors for @user model when 'users' is the current controller).
|
|
40
|
+
By default the messages_block function will display all flash[:notice] and flash[:alert] messages and all errors for model object associated by name with the current controller (so it will display all model errors for @user model when 'users' is the current controller). It will also display appropriate messages for :success and :error flash keys.
|
|
41
41
|
|
|
42
42
|
We can also explicitly set the model we would like to display errors for, like this:
|
|
43
43
|
|
|
@@ -72,11 +72,11 @@ Given a User model instance with one validation error:
|
|
|
72
72
|
user.errors
|
|
73
73
|
=> #<OrderedHash {:name=>["can't be blank"]}>
|
|
74
74
|
|
|
75
|
-
and this in view in the users controller:
|
|
75
|
+
and this in the view in the users controller:
|
|
76
76
|
|
|
77
77
|
<%= messages_block %>
|
|
78
78
|
|
|
79
|
-
will render:
|
|
79
|
+
it will render:
|
|
80
80
|
|
|
81
81
|
<div class="alert">
|
|
82
82
|
<p>1 error prohibited this User from being saved:</p>
|
data/Rakefile
CHANGED
data/simply_messages.gemspec
CHANGED
|
@@ -13,7 +13,7 @@ Gem::Specification.new do |s|
|
|
|
13
13
|
s.summary = 'Unified flash notices and model error messages display solution'
|
|
14
14
|
s.description = 'simply_messages is a unified flash and error messages display solution'
|
|
15
15
|
|
|
16
|
-
s.rubyforge_project = '
|
|
16
|
+
s.rubyforge_project = 'simply-messages'
|
|
17
17
|
|
|
18
18
|
s.files = `git ls-files`.split("\n")
|
|
19
19
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
data/spec/app.rb
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
require 'active_record'
|
|
2
|
+
require 'action_controller/railtie'
|
|
3
|
+
require 'action_view/railtie'
|
|
4
|
+
|
|
5
|
+
# database
|
|
6
|
+
ActiveRecord::Base.configurations = { 'test' => { :adapter => 'sqlite3', :database => ':memory:' } }
|
|
7
|
+
ActiveRecord::Base.establish_connection 'test'
|
|
8
|
+
|
|
9
|
+
# config
|
|
10
|
+
app = Class.new(Rails::Application)
|
|
11
|
+
app.config.secret_token = "2jv9wver8j3haskhf23b4j51ho8f8vh1"
|
|
12
|
+
app.config.session_store :cookie_store, :key => "_simply_messages_session"
|
|
13
|
+
app.config.active_support.deprecation = :log
|
|
14
|
+
app.initialize!
|
|
15
|
+
|
|
16
|
+
# route
|
|
17
|
+
app.routes.draw do
|
|
18
|
+
resources :users, :only => [:index, :create]
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# model
|
|
22
|
+
class User < ActiveRecord::Base
|
|
23
|
+
validates_presence_of :name, :age
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
# controllers
|
|
27
|
+
class ApplicationController < ActionController::Base
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
class UsersController < ApplicationController
|
|
31
|
+
def index
|
|
32
|
+
flash.now[:notice] = 'Good'
|
|
33
|
+
flash.now[:success] = 'Good'
|
|
34
|
+
flash.now[:alert] = 'Not too good'
|
|
35
|
+
render :inline => "<%= messages_block %>"
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def create
|
|
39
|
+
@user = User.create(params[:user])
|
|
40
|
+
render :inline => "<%= messages_block %>"
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# helpers
|
|
45
|
+
Object.const_set(:ApplicationHelper, Module.new)
|
|
46
|
+
|
|
47
|
+
# migration
|
|
48
|
+
class CreateUsers < ActiveRecord::Migration
|
|
49
|
+
def self.up
|
|
50
|
+
create_table(:users) do |t|
|
|
51
|
+
t.string :name, :null => false
|
|
52
|
+
t.integer :age, :null => false
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
# I18n
|
|
58
|
+
I18n.backend.store_translations :en, :activerecord => { :errors => { :template => { :header => { :one => 'There is one error' } } } }
|
|
59
|
+
I18n.backend.store_translations :en, :activerecord => { :errors => { :template => { :header => { :other => 'There are %{count} errors' } } } }
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
require File.expand_path('../spec_helper', File.dirname(__FILE__))
|
|
2
|
+
|
|
3
|
+
describe UsersController do
|
|
4
|
+
|
|
5
|
+
render_views
|
|
6
|
+
|
|
7
|
+
describe "#index" do
|
|
8
|
+
before do
|
|
9
|
+
get :index
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
specify { response.should be_success }
|
|
13
|
+
|
|
14
|
+
specify { response.should have_selector('div.notice p', :content => 'Good') }
|
|
15
|
+
specify { response.should have_selector('div.success p', :content => 'Good') }
|
|
16
|
+
specify { response.should have_selector('div.alert p', :content => 'Not too good') }
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
describe "#create" do
|
|
20
|
+
context "without name" do
|
|
21
|
+
before do
|
|
22
|
+
post :create, :user => { :age => 21 }
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
specify { response.should be_success }
|
|
26
|
+
|
|
27
|
+
specify { response.should have_selector('div.alert p', :content => "error") }
|
|
28
|
+
specify { response.should have_selector('div.alert li', :content => "Name can't be blank") }
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
context "without name and age" do
|
|
32
|
+
before do
|
|
33
|
+
post :create
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
specify { response.should be_success }
|
|
37
|
+
|
|
38
|
+
specify { response.should have_selector('div.alert p', :content => "error") }
|
|
39
|
+
specify { response.should have_selector('div.alert li', :content => "Name can't be blank") }
|
|
40
|
+
specify { response.should have_selector('div.alert li', :content => "Age can't be blank") }
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
end
|
data/spec/spec_helper.rb
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
$:.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
|
2
|
+
$:.unshift(File.dirname(__FILE__))
|
|
3
|
+
|
|
4
|
+
require 'rails'
|
|
5
|
+
require 'simply_messages'
|
|
6
|
+
|
|
7
|
+
require File.join(File.dirname(__FILE__), 'app')
|
|
8
|
+
|
|
9
|
+
require 'rspec/rails'
|
|
10
|
+
|
|
11
|
+
# Requires supporting ruby files with custom matchers and macros, etc.
|
|
12
|
+
# in spec/support/ and its subdirectories.
|
|
13
|
+
Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f }
|
|
14
|
+
|
|
15
|
+
require "webrat"
|
|
16
|
+
|
|
17
|
+
Webrat.configure do |config|
|
|
18
|
+
config.mode = :rails
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
RSpec.configure do |config|
|
|
22
|
+
config.mock_with :rspec
|
|
23
|
+
|
|
24
|
+
# run migrations
|
|
25
|
+
config.before :all do
|
|
26
|
+
CreateUsers.up unless ActiveRecord::Base.connection.table_exists? 'users'
|
|
27
|
+
end
|
|
28
|
+
end
|
metadata
CHANGED
|
@@ -5,9 +5,9 @@ version: !ruby/object:Gem::Version
|
|
|
5
5
|
prerelease:
|
|
6
6
|
segments:
|
|
7
7
|
- 0
|
|
8
|
+
- 1
|
|
8
9
|
- 0
|
|
9
|
-
|
|
10
|
-
version: 0.0.2
|
|
10
|
+
version: 0.1.0
|
|
11
11
|
platform: ruby
|
|
12
12
|
authors:
|
|
13
13
|
- "Pawe\xC5\x82 Go\xC5\x9Bcicki"
|
|
@@ -15,7 +15,7 @@ autorequire:
|
|
|
15
15
|
bindir: bin
|
|
16
16
|
cert_chain: []
|
|
17
17
|
|
|
18
|
-
date: 2011-05-
|
|
18
|
+
date: 2011-05-20 00:00:00 +02:00
|
|
19
19
|
default_executable:
|
|
20
20
|
dependencies:
|
|
21
21
|
- !ruby/object:Gem::Dependency
|
|
@@ -117,6 +117,7 @@ extra_rdoc_files:
|
|
|
117
117
|
- README.rdoc
|
|
118
118
|
files:
|
|
119
119
|
- .gitignore
|
|
120
|
+
- .rspec
|
|
120
121
|
- Gemfile
|
|
121
122
|
- MIT-LICENSE
|
|
122
123
|
- README.rdoc
|
|
@@ -126,8 +127,9 @@ files:
|
|
|
126
127
|
- lib/simply_messages/railtie.rb
|
|
127
128
|
- lib/simply_messages/version.rb
|
|
128
129
|
- simply_messages.gemspec
|
|
129
|
-
-
|
|
130
|
-
-
|
|
130
|
+
- spec/app.rb
|
|
131
|
+
- spec/controllers/users_controller_spec.rb
|
|
132
|
+
- spec/spec_helper.rb
|
|
131
133
|
has_rdoc: true
|
|
132
134
|
homepage: https://github.com/pjg/simply_messages
|
|
133
135
|
licenses:
|
|
@@ -157,7 +159,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
157
159
|
version: "0"
|
|
158
160
|
requirements: []
|
|
159
161
|
|
|
160
|
-
rubyforge_project:
|
|
162
|
+
rubyforge_project: simply-messages
|
|
161
163
|
rubygems_version: 1.6.2
|
|
162
164
|
signing_key:
|
|
163
165
|
specification_version: 3
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
require File.dirname(__FILE__) + '/../test_helper'
|
|
2
|
-
require 'action_controller'
|
|
3
|
-
require 'action_controller/test_process'
|
|
4
|
-
|
|
5
|
-
class Mock
|
|
6
|
-
attr_accessor :errors
|
|
7
|
-
|
|
8
|
-
def initialize(opts = {})
|
|
9
|
-
# create Errors object so I could add errors to this mock model
|
|
10
|
-
@errors = ActiveRecord::Errors.new(self)
|
|
11
|
-
end
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
class MocksController < ApplicationController
|
|
15
|
-
def success
|
|
16
|
-
flash.now[:success] = 'We have a success'
|
|
17
|
-
render :inline => '<%= messages_block %>'
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
def notice
|
|
21
|
-
flash.now[:notice] = 'We have a notice'
|
|
22
|
-
render :inline => '<%= messages_block %>'
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
def error
|
|
26
|
-
flash.now[:error] = 'Error: no luck this time'
|
|
27
|
-
render :inline => '<%= messages_block %>'
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
def alert
|
|
31
|
-
flash.now[:alert] = 'Alert: no luck this time'
|
|
32
|
-
render :inline => '<%= messages_block %>'
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
def model_error
|
|
36
|
-
flash.now[:error] = 'Model error'
|
|
37
|
-
@mock = Mock.new
|
|
38
|
-
@mock.errors.add('name', 'just having some troubles')
|
|
39
|
-
render :inline => '<%= messages_block %>'
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
class MocksControllerTest < ActionController::TestCase
|
|
44
|
-
|
|
45
|
-
def setup
|
|
46
|
-
@controller = MocksController.new
|
|
47
|
-
@request = ActionController::TestRequest.new
|
|
48
|
-
@response = ActionController::TestResponse.new
|
|
49
|
-
|
|
50
|
-
ActionController::Routing::Routes.draw do |map|
|
|
51
|
-
map.connect ':controller/:action/:id'
|
|
52
|
-
end
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
def test_success
|
|
56
|
-
get :success
|
|
57
|
-
assert_select 'div.success p', :text => /We have a success./
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
def test_notice
|
|
61
|
-
get :notice
|
|
62
|
-
assert_select 'div.notice p', :text => /We have a notice./
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
def test_error
|
|
66
|
-
get :error
|
|
67
|
-
assert_select 'div.error p', :text => /Error: no luck this time./
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
def test_alert
|
|
71
|
-
get :alert
|
|
72
|
-
assert_select 'div.alert p', :text => /Alert: no luck this time./
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
def test_model_error
|
|
76
|
-
get :model_error
|
|
77
|
-
assert_select 'div.error p', :text => /Model error:/
|
|
78
|
-
assert_select 'div.error ul li', :text => /just having some troubles/
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
end
|
data/test/test_helper.rb
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
ENV['RAILS_ENV'] = 'test'
|
|
2
|
-
ENV['RAILS_ROOT'] ||= File.dirname(__FILE__) + '/../../../..'
|
|
3
|
-
|
|
4
|
-
# Optional gems
|
|
5
|
-
begin
|
|
6
|
-
require 'redgreen'
|
|
7
|
-
rescue LoadError
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
# Load Rails
|
|
11
|
-
require File.expand_path(File.join(ENV['RAILS_ROOT'], 'config/environment.rb'))
|