godmin 1.1.0 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -0
- data/README.md +31 -12
- data/lib/godmin/helpers/forms.rb +4 -2
- data/lib/godmin/helpers/tables.rb +3 -1
- data/lib/godmin/resolver.rb +2 -2
- data/lib/godmin/resources/resource_service/ordering.rb +16 -2
- data/lib/godmin/version.rb +1 -1
- data/test/dummy/app/controllers/authenticated_articles_controller.rb +11 -0
- data/test/dummy/app/controllers/authorized_articles_controller.rb +11 -0
- data/test/dummy/app/controllers/sessions_controller.rb +6 -1
- data/test/dummy/app/models/article.rb +9 -0
- data/test/dummy/app/policies/article_policy.rb +13 -0
- data/test/dummy/app/services/article_service.rb +7 -3
- data/test/dummy/config/routes.rb +2 -1
- data/test/dummy/db/migrate/20150717121532_create_articles.rb +1 -0
- data/test/dummy/db/schema.rb +4 -3
- data/test/fakes/article.rb +7 -0
- data/test/fakes/article_service.rb +6 -1
- data/test/integration/authentication_test.rb +17 -0
- data/test/integration/authorization_test.rb +32 -0
- data/test/integration/column_ordering_test.rb +12 -0
- data/test/integration/crud_test.rb +67 -0
- data/test/integration/{column_overriding_test.rb → view_overriding/column_overriding_test.rb} +0 -0
- data/test/integration/{filter_overriding_test.rb → view_overriding/filter_overriding_test.rb} +0 -0
- data/test/integration/{partial_overriding_test.rb → view_overriding/partial_overriding_test.rb} +0 -0
- data/test/integration/{template_overriding_test.rb → view_overriding/template_overriding_test.rb} +0 -0
- data/test/lib/godmin/resources/resource_service/ordering_test.rb +7 -7
- metadata +22 -20
- data/test/dummy/app/controllers/secret_articles_controller.rb +0 -3
- data/test/dummy/app/controllers/secret_controller.rb +0 -7
- data/test/dummy/app/models/secret_article.rb +0 -2
- data/test/dummy/app/services/secret_article_service.rb +0 -2
- data/test/integration/sign_in_test.rb +0 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5485225c54b1b8d9dec2a7d5d01aafe12f6109fa
|
4
|
+
data.tar.gz: f9ccde13580100c1134bc45701bd4e06cd4222f7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f2312da3947f533300714a819f812d1d2bfbffafe20d93fbf6a74c8aff1262e3587218e3116d7edf64d16248ff78022f7fe2addf103adfe6e26c863aada8e297
|
7
|
+
data.tar.gz: 34df58f5528358d065426c1ffae18619b1f431ec341ab9bfc5de4344b2bfdfbd2c3590702674ddb8d3b76d9ccc20742ba71c1b0a4317644a99e955d0adc7205c
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,13 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
### 1.2.0 - 2016-02-02
|
4
|
+
Features
|
5
|
+
- Adds support for custom ordering of columns (https://github.com/varvet/godmin/pull/168)
|
6
|
+
- Adds passing of html options to association helper (https://github.com/varvet/godmin/pull/176)
|
7
|
+
|
8
|
+
Bug fixes:
|
9
|
+
- Fixes an issue with the template resolver and Rails 4.2.5.1 (https://github.com/varvet/godmin/pull/175)
|
10
|
+
|
3
11
|
### 1.1.0 - 2015-12-08
|
4
12
|
Features
|
5
13
|
- Adds locale for pt-BR (Brazilian Portuguese) (https://github.com/varvet/godmin/pull/141)
|
data/README.md
CHANGED
@@ -12,24 +12,25 @@ Godmin differs from tools like [ActiveAdmin](http://activeadmin.info/) and [Rail
|
|
12
12
|
![Screenshot](https://raw.githubusercontent.com/varvet/godmin/master/screenshot.png)
|
13
13
|
|
14
14
|
- [Installation](#installation)
|
15
|
-
|
16
|
-
|
17
|
-
|
15
|
+
- [Standalone installation](#standalone-installation)
|
16
|
+
- [Engine installation](#engine-installation)
|
17
|
+
- [Installation artefacts](#installation-artefacts)
|
18
18
|
- [Getting started](#getting-started)
|
19
19
|
- [Resources](#resources)
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
20
|
+
- [Scopes](#scopes)
|
21
|
+
- [Filters](#filters)
|
22
|
+
- [Batch actions](#batch-actions)
|
23
|
+
- [Custom ordering](#custom-ordering)
|
24
|
+
- [Resource fetching, building and saving](#resource-fetching-building-and-saving)
|
25
|
+
- [Redirecting](#redirecting)
|
26
|
+
- [Pagination](#pagination)
|
27
|
+
- [Exporting](#exporting)
|
27
28
|
- [Views](#views)
|
28
29
|
- [Forms](#forms)
|
29
30
|
- [Navigation](#navigation)
|
30
31
|
- [Authentication](#authentication)
|
31
|
-
|
32
|
-
|
32
|
+
- [Built in authentication](#built-in-authentication)
|
33
|
+
- [Shared authentication](#shared-authentication)
|
33
34
|
- [Authorization](#authorization)
|
34
35
|
- [Localization](#localization)
|
35
36
|
- [JavaScript](#javascript)
|
@@ -273,6 +274,24 @@ end
|
|
273
274
|
|
274
275
|
If you are using Godmin's built in authorization functionality you must [authorize your batch actions in your policy](#batch-action-authorization).
|
275
276
|
|
277
|
+
### Custom ordering
|
278
|
+
|
279
|
+
By default, Godmin supports ordering of database columns in the index view table. However, it cannot automatically sort associations, custom attributes and so on.
|
280
|
+
If you want to order something that Godmin doesn't support out of the box, or you just want to customize how a columns is ordered, you can implement your own ordering functionality in the service object by creating a `order_by_<attribute>` method.
|
281
|
+
|
282
|
+
```ruby
|
283
|
+
class ArticleService
|
284
|
+
include Godmin::Resources::ResourceService
|
285
|
+
attrs_for_index :title, :author
|
286
|
+
|
287
|
+
# resources is an ActiveRecord::Relation object
|
288
|
+
# direction is the order direction ("asc" or "desc")
|
289
|
+
def order_by_author(resources, direction)
|
290
|
+
resources.joins(:authors).order("authors.name #{direction}")
|
291
|
+
end
|
292
|
+
end
|
293
|
+
```
|
294
|
+
|
276
295
|
### Resource fetching, building and saving
|
277
296
|
|
278
297
|
Resources are made available to the views through instance variables. The index view can access the resources using `@resources` while show, new and edit can access the single resource using `@resource`. In addition, the resource class is available as `@resource_class` and the service object is available as `@resource_service`.
|
data/lib/godmin/helpers/forms.rb
CHANGED
@@ -24,10 +24,12 @@ module Godmin
|
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
27
|
-
def association(attribute, options = {})
|
27
|
+
def association(attribute, options = {}, html_options = {})
|
28
28
|
case association_type(attribute)
|
29
29
|
when :belongs_to
|
30
|
-
select
|
30
|
+
select("#{attribute}_id", association_collection_for_select(attribute), options, html_options.deep_merge(
|
31
|
+
data: { behavior: "select-box" }
|
32
|
+
))
|
31
33
|
else
|
32
34
|
input(attribute, options)
|
33
35
|
end
|
@@ -2,13 +2,15 @@ module Godmin
|
|
2
2
|
module Helpers
|
3
3
|
module Tables
|
4
4
|
def column_header(attribute)
|
5
|
-
if @
|
5
|
+
if @resource_service.orderable_column?(attribute.to_s)
|
6
6
|
direction =
|
7
7
|
if params[:order].present?
|
8
8
|
if params[:order].match(/\A#{attribute.to_s}_(asc|desc)\z/)
|
9
9
|
$1 == "desc" ? "asc" : "desc"
|
10
10
|
elsif params[:order].match(/\A\w+_(asc|desc)\z/)
|
11
11
|
$1
|
12
|
+
else
|
13
|
+
"desc"
|
12
14
|
end
|
13
15
|
else
|
14
16
|
"desc"
|
data/lib/godmin/resolver.rb
CHANGED
@@ -13,14 +13,14 @@ module Godmin
|
|
13
13
|
@engine_wrapper = engine_wrapper
|
14
14
|
end
|
15
15
|
|
16
|
-
def find_templates(name, prefix,
|
16
|
+
def find_templates(name, prefix, *args)
|
17
17
|
templates = []
|
18
18
|
|
19
19
|
template_paths(prefix).each do |path|
|
20
20
|
if templates.present?
|
21
21
|
break
|
22
22
|
else
|
23
|
-
templates = super(name, path,
|
23
|
+
templates = super(name, path, *args)
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
@@ -5,21 +5,35 @@ module Godmin
|
|
5
5
|
extend ActiveSupport::Concern
|
6
6
|
|
7
7
|
def apply_order(order_param, resources)
|
8
|
-
if order_param.present?
|
8
|
+
if order_param.present? && order_column_method?(order_column(order_param))
|
9
|
+
send("order_by_#{order_column(order_param)}", resources, order_direction(order_param))
|
10
|
+
elsif order_param.present? && order_column_column?(order_column(order_param))
|
9
11
|
resources.order("#{resource_class.table_name}.#{order_column(order_param)} #{order_direction(order_param)}")
|
10
12
|
else
|
11
13
|
resources
|
12
14
|
end
|
13
15
|
end
|
14
16
|
|
17
|
+
def orderable_column?(column)
|
18
|
+
order_column_method?(column) || order_column_column?(column)
|
19
|
+
end
|
20
|
+
|
15
21
|
protected
|
16
22
|
|
23
|
+
def order_column_method?(column)
|
24
|
+
respond_to?("order_by_#{column}")
|
25
|
+
end
|
26
|
+
|
27
|
+
def order_column_column?(column)
|
28
|
+
resource_class.column_names.include?(column)
|
29
|
+
end
|
30
|
+
|
17
31
|
def order_column(order_param)
|
18
32
|
order_param.rpartition("_").first
|
19
33
|
end
|
20
34
|
|
21
35
|
def order_direction(order_param)
|
22
|
-
order_param.rpartition("_").last
|
36
|
+
order_param.rpartition("_").last == "asc" ? "asc" : "desc"
|
23
37
|
end
|
24
38
|
end
|
25
39
|
end
|
data/lib/godmin/version.rb
CHANGED
@@ -1,9 +1,13 @@
|
|
1
1
|
class ArticleService
|
2
2
|
include Godmin::Resources::ResourceService
|
3
3
|
|
4
|
-
attrs_for_index :id, :title, :published, :created_at
|
5
|
-
attrs_for_show :id, :title, :body, :published
|
6
|
-
attrs_for_form :title, :body, :published
|
4
|
+
attrs_for_index :id, :title, :non_orderable_column, :admin_user, :published, :created_at
|
5
|
+
attrs_for_show :id, :title, :body, :admin_user, :published
|
6
|
+
attrs_for_form :title, :body, :admin_user, :published
|
7
|
+
|
8
|
+
def order_by_admin_user(resources, direction)
|
9
|
+
resources.joins(:admin_users).order("admin_users.email #{direction}")
|
10
|
+
end
|
7
11
|
|
8
12
|
scope :unpublished
|
9
13
|
scope :published
|
data/test/dummy/config/routes.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
Rails.application.routes.draw do
|
2
2
|
resources :articles
|
3
|
-
resources :
|
3
|
+
resources :authenticated_articles
|
4
|
+
resources :authorized_articles
|
4
5
|
resource :session, only: [:new, :create, :destroy]
|
5
6
|
root to: "application#welcome"
|
6
7
|
mount Admin::Engine, at: "admin"
|
data/test/dummy/db/schema.rb
CHANGED
@@ -23,9 +23,10 @@ ActiveRecord::Schema.define(version: 20150907133753) do
|
|
23
23
|
create_table "articles", force: :cascade do |t|
|
24
24
|
t.string "title"
|
25
25
|
t.text "body"
|
26
|
-
t.boolean "published",
|
27
|
-
t.
|
28
|
-
t.datetime "
|
26
|
+
t.boolean "published", default: false
|
27
|
+
t.integer "admin_user_id"
|
28
|
+
t.datetime "created_at", null: false
|
29
|
+
t.datetime "updated_at", null: false
|
29
30
|
end
|
30
31
|
|
31
32
|
end
|
data/test/fakes/article.rb
CHANGED
@@ -21,7 +21,7 @@ module Fakes
|
|
21
21
|
|
22
22
|
def initialize(*)
|
23
23
|
super
|
24
|
-
@called_methods = { scopes: {}, filters: {}, batch_actions: {} }
|
24
|
+
@called_methods = { scopes: {}, filters: {}, batch_actions: {}, ordering: {} }
|
25
25
|
end
|
26
26
|
|
27
27
|
def resource_class
|
@@ -32,6 +32,11 @@ module Fakes
|
|
32
32
|
[:foo, :bar, :baz]
|
33
33
|
end
|
34
34
|
|
35
|
+
def order_by_foobar(resources, direction)
|
36
|
+
called_methods[:ordering][:by_foobar] = [resources, direction]
|
37
|
+
resources
|
38
|
+
end
|
39
|
+
|
35
40
|
def scope_unpublished(resources)
|
36
41
|
called_methods[:scopes][:unpublished] = resources
|
37
42
|
resources.slice(1, 3)
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
class AuthenticationTest < ActionDispatch::IntegrationTest
|
4
|
+
def test_sign_in_and_out
|
5
|
+
AdminUser.create!(email: "admin@example.com", password: "password")
|
6
|
+
visit authenticated_articles_path
|
7
|
+
assert_not_equal authenticated_articles_path, current_path
|
8
|
+
fill_in "Email", with: "admin@example.com"
|
9
|
+
fill_in "Password", with: "password"
|
10
|
+
click_button "Sign in"
|
11
|
+
visit authenticated_articles_path
|
12
|
+
assert_equal authenticated_articles_path, current_path
|
13
|
+
click_link "Sign out"
|
14
|
+
visit authenticated_articles_path
|
15
|
+
assert_not_equal authenticated_articles_path, current_path
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
class AuthorizationTest < ActionDispatch::IntegrationTest
|
4
|
+
def test_can_index?
|
5
|
+
visit authorized_articles_path
|
6
|
+
assert_equal 200, page.status_code
|
7
|
+
end
|
8
|
+
|
9
|
+
def test_can_show?
|
10
|
+
article = Article.create! title: "foo"
|
11
|
+
|
12
|
+
visit authorized_articles_path
|
13
|
+
within "[data-resource-id='#{article.id}']" do
|
14
|
+
click_link "Show"
|
15
|
+
end
|
16
|
+
|
17
|
+
assert_equal article_path(article), current_path
|
18
|
+
assert_equal 200, page.status_code
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_cannot_destroy?
|
22
|
+
article = Article.create! title: "foo"
|
23
|
+
|
24
|
+
visit authorized_articles_path
|
25
|
+
within "[data-resource-id='#{article.id}']" do
|
26
|
+
assert page.has_no_content? "Destroy"
|
27
|
+
end
|
28
|
+
|
29
|
+
page.driver.delete authorized_article_path(article)
|
30
|
+
assert_equal 403, page.status_code
|
31
|
+
end
|
32
|
+
end
|
@@ -20,4 +20,16 @@ class ColumnOrderingTest < ActionDispatch::IntegrationTest
|
|
20
20
|
link = find("#table th.column-created_at a")
|
21
21
|
assert_equal "/articles?order=created_at_desc", link[:href]
|
22
22
|
end
|
23
|
+
|
24
|
+
def test_order_links_when_not_orderable
|
25
|
+
visit articles_path
|
26
|
+
assert has_selector?("#table th.column-non_orderable_column")
|
27
|
+
assert has_no_link?("#table th.column-non_orderable_column a")
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_order_links_when_custom_orderable
|
31
|
+
visit articles_path
|
32
|
+
link = find("#table th.column-admin_user a")
|
33
|
+
assert_equal "/articles?order=admin_user_desc", link[:href]
|
34
|
+
end
|
23
35
|
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
require "test_helper"
|
2
|
+
|
3
|
+
class CrudTest < ActionDispatch::IntegrationTest
|
4
|
+
def test_list_resources
|
5
|
+
Article.create! title: "foo"
|
6
|
+
Article.create! title: "bar"
|
7
|
+
|
8
|
+
visit articles_path
|
9
|
+
|
10
|
+
assert page.has_content? "foo"
|
11
|
+
assert page.has_content? "bar"
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_show_resource
|
15
|
+
article = Article.create! title: "foo", body: "bar"
|
16
|
+
|
17
|
+
visit articles_path
|
18
|
+
within "[data-resource-id='#{article.id}']" do
|
19
|
+
click_link "Show"
|
20
|
+
end
|
21
|
+
|
22
|
+
assert_equal article_path(article), current_path
|
23
|
+
assert page.has_content? "Title foo"
|
24
|
+
assert page.has_content? "Body bar"
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_create_resource
|
28
|
+
visit articles_path
|
29
|
+
click_link "Create Article"
|
30
|
+
fill_in "Title", with: "foo"
|
31
|
+
fill_in "Body", with: "bar"
|
32
|
+
click_button "Create Article"
|
33
|
+
|
34
|
+
assert_equal article_path(Article.last), current_path
|
35
|
+
assert page.has_content? "Title foo"
|
36
|
+
assert page.has_content? "Body bar"
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_update_resource
|
40
|
+
article = Article.create! title: "foo", body: "bar"
|
41
|
+
|
42
|
+
visit articles_path
|
43
|
+
within "[data-resource-id='#{article.id}']" do
|
44
|
+
click_link "Edit"
|
45
|
+
end
|
46
|
+
fill_in "Title", with: "baz"
|
47
|
+
click_button "Update Article"
|
48
|
+
|
49
|
+
assert_equal article_path(article), current_path
|
50
|
+
assert page.has_content? "Title baz"
|
51
|
+
assert page.has_content? "Body bar"
|
52
|
+
end
|
53
|
+
|
54
|
+
def test_destroy_resource
|
55
|
+
article_1 = Article.create! title: "foo"
|
56
|
+
article_2 = Article.create! title: "bar"
|
57
|
+
|
58
|
+
visit articles_path
|
59
|
+
within "[data-resource-id='#{article_1.id}']" do
|
60
|
+
click_link "Destroy"
|
61
|
+
end
|
62
|
+
|
63
|
+
assert_equal articles_path, current_path
|
64
|
+
assert page.has_no_content? "foo"
|
65
|
+
assert page.has_content? "bar"
|
66
|
+
end
|
67
|
+
end
|
data/test/integration/{column_overriding_test.rb → view_overriding/column_overriding_test.rb}
RENAMED
File without changes
|
data/test/integration/{filter_overriding_test.rb → view_overriding/filter_overriding_test.rb}
RENAMED
File without changes
|
data/test/integration/{partial_overriding_test.rb → view_overriding/partial_overriding_test.rb}
RENAMED
File without changes
|
data/test/integration/{template_overriding_test.rb → view_overriding/template_overriding_test.rb}
RENAMED
File without changes
|
@@ -4,12 +4,6 @@ module Godmin
|
|
4
4
|
module ResourceService
|
5
5
|
class OrderingTest < ActiveSupport::TestCase
|
6
6
|
def setup
|
7
|
-
resource_class = Class.new do
|
8
|
-
def self.table_name
|
9
|
-
"articles"
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
7
|
@resources_class = Class.new do
|
14
8
|
attr_reader :order_param
|
15
9
|
|
@@ -18,7 +12,8 @@ module Godmin
|
|
18
12
|
end
|
19
13
|
end
|
20
14
|
|
21
|
-
@
|
15
|
+
@resources = @resources_class.new
|
16
|
+
@article_service = Fakes::ArticleService.new(resources: @resources)
|
22
17
|
end
|
23
18
|
|
24
19
|
def test_apply_order
|
@@ -32,6 +27,11 @@ module Godmin
|
|
32
27
|
@article_service.apply_order("", resources)
|
33
28
|
assert_equal nil, resources.order_param
|
34
29
|
end
|
30
|
+
|
31
|
+
def test_apply_order_with_custom_ordering_method
|
32
|
+
@article_service.apply_order("foobar_desc", @resources)
|
33
|
+
assert_equal [@resources, "desc"], @article_service.called_methods[:ordering][:by_foobar]
|
34
|
+
end
|
35
35
|
end
|
36
36
|
end
|
37
37
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: godmin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jens Ljungblad
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2016-02-02 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: bcrypt
|
@@ -378,18 +378,17 @@ files:
|
|
378
378
|
- test/dummy/app/assets/stylesheets/application.css
|
379
379
|
- test/dummy/app/controllers/application_controller.rb
|
380
380
|
- test/dummy/app/controllers/articles_controller.rb
|
381
|
+
- test/dummy/app/controllers/authenticated_articles_controller.rb
|
382
|
+
- test/dummy/app/controllers/authorized_articles_controller.rb
|
381
383
|
- test/dummy/app/controllers/concerns/.keep
|
382
|
-
- test/dummy/app/controllers/secret_articles_controller.rb
|
383
|
-
- test/dummy/app/controllers/secret_controller.rb
|
384
384
|
- test/dummy/app/controllers/sessions_controller.rb
|
385
385
|
- test/dummy/app/helpers/application_helper.rb
|
386
386
|
- test/dummy/app/models/.keep
|
387
387
|
- test/dummy/app/models/admin_user.rb
|
388
388
|
- test/dummy/app/models/article.rb
|
389
389
|
- test/dummy/app/models/concerns/.keep
|
390
|
-
- test/dummy/app/
|
390
|
+
- test/dummy/app/policies/article_policy.rb
|
391
391
|
- test/dummy/app/services/article_service.rb
|
392
|
-
- test/dummy/app/services/secret_article_service.rb
|
393
392
|
- test/dummy/app/views/articles/.keep
|
394
393
|
- test/dummy/app/views/articles/columns/.keep
|
395
394
|
- test/dummy/app/views/articles/filters/.keep
|
@@ -426,15 +425,17 @@ files:
|
|
426
425
|
- test/dummy/public/favicon.ico
|
427
426
|
- test/fakes/article.rb
|
428
427
|
- test/fakes/article_service.rb
|
428
|
+
- test/integration/authentication_test.rb
|
429
|
+
- test/integration/authorization_test.rb
|
429
430
|
- test/integration/batch_actions_test.rb
|
430
431
|
- test/integration/column_ordering_test.rb
|
431
|
-
- test/integration/
|
432
|
-
- test/integration/filter_overriding_test.rb
|
432
|
+
- test/integration/crud_test.rb
|
433
433
|
- test/integration/filters_test.rb
|
434
|
-
- test/integration/partial_overriding_test.rb
|
435
434
|
- test/integration/scopes_test.rb
|
436
|
-
- test/integration/
|
437
|
-
- test/integration/
|
435
|
+
- test/integration/view_overriding/column_overriding_test.rb
|
436
|
+
- test/integration/view_overriding/filter_overriding_test.rb
|
437
|
+
- test/integration/view_overriding/partial_overriding_test.rb
|
438
|
+
- test/integration/view_overriding/template_overriding_test.rb
|
438
439
|
- test/integration/welcome_test.rb
|
439
440
|
- test/lib/godmin/engine_wrapper_test.rb
|
440
441
|
- test/lib/godmin/helpers/filters_test.rb
|
@@ -500,18 +501,17 @@ test_files:
|
|
500
501
|
- test/dummy/app/assets/stylesheets/application.css
|
501
502
|
- test/dummy/app/controllers/application_controller.rb
|
502
503
|
- test/dummy/app/controllers/articles_controller.rb
|
504
|
+
- test/dummy/app/controllers/authenticated_articles_controller.rb
|
505
|
+
- test/dummy/app/controllers/authorized_articles_controller.rb
|
503
506
|
- test/dummy/app/controllers/concerns/.keep
|
504
|
-
- test/dummy/app/controllers/secret_articles_controller.rb
|
505
|
-
- test/dummy/app/controllers/secret_controller.rb
|
506
507
|
- test/dummy/app/controllers/sessions_controller.rb
|
507
508
|
- test/dummy/app/helpers/application_helper.rb
|
508
509
|
- test/dummy/app/models/.keep
|
509
510
|
- test/dummy/app/models/admin_user.rb
|
510
511
|
- test/dummy/app/models/article.rb
|
511
512
|
- test/dummy/app/models/concerns/.keep
|
512
|
-
- test/dummy/app/
|
513
|
+
- test/dummy/app/policies/article_policy.rb
|
513
514
|
- test/dummy/app/services/article_service.rb
|
514
|
-
- test/dummy/app/services/secret_article_service.rb
|
515
515
|
- test/dummy/app/views/articles/.keep
|
516
516
|
- test/dummy/app/views/articles/columns/.keep
|
517
517
|
- test/dummy/app/views/articles/filters/.keep
|
@@ -548,15 +548,17 @@ test_files:
|
|
548
548
|
- test/dummy/public/favicon.ico
|
549
549
|
- test/fakes/article.rb
|
550
550
|
- test/fakes/article_service.rb
|
551
|
+
- test/integration/authentication_test.rb
|
552
|
+
- test/integration/authorization_test.rb
|
551
553
|
- test/integration/batch_actions_test.rb
|
552
554
|
- test/integration/column_ordering_test.rb
|
553
|
-
- test/integration/
|
554
|
-
- test/integration/filter_overriding_test.rb
|
555
|
+
- test/integration/crud_test.rb
|
555
556
|
- test/integration/filters_test.rb
|
556
|
-
- test/integration/partial_overriding_test.rb
|
557
557
|
- test/integration/scopes_test.rb
|
558
|
-
- test/integration/
|
559
|
-
- test/integration/
|
558
|
+
- test/integration/view_overriding/column_overriding_test.rb
|
559
|
+
- test/integration/view_overriding/filter_overriding_test.rb
|
560
|
+
- test/integration/view_overriding/partial_overriding_test.rb
|
561
|
+
- test/integration/view_overriding/template_overriding_test.rb
|
560
562
|
- test/integration/welcome_test.rb
|
561
563
|
- test/lib/godmin/engine_wrapper_test.rb
|
562
564
|
- test/lib/godmin/helpers/filters_test.rb
|
@@ -1,17 +0,0 @@
|
|
1
|
-
require "test_helper"
|
2
|
-
|
3
|
-
class SignInTest < ActionDispatch::IntegrationTest
|
4
|
-
def test_sign_in_and_out
|
5
|
-
AdminUser.create!(email: "admin@example.com", password: "password")
|
6
|
-
visit secret_articles_path
|
7
|
-
assert_not_equal secret_articles_path, current_path
|
8
|
-
fill_in "Email", with: "admin@example.com"
|
9
|
-
fill_in "Password", with: "password"
|
10
|
-
click_button "Sign in"
|
11
|
-
visit secret_articles_path
|
12
|
-
assert_equal secret_articles_path, current_path
|
13
|
-
click_link "Sign out"
|
14
|
-
visit secret_articles_path
|
15
|
-
assert_not_equal secret_articles_path, current_path
|
16
|
-
end
|
17
|
-
end
|