From 0c8c8562f57b410457cac1449e8cca2516bccc0b Mon Sep 17 00:00:00 2001 From: Maximilian Grundke Date: Wed, 12 Jul 2017 11:58:18 +0200 Subject: [PATCH] Scaffold error template attributes --- .../error_template_attributes_controller.rb | 86 +++++++++++++++++++ .../error_template_attributes_helper.rb | 2 + app/models/error_template_attribute.rb | 4 + .../error_template_attribute_policy.rb | 3 + .../error_template_attributes/_form.html.slim | 16 ++++ .../error_template_attributes/edit.html.slim | 3 + .../error_template_attributes/index.html.slim | 28 ++++++ .../error_template_attributes/new.html.slim | 3 + .../error_template_attributes/show.html.slim | 8 ++ app/views/error_templates/show.html.slim | 6 +- config/locales/de.yml | 2 +- config/locales/en.yml | 2 +- config/routes.rb | 1 + ...ror_template_attributes_controller_test.rb | 49 +++++++++++ 14 files changed, 208 insertions(+), 5 deletions(-) create mode 100644 app/controllers/error_template_attributes_controller.rb create mode 100644 app/helpers/error_template_attributes_helper.rb create mode 100644 app/policies/error_template_attribute_policy.rb create mode 100644 app/views/error_template_attributes/_form.html.slim create mode 100644 app/views/error_template_attributes/edit.html.slim create mode 100644 app/views/error_template_attributes/index.html.slim create mode 100644 app/views/error_template_attributes/new.html.slim create mode 100644 app/views/error_template_attributes/show.html.slim create mode 100644 test/controllers/error_template_attributes_controller_test.rb diff --git a/app/controllers/error_template_attributes_controller.rb b/app/controllers/error_template_attributes_controller.rb new file mode 100644 index 00000000..dc2da30e --- /dev/null +++ b/app/controllers/error_template_attributes_controller.rb @@ -0,0 +1,86 @@ +class ErrorTemplateAttributesController < ApplicationController + before_action :set_error_template_attribute, only: [:show, :edit, :update, :destroy] + + def authorize! + authorize(@error_template_attributes || @error_template_attribute) + end + private :authorize! + + # GET /error_template_attributes + # GET /error_template_attributes.json + def index + @error_template_attributes = ErrorTemplateAttribute.all.order(:id).paginate(page: params[:page]) + authorize! + end + + # GET /error_template_attributes/1 + # GET /error_template_attributes/1.json + def show + authorize! + end + + # GET /error_template_attributes/new + def new + @error_template_attribute = ErrorTemplateAttribute.new + authorize! + end + + # GET /error_template_attributes/1/edit + def edit + authorize! + end + + # POST /error_template_attributes + # POST /error_template_attributes.json + def create + @error_template_attribute = ErrorTemplateAttribute.new(error_template_attribute_params) + authorize! + + respond_to do |format| + if @error_template_attribute.save + format.html { redirect_to @error_template_attribute, notice: 'Error template attribute was successfully created.' } + format.json { render :show, status: :created, location: @error_template_attribute } + else + format.html { render :new } + format.json { render json: @error_template_attribute.errors, status: :unprocessable_entity } + end + end + end + + # PATCH/PUT /error_template_attributes/1 + # PATCH/PUT /error_template_attributes/1.json + def update + authorize! + respond_to do |format| + if @error_template_attribute.update(error_template_attribute_params) + format.html { redirect_to @error_template_attribute, notice: 'Error template attribute was successfully updated.' } + format.json { render :show, status: :ok, location: @error_template_attribute } + else + format.html { render :edit } + format.json { render json: @error_template_attribute.errors, status: :unprocessable_entity } + end + end + end + + # DELETE /error_template_attributes/1 + # DELETE /error_template_attributes/1.json + def destroy + authorize! + @error_template_attribute.destroy + respond_to do |format| + format.html { redirect_to error_template_attributes_url, notice: 'Error template attribute was successfully destroyed.' } + format.json { head :no_content } + end + end + + private + # Use callbacks to share common setup or constraints between actions. + def set_error_template_attribute + @error_template_attribute = ErrorTemplateAttribute.find(params[:id]) + end + + # Never trust parameters from the scary internet, only allow the white list through. + def error_template_attribute_params + params.fetch(:error_template_attribute, {}) + end +end diff --git a/app/helpers/error_template_attributes_helper.rb b/app/helpers/error_template_attributes_helper.rb new file mode 100644 index 00000000..9046f407 --- /dev/null +++ b/app/helpers/error_template_attributes_helper.rb @@ -0,0 +1,2 @@ +module ErrorTemplateAttributesHelper +end diff --git a/app/models/error_template_attribute.rb b/app/models/error_template_attribute.rb index 15229b33..844c1019 100644 --- a/app/models/error_template_attribute.rb +++ b/app/models/error_template_attribute.rb @@ -1,3 +1,7 @@ class ErrorTemplateAttribute < ActiveRecord::Base has_and_belongs_to_many :error_template + + def to_s + "#{id} [#{key}]" + end end diff --git a/app/policies/error_template_attribute_policy.rb b/app/policies/error_template_attribute_policy.rb new file mode 100644 index 00000000..eed0896d --- /dev/null +++ b/app/policies/error_template_attribute_policy.rb @@ -0,0 +1,3 @@ +class ErrorTemplateAttributePolicy < AdminOnlyPolicy + +end diff --git a/app/views/error_template_attributes/_form.html.slim b/app/views/error_template_attributes/_form.html.slim new file mode 100644 index 00000000..4fc28b02 --- /dev/null +++ b/app/views/error_template_attributes/_form.html.slim @@ -0,0 +1,16 @@ += form_for(@error_template_attribute) do |f| + = render('shared/form_errors', object: @error_template_attribute) + .form-group + = f.label(:key) + = f.text_field(:key, class: 'form-control', required: true) + .form-group + = f.label(:description) + = f.text_field(:description, class: 'form-control') + .form-group + = f.label(:regex) + = f.text_field(:regex, class: 'form-control', required: true) + .help-block == t('error_templates.hints.signature') + .form-group + = f.check_box(:important) + = t('activerecord.attributes.error_template_attribute.important') + .actions = render('shared/submit_button', f: f, object: @error_template_attribute) diff --git a/app/views/error_template_attributes/edit.html.slim b/app/views/error_template_attributes/edit.html.slim new file mode 100644 index 00000000..f3279442 --- /dev/null +++ b/app/views/error_template_attributes/edit.html.slim @@ -0,0 +1,3 @@ +h1 = @error_template_attribute + += render('form') diff --git a/app/views/error_template_attributes/index.html.slim b/app/views/error_template_attributes/index.html.slim new file mode 100644 index 00000000..81d5cac9 --- /dev/null +++ b/app/views/error_template_attributes/index.html.slim @@ -0,0 +1,28 @@ +h1 = ErrorTemplateAttribute.model_name.human(count: 2) + +.table-responsive + table.sortable.table + thead + tr + th + th = t('activerecord.attributes.error_template_attribute.key') + th = t('activerecord.attributes.error_template_attribute.description') + th = t('activerecord.attributes.error_template_attribute.regex') + th colspan=5 = t('shared.actions') + tbody + - @error_template_attributes.each do |error_template_attribute| + tr + td + - if error_template_attribute.important + span class="fa fa-star" aria-hidden="true" + - else + span class="fa fa-star-o" aria-hidden="true" + td = error_template_attribute.key + td = error_template_attribute.description + td = error_template_attribute.regex + td = link_to(t('shared.show'), error_template_attribute) + td = link_to(t('shared.edit'), edit_error_template_attribute_path(error_template_attribute)) + td = link_to(t('shared.destroy'), error_template_attribute, data: {confirm: t('shared.confirm_destroy')}, method: :delete) + += render('shared/pagination', collection: @error_template_attributes) +p = render('shared/new_button', model: ErrorTemplateAttribute) diff --git a/app/views/error_template_attributes/new.html.slim b/app/views/error_template_attributes/new.html.slim new file mode 100644 index 00000000..12c719f9 --- /dev/null +++ b/app/views/error_template_attributes/new.html.slim @@ -0,0 +1,3 @@ +h1 = t('shared.new_model', model: ErrorTemplateAttribute.model_name.human) + += render('form') diff --git a/app/views/error_template_attributes/show.html.slim b/app/views/error_template_attributes/show.html.slim new file mode 100644 index 00000000..2bdd01ca --- /dev/null +++ b/app/views/error_template_attributes/show.html.slim @@ -0,0 +1,8 @@ +h1 + = @error_template_attribute + = render('shared/edit_button', object: @error_template_attribute) + +- [:key, :description, :regex, :important].each do |attribute| + = row(label: "error_template_attribute.#{attribute}", value: @error_template_attribute.send(attribute)) + +// todo: used by diff --git a/app/views/error_templates/show.html.slim b/app/views/error_templates/show.html.slim index 373aa615..885c3788 100644 --- a/app/views/error_templates/show.html.slim +++ b/app/views/error_templates/show.html.slim @@ -15,9 +15,9 @@ h3 thead tr th - th = t('activerecord.attributes.error_template_attributes.key') - th = t('activerecord.attributes.error_template_attributes.description') - th = t('activerecord.attributes.error_template_attributes.regex') + th = t('activerecord.attributes.error_template_attribute.key') + th = t('activerecord.attributes.error_template_attribute.description') + th = t('activerecord.attributes.error_template_attribute.regex') tbody - @error_template.error_template_attributes.order(:important).each do |attribute| tr diff --git a/config/locales/de.yml b/config/locales/de.yml index ab4f835d..6aca7d64 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -114,7 +114,7 @@ de: signature: Regulärer Ausdruck description: Beschreibung hint: Hinweis - error_template_attributes: + error_template_attribute: important: "Wichtig" key: "Name" description: "Beschreibung" diff --git a/config/locales/en.yml b/config/locales/en.yml index cd61a066..34d8894f 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -135,7 +135,7 @@ en: signature: Signature Regular Expression description: Description hint: Hint - error_template_attributes: + error_template_attribute: important: "Important" key: "Identifier" description: "Description" diff --git a/config/routes.rb b/config/routes.rb index ce5be3ae..c614a50c 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,6 +1,7 @@ FILENAME_REGEXP = /[\w\.]+/ unless Kernel.const_defined?(:FILENAME_REGEXP) Rails.application.routes.draw do + resources :error_template_attributes resources :error_templates resources :file_templates do collection do diff --git a/test/controllers/error_template_attributes_controller_test.rb b/test/controllers/error_template_attributes_controller_test.rb new file mode 100644 index 00000000..7dd008ec --- /dev/null +++ b/test/controllers/error_template_attributes_controller_test.rb @@ -0,0 +1,49 @@ +require 'test_helper' + +class ErrorTemplateAttributesControllerTest < ActionController::TestCase + setup do + @error_template_attribute = error_template_attributes(:one) + end + + test "should get index" do + get :index + assert_response :success + assert_not_nil assigns(:error_template_attributes) + end + + test "should get new" do + get :new + assert_response :success + end + + test "should create error_template_attribute" do + assert_difference('ErrorTemplateAttribute.count') do + post :create, error_template_attribute: { } + end + + assert_redirected_to error_template_attribute_path(assigns(:error_template_attribute)) + end + + test "should show error_template_attribute" do + get :show, id: @error_template_attribute + assert_response :success + end + + test "should get edit" do + get :edit, id: @error_template_attribute + assert_response :success + end + + test "should update error_template_attribute" do + patch :update, id: @error_template_attribute, error_template_attribute: { } + assert_redirected_to error_template_attribute_path(assigns(:error_template_attribute)) + end + + test "should destroy error_template_attribute" do + assert_difference('ErrorTemplateAttribute.count', -1) do + delete :destroy, id: @error_template_attribute + end + + assert_redirected_to error_template_attributes_path + end +end