1
0

Test pass: test_edit

This commit is contained in:
cryptogopher 2021-01-24 15:05:54 +01:00
parent 8bd102f8de
commit cb4c528908
6 changed files with 53 additions and 4 deletions

View File

@ -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

View File

@ -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} %>
<div class="tabular">
<p>
<%= submit_tag l(:button_save) %>
<%= link_to l(:button_cancel), "#",
onclick: '$(this).closest("tr").remove(); return false;' %>
</p>
</div>
<% end %>

View File

@ -57,7 +57,7 @@
<tbody>
<% @targets_by_date.each do |date, targets| %>
<% row_class = "date #{cycle('odd', 'even')}" %>
<tr id="date-<%= date.strftime('%Y%m%d') %>" class="primary <%= row_class %>">
<tr id="date-<%= date %>" class="primary <%= row_class %>">
<td class="date unwrappable" style="cursor: pointer;"
onclick="$(this).closest('tr').toggle();
$(this).closest('tr').nextUntil('tr.primary', '.date').toggle();

View File

@ -0,0 +1,7 @@
$('tr[id=date-<%= @effective_from %>]').nextUntil('tr.primary', ':not(.date)').remove();
var columns = $('table > thead > tr > th').length;
$('tr[id=date-<%= @effective_from %>]').nextUntil('tr.primary').addBack().last().after(
'<tr><td class="form" colspan="'+columns+'"><div id="edit-target">' +
'<%= j render partial: 'targets/edit_form' %>' +
'</div></td></tr>'
);

View File

@ -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

View File

@ -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