From 3a476307a2759c98cfff688562d47e3c1c8453cd Mon Sep 17 00:00:00 2001 From: Sheldon Nunes Date: Wed, 31 May 2023 14:50:24 +1200 Subject: [PATCH] feat(description): Add description option for tasks --- app/models/maintenance_tasks/task.rb | 10 ++++++++++ app/models/maintenance_tasks/task_data_show.rb | 5 +++++ app/views/maintenance_tasks/tasks/show.html.erb | 5 +++++ lib/generators/maintenance_tasks/templates/task.rb.tt | 2 ++ test/dummy/app/tasks/maintenance/params_task.rb | 2 ++ test/dummy/app/tasks/maintenance/update_posts_task.rb | 2 ++ .../maintenance_tasks/task_generator_test.rb | 1 + test/system/maintenance_tasks/tasks_test.rb | 1 + 8 files changed, 28 insertions(+) diff --git a/app/models/maintenance_tasks/task.rb b/app/models/maintenance_tasks/task.rb index 049db9ed9..b550d116c 100644 --- a/app/models/maintenance_tasks/task.rb +++ b/app/models/maintenance_tasks/task.rb @@ -41,6 +41,16 @@ def named(name) task end + # Sets/Returns a description of the task + # + # @param [String] the description of the task. + # + # @return [Array] the list of classes. + def description(desc = nil) + @description = desc if desc + @description + end + # Returns a list of concrete classes that inherit from the Task # superclass. # diff --git a/app/models/maintenance_tasks/task_data_show.rb b/app/models/maintenance_tasks/task_data_show.rb index af71c18fe..87109001e 100644 --- a/app/models/maintenance_tasks/task_data_show.rb +++ b/app/models/maintenance_tasks/task_data_show.rb @@ -79,6 +79,11 @@ def parameter_names end end + # @return [String] the description of the task. + def description + !deleted? && Task.named(name).description + end + # @return [MaintenanceTasks::Task, nil] an instance of the Task class. # @return [nil] if the Task file was deleted. def new diff --git a/app/views/maintenance_tasks/tasks/show.html.erb b/app/views/maintenance_tasks/tasks/show.html.erb index 3fbac1b11..c861ceeec 100644 --- a/app/views/maintenance_tasks/tasks/show.html.erb +++ b/app/views/maintenance_tasks/tasks/show.html.erb @@ -4,6 +4,11 @@ <%= @task %> +<% if @task.description.present? %> +
+ <%= @task.description %> +
+<% end %>
<%= form_with url: task_runs_path(@task), method: :post do |form| %> <% if @task.csv_task? %> diff --git a/lib/generators/maintenance_tasks/templates/task.rb.tt b/lib/generators/maintenance_tasks/templates/task.rb.tt index 209ff1b59..46474608b 100644 --- a/lib/generators/maintenance_tasks/templates/task.rb.tt +++ b/lib/generators/maintenance_tasks/templates/task.rb.tt @@ -3,6 +3,8 @@ module <%= tasks_module %> <% module_namespacing do -%> class <%= class_name %>Task < MaintenanceTasks::Task + description "TODO" + def collection # Collection to be iterated over # Must be Active Record Relation or Array diff --git a/test/dummy/app/tasks/maintenance/params_task.rb b/test/dummy/app/tasks/maintenance/params_task.rb index e95d00d8e..a80d25b2a 100644 --- a/test/dummy/app/tasks/maintenance/params_task.rb +++ b/test/dummy/app/tasks/maintenance/params_task.rb @@ -2,6 +2,8 @@ module Maintenance class ParamsTask < MaintenanceTasks::Task + description "An example task containing the different types of parameters." + attribute :post_ids, :string validates :post_ids, diff --git a/test/dummy/app/tasks/maintenance/update_posts_task.rb b/test/dummy/app/tasks/maintenance/update_posts_task.rb index 2527b52ee..95010acfd 100644 --- a/test/dummy/app/tasks/maintenance/update_posts_task.rb +++ b/test/dummy/app/tasks/maintenance/update_posts_task.rb @@ -2,6 +2,8 @@ module Maintenance class UpdatePostsTask < MaintenanceTasks::Task + description "Updates every post with new content" + class << self attr_accessor :fast_task end diff --git a/test/lib/generators/maintenance_tasks/task_generator_test.rb b/test/lib/generators/maintenance_tasks/task_generator_test.rb index f51ef619f..87884bcfc 100644 --- a/test/lib/generators/maintenance_tasks/task_generator_test.rb +++ b/test/lib/generators/maintenance_tasks/task_generator_test.rb @@ -19,6 +19,7 @@ def teardown assert_file "app/tasks/maintenance/sleepy_task.rb" do |task| assert_match(/module Maintenance/, task) assert_match(/class SleepyTask < MaintenanceTasks::Task/, task) + assert_match(/description "TODO"/, task) assert_match(/def collection/, task) assert_match(/def process\(element\)/, task) assert_match(/def count/, task) diff --git a/test/system/maintenance_tasks/tasks_test.rb b/test/system/maintenance_tasks/tasks_test.rb index 7b7a93f9f..6dbd47836 100644 --- a/test/system/maintenance_tasks/tasks_test.rb +++ b/test/system/maintenance_tasks/tasks_test.rb @@ -47,6 +47,7 @@ class TasksTest < ApplicationSystemTestCase click_on("Maintenance::UpdatePostsTask") assert_title "Maintenance::UpdatePostsTask" + assert_text "Updates every post with new content" assert_selector "time", text: "January 01, 2020" do |tag| assert_equal "2020-01-01T01:00:00Z", tag[:title] end