<% end %>
-
- <%= render 'interests', user: @user if valid_interests_access? %>
-
diff --git a/config/locales/en/community.yml b/config/locales/en/community.yml
index 137787563..d7a892aa8 100644
--- a/config/locales/en/community.yml
+++ b/config/locales/en/community.yml
@@ -14,29 +14,31 @@ en:
proposal: Participate in the community of this proposal. An active community can help to improve the content of the proposal and boost its dissemination to get more support.
investment: Participate in the community of this budget investment. An active community can help to improve the content of the budget investment and boost its dissemination to get more support.
create_first_community_topic:
- first_theme_not_logged_in: No issue yet available, participate creating the first one. Click on the create new topic button.
+ first_theme_not_logged_in: No issue available, participate creating the first one.
first_theme: Create the first community topic
- sub_first_theme: To create a theme you have to %{link}
- sign_link: "access %{org_name}"
+ sub_first_theme: "To create a theme you must to %{sign_in} o %{sign_up}."
+ sign_in: "sign in"
+ sign_up: "sign up"
tab:
participants: Participants
sidebar:
participate: Participate
new_topic: Create topic
- disabled_info_title: You need to be logged to create a new topic
topic:
- edit_button: Edit
- destroy_button: Destroy
+ edit: Edit topic
+ destroy: Destroy topic
comments:
one: 1 comment
other: "%{count} comments"
zero: No comments
+ author: Author
+ back: Back to %{community} %{proposal}
topic:
create: Create a topic
edit: Edit Topic
form:
- topic_title: Topic Title
- topic_description: Description
+ topic_title: Title
+ topic_text: Initial text
new:
submit_button: Create topic
edit:
diff --git a/config/locales/en/general.yml b/config/locales/en/general.yml
index 9d1ad1560..ad5cc30e3 100644
--- a/config/locales/en/general.yml
+++ b/config/locales/en/general.yml
@@ -13,10 +13,8 @@ en:
phone_number_label: Phone number
public_activity_label: Keep my list of activities public
public_interests_label: Keep my interests public
- public_interests_my_title_list: List of interests (tags of elements you follow)
- public_interests_user_title_list: List of interests (tags of elements this user follows)
- public_interests_my_empty_list: You do not follow any elements yet.
- public_interests_user_empty_list: This user does not follow any elements yet.
+ public_interests_my_title_list: Tags of elements you follow
+ public_interests_user_title_list: Tags of elements this user follows
save_changes_submit: Save changes
subscription_to_website_newsletter_label: Receive by email website relevant information
email_on_direct_message_label: Receive emails about direct messages
@@ -570,6 +568,7 @@ en:
collective: Collective
flag: Flag as inappropriate
follow: "Follow"
+ following: "Following"
follow_entity: "Follow %{entity}"
followable:
budget_investment:
@@ -614,7 +613,6 @@ en:
target_blank_html: " (link opens in new window)"
you_are_in: "You are in"
unflag: Unflag
- unfollow: "Unfollow"
unfollow_entity: "Unfollow %{entity}"
outline:
budget: Participatory budget
diff --git a/config/locales/en/settings.yml b/config/locales/en/settings.yml
index 59452bbe6..531393e65 100644
--- a/config/locales/en/settings.yml
+++ b/config/locales/en/settings.yml
@@ -44,6 +44,7 @@ en:
recommendations: Recommendeds
community: Community on proposals and investments
map: Proposals and budget investments geolocation
+ allow_images: Allow upload and show images
map_latitude: Latitude
map_longitude: Longitude
map_zoom: Zoom
diff --git a/config/locales/es/community.yml b/config/locales/es/community.yml
index abfe24a67..f08a4918a 100644
--- a/config/locales/es/community.yml
+++ b/config/locales/es/community.yml
@@ -14,29 +14,31 @@ es:
proposal: Participa en la comunidad de esta propuesta. Una comunidad activa puede ayudar a mejorar el contenido de la propuesta así como a dinamizar su difusión para conseguir más apoyos.
investment: Participa en la comunidad de este proyecto de inversión. Una comunidad activa puede ayudar a mejorar el contenido del proyecto de inversión así como a dinamizar su difusión para conseguir más apoyos.
create_first_community_topic:
- first_theme_not_logged_in: Aún no hay ningun tema disponible, participa creando el primero. Haz click en el botón crear nuevo tema.
+ first_theme_not_logged_in: No hay ningún tema disponible, participa creando el primero.
first_theme: Crea el primer tema de la comunidad
- sub_first_theme: Para crear un tema tienes que %{link}
- sign_link: "acceder a %{org_name}"
+ sub_first_theme: "Para crear un tema debes %{sign_in} o %{sign_up}."
+ sign_in: "iniciar sesión"
+ sign_up: "registrarte"
tab:
participants: Participantes
sidebar:
participate: Participa
new_topic: Crea un tema
- disabled_info_title: Necesitas estar logueado para crear un nuevo tema
topic:
- edit_button: Editar
- destroy_button: Eliminar
+ edit: Editar tema
+ destroy: Eliminar tema
comments:
zero: Sin comentarios
one: 1 Comentario
other: "%{count} Comentarios"
+ author: Autor
+ back: Volver a %{community} %{proposal}
topic:
create: Crear un tema
edit: Editar tema
form:
- topic_title: Titulo del tema
- topic_description: Descripción
+ topic_title: Título
+ topic_text: Texto inicial
new:
submit_button: Crear tema
edit:
diff --git a/config/locales/es/general.yml b/config/locales/es/general.yml
index a90d6837e..e455e1770 100644
--- a/config/locales/es/general.yml
+++ b/config/locales/es/general.yml
@@ -13,10 +13,8 @@ es:
phone_number_label: Teléfono
public_activity_label: Mostrar públicamente mi lista de actividades
public_interests_label: Mostrar públicamente mis intereses
- public_interests_my_title_list: Lista de intereses (etiquetas de los elementos que sigues)
- public_interests_user_title_list: Lista de intereses (etiquetas de los elementos seguidos este usuario)
- public_interests_my_empty_list: Aún no sigues ningún elemento.
- public_interests_user_empty_list: Este usuario no sigue ningún elemento todavía.
+ public_interests_my_title_list: Etiquetas de los elementos que sigues
+ public_interests_user_title_list: Etiquetas de los elementos que sigue este usuario
save_changes_submit: Guardar cambios
subscription_to_website_newsletter_label: Recibir emails con información interesante sobre la web
email_on_direct_message_label: Recibir emails con mensajes privados
@@ -567,6 +565,7 @@ es:
collective: Colectivo
flag: Denunciar como inapropiado
follow: "Seguir"
+ following: "Siguiendo"
follow_entity: "Seguir %{entity}"
followable:
budget_investment:
@@ -611,7 +610,6 @@ es:
target_blank_html: " (se abre en ventana nueva)"
you_are_in: "Estás en"
unflag: Deshacer denuncia
- unfollow: "Dejar de seguir"
unfollow_entity: "Dejar de seguir %{entity}"
outline:
budget: Presupuestos participativos
diff --git a/config/locales/es/settings.yml b/config/locales/es/settings.yml
index bf8e112ac..3473a99dd 100644
--- a/config/locales/es/settings.yml
+++ b/config/locales/es/settings.yml
@@ -44,6 +44,7 @@ es:
recommendations: Recomendaciones
community: Comunidad en propuestas y proyectos de inversión
map: Geolocalización de propuestas y proyectos de inversión
+ allow_images: Permitir subir y mostrar imágenes
map_latitude: Latitud
map_longitude: Longitud
map_zoom: Zoom
diff --git a/db/dev_seeds.rb b/db/dev_seeds.rb
index af3e602e6..3c4462e85 100644
--- a/db/dev_seeds.rb
+++ b/db/dev_seeds.rb
@@ -51,6 +51,7 @@ section "Creating Settings" do
Setting.create(key: 'feature.user.recommendations', value: "true")
Setting.create(key: 'feature.community', value: "true")
Setting.create(key: 'feature.map', value: "true")
+ Setting.create(key: 'feature.allow_images', value: "true")
Setting.create(key: 'feature.public_stats', value: "true")
Setting.create(key: 'per_page_code_head', value: "")
Setting.create(key: 'per_page_code_body', value: "")
diff --git a/db/migrate/20171212193323_add_timestamps_to_polls.rb b/db/migrate/20171212193323_add_timestamps_to_polls.rb
new file mode 100644
index 000000000..9c955b278
--- /dev/null
+++ b/db/migrate/20171212193323_add_timestamps_to_polls.rb
@@ -0,0 +1,5 @@
+class AddTimestampsToPolls < ActiveRecord::Migration
+ def change
+ add_timestamps :polls, null: true
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index bc25f5e43..c3e107aae 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -11,7 +11,7 @@
#
# It's strongly recommended that you check this file into your version control system.
-ActiveRecord::Schema.define(version: 20171212154048) do
+ActiveRecord::Schema.define(version: 20171212193323) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
@@ -799,6 +799,8 @@ ActiveRecord::Schema.define(version: 20171212154048) do
t.datetime "hidden_at"
t.boolean "results_enabled", default: false
t.boolean "stats_enabled", default: false
+ t.datetime "created_at"
+ t.datetime "updated_at"
end
add_index "polls", ["starts_at", "ends_at"], name: "index_polls_on_starts_at_and_ends_at", using: :btree
diff --git a/db/seeds.rb b/db/seeds.rb
index 6758bf75c..e06b5d07d 100644
--- a/db/seeds.rb
+++ b/db/seeds.rb
@@ -84,6 +84,7 @@ Setting['feature.legislation'] = true
Setting['feature.user.recommendations'] = true
Setting['feature.community'] = true
Setting['feature.map'] = nil
+Setting['feature.allow_images'] = true
# Spending proposals feature flags
Setting['feature.spending_proposal_features.voting_allowed'] = nil
diff --git a/lib/tasks/polls.rake b/lib/tasks/polls.rake
new file mode 100644
index 000000000..cf10afffd
--- /dev/null
+++ b/lib/tasks/polls.rake
@@ -0,0 +1,6 @@
+namespace :polls do
+ desc "Adds created_at and updated_at values to existing polls"
+ task initialize_timestamps: :environment do
+ Poll.update_all(created_at: Time.current, updated_at: Time.current)
+ end
+end
diff --git a/spec/controllers/installation_controller_spec.rb b/spec/controllers/installation_controller_spec.rb
index 7cb9a3af1..4ad446cd4 100644
--- a/spec/controllers/installation_controller_spec.rb
+++ b/spec/controllers/installation_controller_spec.rb
@@ -19,7 +19,8 @@ describe InstallationController, type: :request do
'user.recommendations' => nil,
'community' => nil,
'map' => 't',
- 'spending_proposal_features.voting_allowed' => 't'
+ 'spending_proposal_features.voting_allowed' => 't',
+ 'allow_images' => 't'
}
end
@@ -42,6 +43,7 @@ describe InstallationController, type: :request do
Setting['feature.community'] = true
Setting['feature.map'] = nil
Setting['feature.spending_proposal_features.voting_allowed'] = nil
+ Setting['feature.allow_images'] = true
end
specify "with query string inside query params" do
diff --git a/spec/features/budgets/investments_spec.rb b/spec/features/budgets/investments_spec.rb
index 3e3aadf4d..fd0f80b2c 100644
--- a/spec/features/budgets/investments_spec.rb
+++ b/spec/features/budgets/investments_spec.rb
@@ -9,6 +9,14 @@ feature 'Budget Investments' do
let(:group) { create(:budget_group, name: "Health", budget: budget) }
let!(:heading) { create(:budget_heading, name: "More hospitals", group: group) }
+ before do
+ Setting['feature.allow_images'] = true
+ end
+
+ after do
+ Setting['feature.allow_images'] = nil
+ end
+
scenario 'Index' do
investments = [create(:budget_investment, heading: heading),
create(:budget_investment, heading: heading),
@@ -37,7 +45,7 @@ feature 'Budget Investments' do
visit budget_investments_path(budget, heading_id: heading.id)
within("#budget_investment_#{investment.id}") do
- expect(page).to have_css("div.no-image")
+ expect(page).to_not have_css("div.with-image")
end
within("#budget_investment_#{investment_with_image.id}") do
expect(page).to have_css("img[alt='#{investment_with_image.image.title}']")
diff --git a/spec/features/communities_spec.rb b/spec/features/communities_spec.rb
index 2909f416e..725364074 100644
--- a/spec/features/communities_spec.rb
+++ b/spec/features/communities_spec.rb
@@ -24,16 +24,6 @@ feature 'Communities' do
expect(page).to have_content proposal.title
expect(page).to have_content "Participate in the community of this proposal"
expect(page).to have_link("Create topic", href: new_community_topic_path(community))
- expect(page).not_to have_selector(".button.disabled", text: "Create topic")
- end
-
- scenario 'Should display disabled create topic button when user is not logged' do
- proposal = create(:proposal)
- community = proposal.community
-
- visit community_path(community)
-
- expect(page).to have_selector(".button.disabled", text: "Create topic")
end
scenario 'Should display without_topics_text and participants when there are not topics' do
@@ -100,7 +90,7 @@ feature 'Communities' do
expect(topic2.title).to appear_before(topic1.title)
end
- scenario 'Should display topic edit button when author is logged' do
+ scenario 'Should display topic edit button on topic show when author is logged' do
proposal = create(:proposal)
community = proposal.community
user = create(:user)
@@ -108,15 +98,11 @@ feature 'Communities' do
topic2 = create(:topic, community: community)
login_as(user)
- visit community_path(community)
+ visit community_topic_path(community, topic1)
+ expect(page).to have_link("Edit topic", href: edit_community_topic_path(community, topic1))
- within "#topic_#{topic1.id}" do
- expect(page).to have_link("Edit", href: edit_community_topic_path(community, topic1))
- end
-
- within "#topic_#{topic2.id}" do
- expect(page).not_to have_link("Edit", href: edit_community_topic_path(community, topic2))
- end
+ visit community_topic_path(community, topic2)
+ expect(page).not_to have_link("Edit topic", href: edit_community_topic_path(community, topic2))
end
scenario 'Should display participant when there is topics' do
diff --git a/spec/features/proposals_spec.rb b/spec/features/proposals_spec.rb
index 886459c38..e2fd8edbb 100644
--- a/spec/features/proposals_spec.rb
+++ b/spec/features/proposals_spec.rb
@@ -10,6 +10,15 @@ feature 'Proposals' do
end
context 'Index' do
+
+ before do
+ Setting['feature.allow_images'] = true
+ end
+
+ after do
+ Setting['feature.allow_images'] = nil
+ end
+
scenario 'Lists featured and regular proposals' do
featured_proposals = create_featured_proposals
proposals = [create(:proposal), create(:proposal), create(:proposal)]
@@ -61,7 +70,7 @@ feature 'Proposals' do
visit proposals_path(proposal)
within("#proposal_#{proposal.id}") do
- expect(page).to have_css("div.no-image")
+ expect(page).to_not have_css("div.with-image")
end
within("#proposal_#{proposal_with_image.id}") do
expect(page).to have_css("img[alt='#{proposal_with_image.image.title}']")
diff --git a/spec/features/topics_specs.rb b/spec/features/topics_specs.rb
index 0ba674844..a4c8c8ff9 100644
--- a/spec/features/topics_specs.rb
+++ b/spec/features/topics_specs.rb
@@ -4,13 +4,16 @@ feature 'Topics' do
context 'New' do
- scenario 'Should display disabled button to new topic page without user logged', :js do
+ scenario 'Create new topic link should redirect to sign up for anonymous users', :js do
proposal = create(:proposal)
community = proposal.community
+ logout
visit community_path(community)
+ click_link "Create topic"
- expect(page).to have_selector(".button.expanded.disabled")
+ expect(page).to have_content "Sign in with:"
+ expect(current_path).to eq(new_user_session_path)
end
scenario 'Can access to new topic page with user logged', :js do
@@ -34,8 +37,8 @@ feature 'Topics' do
click_link "Create topic"
- expect(page).to have_content "Topic Title"
- expect(page).to have_content "Description"
+ expect(page).to have_content "Title"
+ expect(page).to have_content "Initial text"
expect(page).to have_content "Recommendations to create a topic"
expect(page).to have_content "Do not write the topic title or whole sentences in capital letters. On the internet that is considered shouting. And no one likes to be yelled at."
expect(page).to have_content "Any topic or comment that implies an illegal action will be eliminated, also those that intend to sabotage the spaces of the subject, everything else is allowed."
@@ -128,9 +131,9 @@ feature 'Topics' do
user = create(:user)
topic = create(:topic, community: community, author: user)
login_as(user)
- visit community_path(community)
+ visit community_topic_path(community, topic)
- click_link "Destroy"
+ click_link "Destroy topic"
expect(page).to have_content "Topic deleted successfully."
expect(page).not_to have_content topic.title
diff --git a/spec/features/users_spec.rb b/spec/features/users_spec.rb
index 5a73209df..0ca1f0266 100644
--- a/spec/features/users_spec.rb
+++ b/spec/features/users_spec.rb
@@ -259,6 +259,9 @@ feature 'Users' do
end
scenario 'User can display public page' do
+ proposal = create(:proposal, tag_list: "Sport")
+ create(:follow, :followed_proposal, followable: proposal, user: @user)
+
login_as(@user)
visit account_path
@@ -267,22 +270,29 @@ feature 'Users' do
logout
- visit user_path(@user)
+ visit user_path(@user, filter: 'follows', page: '1')
+
expect(page).to have_css('#public_interests')
end
scenario 'Is always visible for the owner' do
+ proposal = create(:proposal, tag_list: "Sport")
+ create(:follow, :followed_proposal, followable: proposal, user: @user)
+
login_as(@user)
visit account_path
uncheck 'account_public_interests'
click_button 'Save changes'
- visit user_path(@user)
+ visit user_path(@user, filter: 'follows', page: '1')
expect(page).to have_css('#public_interests')
end
scenario 'Is always visible for admins' do
+ proposal = create(:proposal, tag_list: "Sport")
+ create(:follow, :followed_proposal, followable: proposal, user: @user)
+
login_as(@user)
visit account_path
@@ -292,11 +302,14 @@ feature 'Users' do
logout
login_as(create(:administrator).user)
- visit user_path(@user)
+ visit user_path(@user, filter: 'follows', page: '1')
expect(page).to have_css('#public_interests')
end
scenario 'Is always visible for moderators' do
+ proposal = create(:proposal, tag_list: "Sport")
+ create(:follow, :followed_proposal, followable: proposal, user: @user)
+
login_as(@user)
visit account_path
@@ -306,38 +319,29 @@ feature 'Users' do
logout
login_as(create(:moderator).user)
- visit user_path(@user)
+ visit user_path(@user, filter: 'follows', page: '1')
expect(page).to have_css('#public_interests')
end
scenario 'Should display generic interests title' do
- @user.update(public_interests: true)
- visit user_path(@user)
+ proposal = create(:proposal, tag_list: "Sport")
+ create(:follow, :followed_proposal, followable: proposal, user: @user)
- expect(page).to have_content("List of interests (tags of elements this user follows)")
+ @user.update(public_interests: true)
+ visit user_path(@user, filter: 'follows', page: '1')
+
+ expect(page).to have_content("Tags of elements this user follows")
end
scenario 'Should display custom interests title when user is visiting own user page' do
+ proposal = create(:proposal, tag_list: "Sport")
+ create(:follow, :followed_proposal, followable: proposal, user: @user)
+
@user.update(public_interests: true)
login_as(@user)
- visit user_path(@user)
+ visit user_path(@user, filter: 'follows', page: '1')
- expect(page).to have_content("List of interests (tags of elements you follow)")
- end
-
- scenario 'Should display generic empty interests list message when visited user has not interests defined' do
- @user.update(public_interests: true)
- visit user_path(@user)
-
- expect(page).to have_content("This user does not follow any elements yet.")
- end
-
- scenario 'Should display custom empty interests list message when user has not interests defined and user is visiting own user page' do
- @user.update(public_interests: true)
- login_as(@user)
- visit user_path(@user)
-
- expect(page).to have_content("You do not follow any elements yet.")
+ expect(page).to have_content("Tags of elements you follow")
end
end
@@ -418,22 +422,22 @@ feature 'Users' do
expect(page).to have_content('1 Following')
end
- scenario 'Display accordion proposal tab when user is following one proposal at least' do
+ scenario 'Display proposal tab when user is following one proposal at least' do
proposal = create(:proposal)
create(:follow, followable: proposal, user: @user)
visit user_path(@user, filter: "follows")
- expect(page).to have_link('Citizen proposals', href: "#")
+ expect(page).to have_link('Citizen proposals', href: "#citizen_proposals")
end
- scenario 'Not display accordion proposal tab when user is not following any proposal' do
+ scenario 'Not display proposal tab when user is not following any proposal' do
visit user_path(@user, filter: "follows")
- expect(page).not_to have_link('Citizen proposals', href: "#")
+ expect(page).not_to have_link('Citizen proposals', href: "#citizen_proposals")
end
- scenario 'Display proposal with action buttons inside accordion proposal tab when current user is proposal author', :js do
+ scenario 'Display proposals with link to proposal' do
proposal = create(:proposal, author: @user)
create(:follow, followable: proposal, user: @user)
login_as @user
@@ -442,35 +446,7 @@ feature 'Users' do
click_link 'Citizen proposals'
expect(page).to have_content proposal.title
- expect(page).to have_link "Send notification"
- expect(page).to have_link "Retire"
end
-
- scenario 'Display proposal with action buttons inside accordion proposal tab when there is no logged user', :js do
- proposal = create(:proposal, author: @user)
- create(:follow, followable: proposal, user: @user)
-
- visit user_path(@user, filter: "follows")
- click_link 'Citizen proposals'
-
- expect(page).to have_content proposal.title
- expect(page).not_to have_link "Send notification"
- expect(page).not_to have_link "Retire"
- end
-
- scenario 'Display proposal without action buttons inside accordion proposal tab when current user is not proposal author', :js do
- proposal = create(:proposal)
- create(:follow, followable: proposal, user: @user)
- login_as @user
-
- visit user_path(@user, filter: "follows")
- click_link 'Citizen proposals'
-
- expect(page).to have_content proposal.title
- expect(page).not_to have_link "Send notification"
- expect(page).not_to have_link "Retire"
- end
-
end
describe 'Budget Investments' do
@@ -484,35 +460,22 @@ feature 'Users' do
expect(page).to have_content('1 Following')
end
- scenario 'Display accordion budget investment tab when user is following one budget investment at least' do
+ scenario 'Display budget investment tab when user is following one budget investment at least' do
budget_investment = create(:budget_investment)
create(:follow, followable: budget_investment, user: @user)
- visit user_path(@user, filter: "follow")
+ visit user_path(@user, filter: "follows")
- expect(page).to have_link('Investments', href: "#")
+ expect(page).to have_link('Investments', href: "#investments")
end
- scenario 'Not display accordion budget investment tab when user is not following any budget investment' do
- visit user_path(@user, filter: "follow")
+ scenario 'Not display budget investment tab when user is not following any budget investment' do
+ visit user_path(@user, filter: "follows")
- expect(page).not_to have_link('Investments', href: "#")
+ expect(page).not_to have_link('Investments', href: "#investments")
end
- scenario 'Display budget investment with action buttons inside accordion budget investment tab when current user is a verified user and author', :js do
- user = create(:user, :level_two)
- budget_investment = create(:budget_investment, author: user)
- create(:follow, followable: budget_investment, user: user)
- login_as user
-
- visit user_path(user, filter: "follows")
- click_link 'Investments'
-
- expect(page).to have_link budget_investment.title
- expect(page).to have_link "Delete"
- end
-
- scenario 'Display budget investment with action buttons inside accordion budget investment tab when there is no logged user', :js do
+ scenario 'Display budget investment with link to budget investment' do
user = create(:user, :level_two)
budget_investment = create(:budget_investment, author: user)
create(:follow, followable: budget_investment, user: user)
@@ -521,22 +484,7 @@ feature 'Users' do
click_link 'Investments'
expect(page).to have_link budget_investment.title
- expect(page).not_to have_link "Delete"
end
-
- scenario 'Display budget investment without action buttons inside accordion budget investment tab when current user is not budget investment author', :js do
- user = create(:user, :level_two)
- budget_investment = create(:budget_investment)
- create(:follow, followable: budget_investment, user: user)
- login_as user
-
- visit user_path(user, filter: "follows")
- click_link 'Investments'
-
- expect(page).to have_link budget_investment.title
- expect(page).not_to have_link "Delete"
- end
-
end
end
diff --git a/spec/shared/features/followable.rb b/spec/shared/features/followable.rb
index fc42a3ce7..55d47e53c 100644
--- a/spec/shared/features/followable.rb
+++ b/spec/shared/features/followable.rb
@@ -28,7 +28,7 @@ shared_examples "followable" do |followable_class_name, followable_path, followa
visit send(followable_path, arguments)
within "##{dom_id(followable)}" do
- expect(page).to have_link("Follow")
+ expect(page).to have_link("Follow #{followable.model_name.human.downcase}")
end
end
@@ -37,8 +37,7 @@ shared_examples "followable" do |followable_class_name, followable_path, followa
login_as(user)
visit send(followable_path, arguments)
-
- expect(page).to have_link("Follow")
+ expect(page).to have_link("Follow #{followable.model_name.human.downcase}")
end
scenario "Should display unfollow after user clicks on follow button", :js do
@@ -47,10 +46,10 @@ shared_examples "followable" do |followable_class_name, followable_path, followa
visit send(followable_path, arguments)
within "##{dom_id(followable)}" do
- click_link "Follow"
+ click_link("Follow #{followable.model_name.human.downcase}")
- expect(page).not_to have_link "Follow"
- expect(page).to have_link "Unfollow"
+ expect(page).not_to have_link("Follow")
+ expect(page).to have_link("Following")
end
end
@@ -60,7 +59,7 @@ shared_examples "followable" do |followable_class_name, followable_path, followa
visit send(followable_path, arguments)
within "##{dom_id(followable)}" do
- click_link "Follow"
+ click_link("Follow #{followable.model_name.human.downcase}")
end
expect(page).to have_content strip_tags(t("shared.followable.#{followable_class_name}.create.notice_html"))
@@ -73,7 +72,7 @@ shared_examples "followable" do |followable_class_name, followable_path, followa
visit send(followable_path, arguments)
- expect(page).to have_link("Unfollow")
+ expect(page).to have_link("Following")
end
scenario "Should update follow button and show destroy notice after user clicks on unfollow button", :js do
@@ -83,10 +82,10 @@ shared_examples "followable" do |followable_class_name, followable_path, followa
visit send(followable_path, arguments)
within "##{dom_id(followable)}" do
- click_link "Unfollow"
+ click_link("Unfollow #{followable.model_name.human.downcase}")
- expect(page).not_to have_link "Unfollow"
- expect(page).to have_link "Follow"
+ expect(page).not_to have_link("Unfollow")
+ expect(page).to have_link("Follow #{followable.model_name.human.downcase}")
end
end
@@ -97,7 +96,7 @@ shared_examples "followable" do |followable_class_name, followable_path, followa
visit send(followable_path, arguments)
within "##{dom_id(followable)}" do
- click_link "Unfollow"
+ click_link("Unfollow #{followable.model_name.human.downcase}")
end
expect(page).to have_content strip_tags(t("shared.followable.#{followable_class_name}.destroy.notice_html"))
diff --git a/spec/shared/features/nested_imageable.rb b/spec/shared/features/nested_imageable.rb
index 947887afa..721c7e694 100644
--- a/spec/shared/features/nested_imageable.rb
+++ b/spec/shared/features/nested_imageable.rb
@@ -9,6 +9,9 @@ shared_examples "nested imageable" do |imageable_factory_name, path, imageable_p
let!(:imageable) { create(imageable_factory_name) }
before do
+
+ Setting['feature.allow_images'] = true
+
imageable_path_arguments&.each do |argument_name, path_to_value|
arguments.merge!("#{argument_name}": imageable.send(path_to_value))
end
@@ -16,6 +19,10 @@ shared_examples "nested imageable" do |imageable_factory_name, path, imageable_p
imageable.update(author: user) if imageable.respond_to?(:author)
end
+ after do
+ Setting['feature.allow_images'] = nil
+ end
+
describe "at #{path}" do
scenario "Should show new image link when imageable has not an associated image defined" do