diff --git a/app/controllers/profiles_controller.rb b/app/controllers/profiles_controller.rb
index 3b35ae7..cb98688 100644
--- a/app/controllers/profiles_controller.rb
+++ b/app/controllers/profiles_controller.rb
@@ -28,27 +28,7 @@ def show
@personal_info = personal_info
end
- def work_unavailable
- @profile = current_user.profile
- @profile.unavailable!
- redirect_to profile_path(@profile), notice: t('.success')
- end
-
- def open_to_work
- @profile = current_user.profile
- @profile.open_to_work!
- redirect_to profile_path(@profile), notice: t('.success')
- end
-
- def change_privacy
- @profile = current_user.profile
- if @profile.public_profile?
- @profile.private_profile!
- else
- @profile.public_profile!
- end
- redirect_to profile_path(@profile), notice: t('.success')
- end
+ private
def private_profile?
return if @profile.user == current_user
@@ -59,8 +39,6 @@ def private_profile?
redirect_to root_path, alert: t('.private')
end
- private
-
def profile_params
params.require(:profile).permit(:photo)
end
diff --git a/app/controllers/settings_controller.rb b/app/controllers/settings_controller.rb
index ff30745..57e328f 100644
--- a/app/controllers/settings_controller.rb
+++ b/app/controllers/settings_controller.rb
@@ -15,6 +15,28 @@ def delete_account
redirect_to root_path, notice: t('delete_account')
end
+ def change_privacy
+ @profile = current_user.profile
+ if @profile.public_profile?
+ @profile.private_profile!
+ else
+ @profile.public_profile!
+ end
+ redirect_to profile_settings_path(@profile), notice: t('.success')
+ end
+
+ def work_unavailable
+ @profile = current_user.profile
+ @profile.unavailable!
+ redirect_to profile_settings_path(@profile), notice: t('.success')
+ end
+
+ def open_to_work
+ @profile = current_user.profile
+ @profile.open_to_work!
+ redirect_to profile_settings_path(@profile), notice: t('.success')
+ end
+
private
def redirect_unauthorized_access
diff --git a/app/views/profiles/show.html.erb b/app/views/profiles/show.html.erb
index dc9fbde..897dc53 100644
--- a/app/views/profiles/show.html.erb
+++ b/app/views/profiles/show.html.erb
@@ -29,7 +29,6 @@
<%= render partial: 'profile_photo', locals: { profile: @profile } %>
-
<%= link_to 'Alterar foto', edit_profile_path(@profile), class: 'badge bg-secondary' if current_user == @profile.user %>
- <% if current_user.profile == @profile %>
- <% if @profile.public_profile? %>
-
<%= t Profile.human_attribute_name("privacy.#{@profile.privacy}") %>
- <% else %>
- <%= t Profile.human_attribute_name("privacy.#{@profile.privacy}") %>
- <% end %>
- <%= button_to 'alterar privacidade', change_privacy_path, method: :patch, class: 'btn btn-outline-primary btn-sm' %>
- <% end %>
-
<% if current_user.profile != @profile %>
diff --git a/app/views/settings/index.html.erb b/app/views/settings/index.html.erb
index 9331f0d..6860a40 100644
--- a/app/views/settings/index.html.erb
+++ b/app/views/settings/index.html.erb
@@ -1,20 +1,44 @@
-
Configurações
-
- <%= form_with(url: deactivate_profile_path, method: :patch) do |form| %>
-
Atenção: Todos os dados relacionados ao seu perfil serão ARQUIVADOS. Você pode reativar sua conta fazendo log-in novamente.
- <%= form.submit 'Desativar Perfil',
- class: "btn btn-danger",
- data: { turbo_confirm: 'Seu perfil será DESATIVADO, deseja prosseguir?' }
- %>
- <% end %>
-
+
Configurações
-
- <%= form_with(url: delete_account_path, method: :delete) do |form| %>
-
Atenção: Todos os dados relacionados a conta serão EXCLUÍDOS e não poderão ser recuperados.
- <%= form.submit 'Excluir Conta',
- class: "btn btn-danger",
- data: { turbo_confirm: 'Sua conta será EXCLUÍDA, deseja prosseguir?' }
- %>
- <% end %>
-
+
+ Privacidade
+
+ <% if @profile.public_profile? %>
+
<%= t Profile.human_attribute_name("privacy.#{@profile.privacy}") %>
+ <% else %>
+
<%= t Profile.human_attribute_name("privacy.#{@profile.privacy}") %>
+ <% end %>
+ <%= button_to 'Alterar Privacidade', change_privacy_path, method: :patch, class: 'btn btn-outline-primary btn-sm' %>
+
+
+ <% if @profile.open_to_work? %>
+
<%= t Profile.human_attribute_name("work_status.#{@profile.work_status}") %>
+ <%= button_to 'Alterar Disponibilidade', work_unavailable_path, method: :patch, class: 'btn btn-outline-primary btn-sm' if current_user.profile == @profile %>
+ <% else %>
+
<%= t Profile.human_attribute_name("work_status.#{@profile.work_status}") %>
+ <%= button_to 'Alterar Disponibilidade', open_to_work_path, method: :patch, class: 'btn btn-outline-primary btn-sm' if current_user.profile == @profile %>
+ <% end %>
+
+
+
+
Remoção de conta
+
Atenção: Ao desativar o perfil todos os dados relacionados serão ARQUIVADOS. Você pode reativar sua conta fazendo login novamente.
+
+
+ <%= form_with(url: deactivate_profile_path, method: :patch) do |form| %>
+ <%= form.submit 'Desativar Perfil',
+ class: "btn btn-danger",
+ data: { turbo_confirm: 'Seu perfil será DESATIVADO, deseja prosseguir?' }
+ %>
+ <% end %>
+
+
+
+ <%= form_with(url: delete_account_path, method: :delete) do |form| %>
+ <%= form.submit 'Excluir Conta',
+ class: "btn btn-danger",
+ data: { turbo_confirm: 'Sua conta será EXCLUÍDA, deseja prosseguir?' }
+ %>
+ <% end %>
+
+
diff --git a/config/locales/profile.pt-BR.yml b/config/locales/profile.pt-BR.yml
index b23fb5c..c5f81e2 100644
--- a/config/locales/profile.pt-BR.yml
+++ b/config/locales/profile.pt-BR.yml
@@ -27,12 +27,6 @@ pt-BR:
results:
one: 'resultado'
other: 'resultados'
- work_unavailable:
- success: Alteração salva com sucesso
- open_to_work:
- success: Alteração salva com sucesso
- change_privacy:
- success: Privacidade alterada com sucesso
show:
private: O perfil que você acessou é privado
profile:
diff --git a/config/locales/settings.pt-BR.yml b/config/locales/settings.pt-BR.yml
index 781fc86..bdec9d4 100644
--- a/config/locales/settings.pt-BR.yml
+++ b/config/locales/settings.pt-BR.yml
@@ -1,3 +1,10 @@
pt-BR:
deactivate_profile: Perfil desativado com sucesso
- delete_account: Conta excluída com sucesso
\ No newline at end of file
+ delete_account: Conta excluída com sucesso
+ settings:
+ change_privacy:
+ success: Privacidade alterada com sucesso
+ work_unavailable:
+ success: Alteração salva com sucesso
+ open_to_work:
+ success: Alteração salva com sucesso
\ No newline at end of file
diff --git a/config/routes.rb b/config/routes.rb
index 15daf51..92c9c11 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -24,7 +24,7 @@
resources :users, only: [] do
resources :posts, shallow: true, only: %i[show edit update]
resources :profiles, shallow: true, only: %i[edit show update] do
- resources 'settings', only: %i[index]
+ resources :settings, only: %i[index]
patch :remove_photo, on: :member
resources :connections, only: %i[create index] do
patch 'unfollow', 'follow_again'
@@ -34,10 +34,7 @@
end
delete 'delete_account', controller: :settings
- patch 'deactivate_profile', controller: :settings
- patch 'work_unavailable', controller: :profiles
- patch 'open_to_work', controller: :profiles
- patch 'change_privacy', controller: :profiles
+ patch 'deactivate_profile', 'work_unavailable', 'open_to_work', 'change_privacy', controller: :settings
resources :likes, only: %i[create destroy]
resources :job_categories, only: %i[index create]
diff --git a/spec/system/profiles/user_changes_work_status_spec.rb b/spec/system/profiles/user_changes_work_status_spec.rb
deleted file mode 100644
index 9c181e5..0000000
--- a/spec/system/profiles/user_changes_work_status_spec.rb
+++ /dev/null
@@ -1,55 +0,0 @@
-require 'rails_helper'
-
-describe 'Usuário altera o status de disponibilidade de trabalho' do
- context 'de disponível para indisponível' do
- it 'com sucesso' do
- user = create(:user)
-
- login_as user
- visit profile_path(user.profile)
- click_on 'alterar disponibilidade'
-
- expect(page).to have_current_path profile_path(user.profile)
- expect(page).to have_content 'Alteração salva com sucesso'
- expect(page).to have_content 'Indisponível Para Trabalho'
- end
-
- it 'apenas do seu próprio perfil' do
- user_a = create(:user)
- user_b = create(:user)
-
- login_as user_b
- visit profile_path(user_a.profile)
-
- expect(page).to have_content 'Disponível Para Trabalho'
- expect(page).not_to have_button 'alterar disponibilidade'
- end
- end
-
- context 'de indisponível para disponível' do
- it 'com sucesso' do
- user = create(:user)
- user.profile.unavailable!
-
- login_as user
- visit profile_path(user.profile)
- click_on 'alterar disponibilidade'
-
- expect(page).to have_current_path profile_path(user.profile)
- expect(page).to have_content 'Alteração salva com sucesso'
- expect(page).to have_content 'Disponível Para Trabalho'
- end
-
- it 'apenas do seu próprio perfil' do
- user_a = create(:user)
- user_b = create(:user)
- user_a.profile.unavailable!
-
- login_as user_b
- visit profile_path(user_a.profile)
-
- expect(page).to have_content 'Indisponível Para Trabalho'
- expect(page).not_to have_button 'alterar disponibilidade'
- end
- end
-end
diff --git a/spec/system/profiles/user_changes_profile_to_private_spec.rb b/spec/system/settings/user_changes_profile_to_private_spec.rb
similarity index 86%
rename from spec/system/profiles/user_changes_profile_to_private_spec.rb
rename to spec/system/settings/user_changes_profile_to_private_spec.rb
index 669156b..43d11bb 100644
--- a/spec/system/profiles/user_changes_profile_to_private_spec.rb
+++ b/spec/system/settings/user_changes_profile_to_private_spec.rb
@@ -6,24 +6,14 @@
user = create(:user)
login_as user
- visit profile_path(user.profile)
- click_on 'alterar privacidade'
+ visit profile_settings_path(user.profile)
+ click_on 'Alterar Privacidade'
- expect(page).to have_current_path profile_path(user.profile)
+ expect(page).to have_current_path profile_settings_path(user.profile)
expect(page).to have_content 'Privacidade alterada com sucesso'
expect(page).to have_content 'Perfil Privado'
end
- it 'apenas do seu próprio perfil' do
- user = create(:user)
- another_user = create(:user)
-
- login_as another_user
- visit profile_path(user.profile)
-
- expect(page).not_to have_button 'alterar privacidade'
- end
-
it 'e não aparece nas buscas' do
job_category = create(:job_category, name: 'C++')
private_user = create(:user)
@@ -100,10 +90,10 @@
user.profile.private_profile!
login_as user
- visit profile_path(user.profile)
- click_on 'alterar privacidade'
+ visit profile_settings_path(user.profile)
+ click_on 'Alterar Privacidade'
- expect(page).to have_current_path profile_path(user.profile)
+ expect(page).to have_current_path profile_settings_path(user.profile)
expect(page).to have_content 'Privacidade alterada com sucesso'
expect(page).to have_content 'Perfil Público'
end
diff --git a/spec/system/settings/user_changes_work_status_spec.rb b/spec/system/settings/user_changes_work_status_spec.rb
new file mode 100644
index 0000000..0e8dda5
--- /dev/null
+++ b/spec/system/settings/user_changes_work_status_spec.rb
@@ -0,0 +1,32 @@
+require 'rails_helper'
+
+describe 'Usuário altera o status de disponibilidade de trabalho' do
+ context 'de disponível para indisponível' do
+ it 'com sucesso' do
+ user = create(:user)
+
+ login_as user
+ visit profile_settings_path(user.profile)
+ click_on 'Alterar Disponibilidade'
+
+ expect(page).to have_current_path profile_settings_path(user.profile)
+ expect(page).to have_content 'Alteração salva com sucesso'
+ expect(page).to have_content 'Indisponível Para Trabalho'
+ end
+ end
+
+ context 'de indisponível para disponível' do
+ it 'com sucesso' do
+ user = create(:user)
+ user.profile.unavailable!
+
+ login_as user
+ visit profile_settings_path(user.profile)
+ click_on 'Alterar Disponibilidade'
+
+ expect(page).to have_current_path profile_settings_path(user.profile)
+ expect(page).to have_content 'Alteração salva com sucesso'
+ expect(page).to have_content 'Disponível Para Trabalho'
+ end
+ end
+end
diff --git a/spec/system/settings/user_views_profile_settings_spec.rb b/spec/system/settings/user_views_profile_settings_spec.rb
index 9e49acf..2db447d 100644
--- a/spec/system/settings/user_views_profile_settings_spec.rb
+++ b/spec/system/settings/user_views_profile_settings_spec.rb
@@ -12,9 +12,9 @@
within 'h2' do
expect(page).to have_content 'Configurações'
end
- expect(page).to have_content 'Todos os dados relacionados ao seu perfil serão ARQUIVADOS'
+ expect(page).to have_content 'Atenção: Ao desativar o perfil todos os dados relacionados serão ARQUIVADOS.'
+ expect(page).to have_content 'Você pode reativar sua conta fazendo login novamente.'
expect(page).to have_button 'Desativar Perfil'
- expect(page).to have_content 'Todos os dados relacionados a conta serão EXCLUÍDOS e não poderão ser recuperados'
expect(page).to have_button 'Excluir Conta'
end