From 529fffc4e6631867ee9af58979d8ed0d80e35fdd Mon Sep 17 00:00:00 2001 From: Anton Khorev Date: Wed, 14 May 2025 17:49:51 +0300 Subject: [PATCH] Allow new diary entry language to be specified in params --- app/controllers/diary_entries_controller.rb | 2 +- .../diary_entries_controller_test.rb | 26 +++++++++++++++++-- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/app/controllers/diary_entries_controller.rb b/app/controllers/diary_entries_controller.rb index f3752cb2c..101c14354 100644 --- a/app/controllers/diary_entries_controller.rb +++ b/app/controllers/diary_entries_controller.rb @@ -89,7 +89,7 @@ class DiaryEntriesController < ApplicationController default_lang = current_user.preferences.find_by(:k => "diary.default_language") lang_code = default_lang ? default_lang.v : current_user.preferred_language - @diary_entry = DiaryEntry.new(entry_params.merge(:language_code => lang_code)) + @diary_entry = DiaryEntry.new(entry_params.reverse_merge(:language_code => lang_code)) set_map_location render :action => "new" end diff --git a/test/controllers/diary_entries_controller_test.rb b/test/controllers/diary_entries_controller_test.rb index fdd76a501..26453ef51 100644 --- a/test/controllers/diary_entries_controller_test.rb +++ b/test/controllers/diary_entries_controller_test.rb @@ -133,14 +133,36 @@ class DiaryEntriesControllerTest < ActionDispatch::IntegrationTest end def test_new_get_with_params + create(:language, :code => "fr") # Now try creating a diary entry using get - session_for(create(:user)) + session_for(create(:user, :languages => ["en"])) + assert_difference "DiaryEntry.count", 0 do get new_diary_entry_path(:diary_entry => { :title => "New Title", :body => "This is a new body for the diary entry", :latitude => "1.1", - :longitude => "2.2", :language_code => "en" }) + :longitude => "2.2", :language_code => "fr" }) end + assert_response :success assert_template :new + assert_dom "div#content", :count => 1 do + assert_dom "form[action='/diary'][method=post]", :count => 1 do + assert_dom "input#diary_entry_title[name='diary_entry[title]']", :count => 1 do + assert_dom "> @value", "New Title" + end + assert_dom "textarea#diary_entry_body[name='diary_entry[body]']", :count => 1, :text => "This is a new body for the diary entry" + assert_dom "select#diary_entry_language_code", :count => 1 do + assert_dom "option[selected]", :count => 1 do + assert_dom "> @value", "fr" + end + end + assert_dom "input#latitude[name='diary_entry[latitude]']", :count => 1 do + assert_dom "> @value", "1.1" + end + assert_dom "input#longitude[name='diary_entry[longitude]']", :count => 1 do + assert_dom "> @value", "2.2" + end + end + end end def test_create_no_body -- 2.39.5