From ae67bc1abfe0a521f596bfefe5b191f4293dcd46 Mon Sep 17 00:00:00 2001 From: Nic Hippenmeyer Date: Mon, 7 Mar 2022 15:46:45 -0500 Subject: [PATCH] Cleanup and improve spec --- .../dashboard/dashboard_generator.rb | 26 ++++++++++++------- spec/generators/dashboard_generator_spec.rb | 6 ++--- 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/lib/generators/administrate/dashboard/dashboard_generator.rb b/lib/generators/administrate/dashboard/dashboard_generator.rb index 6804e3b55f..3db86e6134 100644 --- a/lib/generators/administrate/dashboard/dashboard_generator.rb +++ b/lib/generators/administrate/dashboard/dashboard_generator.rb @@ -53,16 +53,22 @@ def namespace end def attributes - columns = klass.columns.map(&:name) - - (klass.reflections.keys + - columns - - redundant_attributes - - %w[id created_at updated_at]).sort.tap do |result| - result.unshift(klass.primary_key) if klass.primary_key.present? - result.push("created_at") if columns.include?("created_at") - result.push("updated_at") if columns.include?("updated_at") - end + attrs = ( + klass.reflections.keys + + klass.columns.map(&:name) - + redundant_attributes + ) + + primary_key = attrs.delete(klass.primary_key) + created_at = attrs.delete("created_at") + updated_at = attrs.delete("updated_at") + + [ + primary_key, + *attrs.sort, + created_at, + updated_at, + ].compact end def form_attributes diff --git a/spec/generators/dashboard_generator_spec.rb b/spec/generators/dashboard_generator_spec.rb index 68f1adb6df..f9cc1933bc 100644 --- a/spec/generators/dashboard_generator_spec.rb +++ b/spec/generators/dashboard_generator_spec.rb @@ -33,8 +33,8 @@ class Foo < ApplicationRecord load file("app/dashboards/foo_dashboard.rb") attrs = FooDashboard::ATTRIBUTE_TYPES - expect(attrs[:created_at]).to eq(Administrate::Field::DateTime) expect(attrs[:id]).to eq(Administrate::Field::Number) + expect(attrs[:created_at]).to eq(Administrate::Field::DateTime) expect(attrs[:updated_at]).to eq(Administrate::Field::DateTime) ensure remove_constants :Foo, :FooDashboard @@ -64,7 +64,7 @@ class Foo < ApplicationRecord it "sorts the attributes" do begin ActiveRecord::Schema.define do - create_table(:foos) do |t| + create_table(:foos, primary_key: :code) do |t| t.string :col_2 t.string :col_1 t.string :col_3 @@ -80,7 +80,7 @@ class Foo < ApplicationRecord load file("app/dashboards/foo_dashboard.rb") attrs = FooDashboard::ATTRIBUTE_TYPES.keys - expect(attrs).to eq(%i[id col_1 col_2 col_3 created_at updated_at]) + expect(attrs).to eq(%i[code col_1 col_2 col_3 created_at updated_at]) ensure remove_constants :Foo, :FooDashboard end