Extract spec methods to commons module to avoid code duplication
Because "translatable" and "new_translatable" shared examples needs same methods to manipulate translations.
This commit is contained in:
committed by
voodoorai2000
parent
d0bf0f8857
commit
64bfab9c9c
@@ -338,62 +338,6 @@ def updated_path_for(resource)
|
|||||||
send(path_name, *resource_hierarchy_for(resource.reload))
|
send(path_name, *resource_hierarchy_for(resource.reload))
|
||||||
end
|
end
|
||||||
|
|
||||||
def text_for(field, locale)
|
|
||||||
I18n.with_locale(locale) do
|
|
||||||
"#{translatable_class.human_attribute_name(field)} #{language_texts[locale]}"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def field_for(field, locale, visible: true)
|
|
||||||
if translatable_class.name == "I18nContent"
|
|
||||||
"contents_content_#{translatable.key}values_#{field}_#{locale}"
|
|
||||||
else
|
|
||||||
within(".translatable-fields[data-locale='#{locale}']") do
|
|
||||||
find("input[id$='_#{field}'], textarea[id$='_#{field}']", visible: visible)[:id]
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def fill_in_field(field, locale, with:)
|
|
||||||
if input_fields.include?(field)
|
|
||||||
fill_in field_for(field, locale), with: with
|
|
||||||
else
|
|
||||||
fill_in_textarea(field, textarea_fields[field], locale, with: with)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def fill_in_textarea(field, textarea_type, locale, with:)
|
|
||||||
if textarea_type == :markdownit
|
|
||||||
click_link class: "fullscreen-toggle"
|
|
||||||
fill_in field_for(field, locale), with: with
|
|
||||||
click_link class: "fullscreen-toggle"
|
|
||||||
elsif textarea_type == :ckeditor
|
|
||||||
fill_in_ckeditor field_for(field, locale, visible: false), with: with
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def expect_page_to_have_translatable_field(field, locale, with:)
|
|
||||||
if input_fields.include?(field)
|
|
||||||
if translatable_class.name == "I18nContent" && with.blank?
|
|
||||||
expect(page).to have_field field_for(field, locale)
|
|
||||||
else
|
|
||||||
expect(page).to have_field field_for(field, locale), with: with
|
|
||||||
end
|
|
||||||
else
|
|
||||||
textarea_type = textarea_fields[field]
|
|
||||||
|
|
||||||
if textarea_type == :markdownit
|
|
||||||
click_link class: "fullscreen-toggle"
|
|
||||||
expect(page).to have_field field_for(field, locale), with: with
|
|
||||||
click_link class: "fullscreen-toggle"
|
|
||||||
elsif textarea_type == :ckeditor
|
|
||||||
within("div.js-globalize-attribute[data-locale='#{locale}'] .ckeditor [id$='#{field}']") do
|
|
||||||
within_frame(textarea_fields.keys.index(field)) { expect(page).to have_content with }
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
# FIXME: button texts should be consistent. Right now, buttons don't
|
# FIXME: button texts should be consistent. Right now, buttons don't
|
||||||
# even share the same colour.
|
# even share the same colour.
|
||||||
def update_button_text
|
def update_button_text
|
||||||
@@ -422,7 +366,3 @@ def update_button_text
|
|||||||
"Save changes"
|
"Save changes"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def front_end_path_to_visit?(path)
|
|
||||||
path[/admin|managment|valuation/].blank?
|
|
||||||
end
|
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ module CommonActions
|
|||||||
include Polls
|
include Polls
|
||||||
include Proposals
|
include Proposals
|
||||||
include Tags
|
include Tags
|
||||||
|
include Translations
|
||||||
include Users
|
include Users
|
||||||
include Verifications
|
include Verifications
|
||||||
include Votes
|
include Votes
|
||||||
|
|||||||
63
spec/support/common_actions/translations.rb
Normal file
63
spec/support/common_actions/translations.rb
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
module Translations
|
||||||
|
def text_for(field, locale)
|
||||||
|
I18n.with_locale(locale) do
|
||||||
|
"#{translatable_class.human_attribute_name(field)} #{language_texts[locale]}"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def field_for(field, locale, visible: true)
|
||||||
|
if translatable_class.name == "I18nContent"
|
||||||
|
"contents_content_#{translatable.key}values_#{field}_#{locale}"
|
||||||
|
else
|
||||||
|
within(".translatable-fields[data-locale='#{locale}']") do
|
||||||
|
find("input[id$='_#{field}'], textarea[id$='_#{field}']", visible: visible)[:id]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def fill_in_field(field, locale, with:)
|
||||||
|
if input_fields.include?(field)
|
||||||
|
fill_in field_for(field, locale), with: with
|
||||||
|
else
|
||||||
|
fill_in_textarea(field, textarea_fields[field], locale, with: with)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def fill_in_textarea(field, textarea_type, locale, with:)
|
||||||
|
if textarea_type == :markdownit
|
||||||
|
click_link class: "fullscreen-toggle"
|
||||||
|
fill_in field_for(field, locale), with: with
|
||||||
|
click_link class: "fullscreen-toggle"
|
||||||
|
elsif textarea_type == :ckeditor
|
||||||
|
fill_in_ckeditor field_for(field, locale, visible: false), with: with
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def expect_page_to_have_translatable_field(field, locale, with:)
|
||||||
|
if input_fields.include?(field)
|
||||||
|
if translatable_class.name == "I18nContent" && with.blank?
|
||||||
|
expect(page).to have_field field_for(field, locale)
|
||||||
|
else
|
||||||
|
expect(page).to have_field field_for(field, locale), with: with
|
||||||
|
end
|
||||||
|
else
|
||||||
|
textarea_type = textarea_fields[field]
|
||||||
|
|
||||||
|
if textarea_type == :markdownit
|
||||||
|
click_link class: "fullscreen-toggle"
|
||||||
|
expect(page).to have_field field_for(field, locale), with: with
|
||||||
|
click_link class: "fullscreen-toggle"
|
||||||
|
elsif textarea_type == :ckeditor
|
||||||
|
within("div.js-globalize-attribute[data-locale='#{locale}'] .ckeditor [id$='#{field}']") do
|
||||||
|
# Wait longer for iframe initialization
|
||||||
|
expect(page).to have_selector "iframe.cke_wysiwyg_frame", wait: 5
|
||||||
|
within_frame(textarea_fields.keys.index(field)) { expect(page).to have_content with }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def front_end_path_to_visit?(path)
|
||||||
|
path[/admin|managment|valuation/].blank?
|
||||||
|
end
|
||||||
|
end
|
||||||
Reference in New Issue
Block a user