godmin 1.1.0 → 1.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 +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 | 
             
            
         | 
| 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
         |