diff --git a/app/models/widget/card.rb b/app/models/widget/card.rb index 64a840231..4b67f8896 100644 --- a/app/models/widget/card.rb +++ b/app/models/widget/card.rb @@ -14,6 +14,8 @@ class Widget::Card < ApplicationRecord translates :link_text, touch: true include Globalizable + validates_translation :title, presence: true + def self.header where(header: true) end diff --git a/app/views/admin/widget/cards/_form.html.erb b/app/views/admin/widget/cards/_form.html.erb index ab0762859..e0afe9e47 100644 --- a/app/views/admin/widget/cards/_form.html.erb +++ b/app/views/admin/widget/cards/_form.html.erb @@ -1,6 +1,7 @@ <%= render "shared/globalize_locales", resource: @card %> <%= translatable_form_for [:admin, @card] do |f| %> + <%= render "shared/errors", resource: @card %>
<%= f.translatable_fields do |translations_form| %> @@ -49,7 +50,10 @@
- <%= f.submit(t("admin.homepage.#{action_name}.#{@card.header? ? "submit_header" : "submit_card"}"), class: "button success") %> + <%= f.submit( + t("admin.homepage.#{admin_submit_action(@card)}.#{@card.header? ? "submit_header" : "submit_card"}"), + class: "button success" + ) %>
<% end %> diff --git a/spec/models/widget/card_spec.rb b/spec/models/widget/card_spec.rb index 8f925fefd..e7b01ddfe 100644 --- a/spec/models/widget/card_spec.rb +++ b/spec/models/widget/card_spec.rb @@ -9,6 +9,10 @@ describe Widget::Card do it "is valid" do expect(card).to be_valid end + + it "is not valid without a title" do + expect(build(:widget_card, title: "")).not_to be_valid + end end describe "#header" do diff --git a/spec/support/common_actions/notifications.rb b/spec/support/common_actions/notifications.rb index 4db1cc833..572a4d3c8 100644 --- a/spec/support/common_actions/notifications.rb +++ b/spec/support/common_actions/notifications.rb @@ -56,7 +56,7 @@ module Notifications def error_message(resource_model = nil) resource_model ||= "(.*)" field_check_message = "Please check the marked fields to know how to correct them:" - /\d errors? prevented this #{resource_model} from being saved. #{field_check_message}/ + /\d errors? prevented this #{resource_model} from being saved.(\n| )#{field_check_message}/ end def fill_in_admin_notification_form(options = {}) diff --git a/spec/system/admin/widgets/cards_spec.rb b/spec/system/admin/widgets/cards_spec.rb index 969a9b0ca..a0315118a 100644 --- a/spec/system/admin/widgets/cards_spec.rb +++ b/spec/system/admin/widgets/cards_spec.rb @@ -27,6 +27,15 @@ describe "Cards", :admin do end end + scenario "Create with errors", :js do + visit admin_homepage_path + click_link "Create card" + click_button "Create card" + + expect(page).to have_text error_message + expect(page).to have_button "Create card" + end + scenario "Index" do 3.times { create(:widget_card) } @@ -130,6 +139,15 @@ describe "Cards", :admin do end end + scenario "Create with errors", :js do + visit admin_homepage_path + click_link "Create header" + click_button "Create header" + + expect(page).to have_text error_message + expect(page).to have_button "Create header" + end + context "Page card" do let!(:custom_page) { create(:site_customization_page, :published) }