Skip to content

Commit 724bc01

Browse files
Aaryanpaljlandiseigsti
authored andcommitted
4634 - Add the Delete button on the Partner Group Page (rubyforgood#4649)
* Add the Delete button on the Partner Group Page * Replace Destroyed with Deleted * Resolve Comments * Added Request Spec for PartnerGroup and remove corresponding system-spec * Fix lint * fix the request-spec
1 parent cc88ddd commit 724bc01

File tree

4 files changed

+66
-2
lines changed

4 files changed

+66
-2
lines changed

app/controllers/partner_groups_controller.rb

+17
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
class PartnerGroupsController < ApplicationController
2+
before_action :set_partner_group, only: %i[edit destroy]
3+
24
def new
35
@partner_group = current_organization.partner_groups.new
46
@item_categories = current_organization.item_categories
@@ -31,8 +33,23 @@ def update
3133
end
3234
end
3335

36+
def destroy
37+
if @partner_group.partners.any?
38+
redirect_to partners_path + "#nav-partner-groups", alert: "Partner Group cannot be deleted."
39+
else
40+
@partner_group.destroy
41+
respond_to do |format|
42+
format.html { redirect_to partners_path + "#nav-partner-groups", notice: "Partner Group was successfully deleted." }
43+
end
44+
end
45+
end
46+
3447
private
3548

49+
def set_partner_group
50+
@partner_group = current_organization.partner_groups.find(params[:id])
51+
end
52+
3653
def partner_group_params
3754
params.require(:partner_group).permit(:name, :send_reminders, :reminder_schedule,
3855
:deadline_day, :by_month_or_week, :day_of_month, :day_of_week, :every_nth_day, item_category_ids: [])

app/views/partners/_partner_groups_table.html.erb

+2-1
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,9 @@
5454
<span class='text-gray-600 text-bold font-italic'>No</span>
5555
<% end %>
5656
</td>
57-
<td class="text-right">
57+
<td class="text-left">
5858
<%= edit_button_to edit_partner_group_path(pg) %>
59+
<%= delete_button_to(partner_group_path(pg),{confirm: confirm_delete_msg(pg.name)}) if pg.partners.none? %>
5960
</td>
6061
</tr>
6162
<% end %>

config/routes.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,7 @@ def set_up_flipper
226226
end
227227
end
228228

229-
resources :partner_groups, only: [:new, :create, :edit, :update]
229+
resources :partner_groups, only: %i(new create edit update destroy)
230230

231231
resources :product_drives
232232

spec/requests/partner_group_spec.rb

+46
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
RSpec.describe "PartnerGroups", type: :request do
2+
let(:user) { create(:user) }
3+
let(:partner_group) { create(:partner_group) }
4+
5+
before do
6+
sign_in(user)
7+
end
8+
9+
describe "DELETE #destroy" do
10+
context "when partner group has no partners" do
11+
let!(:partner_group) { create(:partner_group) }
12+
before { get partners_path + "#nav-partner-groups" }
13+
it "destroys the partner group" do
14+
within "#nav-partner-groups" do
15+
expect(response.body).to have_link("Delete")
16+
end
17+
expect {
18+
delete partner_group_path(partner_group)
19+
}.to change(PartnerGroup, :count).by(-1)
20+
21+
expect(flash[:notice]).to eq("Partner Group was successfully deleted.")
22+
expect(response).to redirect_to(partners_path + "#nav-partner-groups")
23+
end
24+
end
25+
26+
context "when partner group has partners" do
27+
let!(:partner_group) { create(:partner_group) }
28+
29+
before do
30+
create(:partner, partner_group: partner_group)
31+
get partners_path + "#nav-partner-groups"
32+
end
33+
it "does not destroy the partner group" do
34+
within "#nav-partner-groups" do
35+
expect(reponse.body).not_to have_link("Delete")
36+
end
37+
expect {
38+
delete partner_group_path(partner_group)
39+
}.not_to change(PartnerGroup, :count)
40+
41+
expect(flash[:alert]).to eq("Partner Group cannot be deleted.")
42+
expect(response).to redirect_to(partners_path + "#nav-partner-groups")
43+
end
44+
end
45+
end
46+
end

0 commit comments

Comments
 (0)