From ffd3da2e00c73b4d23c6b2d8feaaf1fd67393799 Mon Sep 17 00:00:00 2001 From: Pablo Brasero Date: Thu, 13 Feb 2020 17:45:16 +0000 Subject: [PATCH] More readable warnings --- .../administrate/routes/routes_generator.rb | 24 +++++++++---------- spec/generators/routes_generator_spec.rb | 18 +++++++++++++- 2 files changed, 29 insertions(+), 13 deletions(-) diff --git a/lib/generators/administrate/routes/routes_generator.rb b/lib/generators/administrate/routes/routes_generator.rb index 59b10c1453..c88b444baa 100644 --- a/lib/generators/administrate/routes/routes_generator.rb +++ b/lib/generators/administrate/routes/routes_generator.rb @@ -20,15 +20,15 @@ def insert_dashboard_routes end def warn_about_invalid_models - namespaced_models.each do |invalid_model| - puts "WARNING: Unable to generate a dashboard for #{invalid_model}." - puts " Administrate does not yet support namespaced models." - end - - models_without_tables.each do |invalid_model| - puts "WARNING: Unable to generate a dashboard for #{invalid_model}." - puts " It is not connected to a database table." - puts " Make sure your database migrations are up to date." + invalid_dashboard_models.each do |model| + puts "WARNING: Unable to generate a dashboard for #{model}." + if namespaced_models.include?(model) + puts " - Administrate does not yet support namespaced models." + end + if models_without_tables.include?(model) + puts " - It is not connected to a database table." + puts " Make sure your database migrations are up to date." + end end unnamed_constants.each do |invalid_model| @@ -49,15 +49,15 @@ def dashboard_resources end def valid_dashboard_models - database_models - invalid_database_models + database_models - invalid_dashboard_models end def database_models ActiveRecord::Base.descendants.reject(&:abstract_class?) end - def invalid_database_models - models_without_tables + namespaced_models + unnamed_constants + def invalid_dashboard_models + (models_without_tables + namespaced_models + unnamed_constants).uniq end def models_without_tables diff --git a/spec/generators/routes_generator_spec.rb b/spec/generators/routes_generator_spec.rb index 2e17c1bc7f..baa74e4cd3 100644 --- a/spec/generators/routes_generator_spec.rb +++ b/spec/generators/routes_generator_spec.rb @@ -46,7 +46,7 @@ expect(output).to include <<-MSG.strip_heredoc WARNING: Unable to generate a dashboard for Blog::Post. - Administrate does not yet support namespaced models. + - Administrate does not yet support namespaced models. MSG end @@ -97,6 +97,22 @@ class AbstractModel < ApplicationRecord "dashboard for AbstractModel") end end + + it "groups together warnings related to the same model" do + class TestModelNamespace + class ModelWithoutDBTable < ApplicationRecord; end + end + + model_name = TestModelNamespace::ModelWithoutDBTable.to_s + output = run_generator + + warning = "WARNING: Unable to generate a dashboard " \ + "for #{model_name}." + occurrences = output.scan(warning).count + expect(occurrences).to eq(1) + ensure + remove_constants :TestModelNamespace + end end it "creates a root route for the admin namespace" do