From cb4c52890848604a160c740b7ca71b1cf6778615 Mon Sep 17 00:00:00 2001 From: cryptogopher Date: Sun, 24 Jan 2021 15:05:54 +0100 Subject: [PATCH] Test pass: test_edit --- app/controllers/targets_controller.rb | 3 ++- app/views/targets/_edit_form.html.erb | 15 +++++++++++++++ app/views/targets/_index.html.erb | 2 +- app/views/targets/edit.js.erb | 7 +++++++ config/routes.rb | 3 ++- test/system/targets_test.rb | 27 ++++++++++++++++++++++++++- 6 files changed, 53 insertions(+), 4 deletions(-) create mode 100644 app/views/targets/_edit_form.html.erb create mode 100644 app/views/targets/edit.js.erb diff --git a/app/controllers/targets_controller.rb b/app/controllers/targets_controller.rb index bf6c766..ef9797f 100644 --- a/app/controllers/targets_controller.rb +++ b/app/controllers/targets_controller.rb @@ -53,7 +53,8 @@ class TargetsController < ApplicationController end def edit - @targets = @goal.targets.where(effective_from: params[:effective_from]) + @targets = @goal.targets.where(effective_from: params[:date]).to_a + @effective_from = @targets.first&.effective_from end def update diff --git a/app/views/targets/_edit_form.html.erb b/app/views/targets/_edit_form.html.erb new file mode 100644 index 0000000..c987643 --- /dev/null +++ b/app/views/targets/_edit_form.html.erb @@ -0,0 +1,15 @@ +<%= labelled_form_for @targets, + url: project_targets_path(@project, @view_params), + method: :patch, remote: true, + html: {id: 'edit-target-form', name: 'edit-target-form'} do |f| %> + + <%= render partial: 'targets/form', locals: {f: f} %> + +
+

+ <%= submit_tag l(:button_save) %> + <%= link_to l(:button_cancel), "#", + onclick: '$(this).closest("tr").remove(); return false;' %> +

+
+<% end %> diff --git a/app/views/targets/_index.html.erb b/app/views/targets/_index.html.erb index b53f69d..c5ab8a2 100644 --- a/app/views/targets/_index.html.erb +++ b/app/views/targets/_index.html.erb @@ -57,7 +57,7 @@ <% @targets_by_date.each do |date, targets| %> <% row_class = "date #{cycle('odd', 'even')}" %> - +
' + + '<%= j render partial: 'targets/edit_form' %>' + + '
' +); diff --git a/config/routes.rb b/config/routes.rb index 9aaa5ed..2676e03 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -12,9 +12,10 @@ resources :projects, shallow: true do post 'toggle_exposure', to: 'targets#toggle_exposure' end end - resources :targets, except: [:show, :edit] do + resources :targets, except: [:show, :edit, :update] do collection do get 'edit/:date', to: 'targets#edit', as: :edit + patch :update post 'reapply/:date', to: 'targets#reapply', as: :reapply end end diff --git a/test/system/targets_test.rb b/test/system/targets_test.rb index 1639511..a129082 100644 --- a/test/system/targets_test.rb +++ b/test/system/targets_test.rb @@ -101,11 +101,36 @@ class TargetsTest < BodyTrackingSystemTestCase assert_equal @project1.goals.binding, Target.last.goal end + def test_create_multiple_targets + end + # TODO: test_create_failure(s) # * restoring user input # * removing empty targets - # TODO: test edit and update separately + def test_edit + target = Target.offset(rand(Target.count)).take + visit project_targets_path(@project1) + within find('td', text: target.effective_from.strftime).ancestor('tr') do + assert_no_selector 'form#edit-target-form' + click_link t(:button_edit) + + within find(:xpath, 'following-sibling::*//form[@id="edit-target-form"]') do + assert has_select?(t(:field_goal), selected: target.goal.name) + assert has_field?(t(:field_effective_from), with: target.effective_from.strftime) + + threshold = target.thresholds.first + within find('select option[selected]', exact_text: threshold.quantity.name) + .ancestor('p') do + assert has_select?(selected: target.condition) + assert has_field?(with: threshold.value) + assert has_select?(selected: threshold.unit.shortname) + end + end + end + assert_selector 'form#edit-target-form', count: 1 + end + def test_update visit project_targets_path(@project1) within 'table#targets tbody tr' do