require "application_system_test_case" class MeasurementsTest < ApplicationSystemTestCase setup do @user = sign_in(user: users(:alice)) @quantity = @user.quantities.create!(name: 'Weight') @unit = @user.units.create!(symbol: 'kg') @readout = @user.readouts.create!(quantity: @quantity, unit: @unit, value: 82.5) visit measurements_path end test "index shows quantity name as edit link for active user" do within 'tbody' do assert_selector :link, exact_text: @quantity.name end end test "edit opens inline form on quantity link click" do within 'tbody' do click_on @quantity.name assert_selector ':focus' assert_selector 'input[name="readout[value]"]' end end test "edit and update measurement value" do within 'tbody' do click_on @quantity.name fill_in 'readout[value]', with: '83.1' assert_difference ->{ @readout.reload.value }, 83.1 - @readout.value do click_on t('helpers.submit.update') end assert_no_selector :fillable_field assert_selector :link, exact_text: @quantity.name end assert_selector '.flash.notice', text: t('measurements.update.success') end test "cancel edit restores original row" do within 'tbody' do click_on @quantity.name assert_selector 'input[name="readout[value]"]' click_on t(:cancel) assert_no_selector :fillable_field assert_selector :link, exact_text: @quantity.name end end test "wide view edit opens panel form" do @readout.update!(taken_at: Time.now) visit measurements_path execute_script("localStorage.removeItem('measurements-view')") visit measurements_path find('button[data-view="wide"]').click within '#measurements-wide' do assert_text format("%.10g", 82.5), wait: 3 find('button.link').click end assert_selector '#measurement_edit_form input[name="readout[value]"]', wait: 5 end end