Skip to content

Commit e3fd241

Browse files
Add group owner add and remove methods (#239)
Added two new methods for adding or removing group owners and update some outdated params for the update user method.
1 parent 8d346a5 commit e3fd241

File tree

2 files changed

+44
-4
lines changed

2 files changed

+44
-4
lines changed

lib/discourse_api/api/groups.rb

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ def update_group(group_id, args)
3838
:messageable_level,
3939
:name,
4040
:automatic_membership_email_domains,
41-
:automatic_membership_retroactive,
4241
:title,
4342
:primary_group,
4443
:grant_trust_level,
@@ -47,19 +46,31 @@ def update_group(group_id, args)
4746
:flair_bg_color,
4847
:flair_color,
4948
:bio_raw,
50-
:members_visibility_level,
49+
:visibility_level,
5150
:public_admission,
5251
:public_exit,
5352
:allow_membership_requests,
5453
:full_name,
5554
:default_notification_level,
56-
:usernames,
57-
:owner_usernames,
5855
:membership_request_template)
5956
.to_h
6057
put("/groups/#{group_id}", group: args)
6158
end
6259

60+
def group_add_owners(group_id, args)
61+
args = API.params(args)
62+
.required(:usernames)
63+
.to_h
64+
put("/admin/groups/#{group_id}/owners.json", group: args)
65+
end
66+
67+
def group_remove_owners(group_id, args)
68+
args = API.params(args)
69+
.required(:usernames)
70+
.to_h
71+
delete("/admin/groups/#{group_id}/owners.json", group: args)
72+
end
73+
6374
def groups(args = {})
6475
params = API.params(args)
6576
.optional(:page)

spec/discourse_api/api/groups_spec.rb

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,35 @@
9191
end
9292
end
9393

94+
describe "add owners" do
95+
let(:url) { "#{host}/admin/groups/123/owners.json" }
96+
97+
before do
98+
stub_put(url)
99+
end
100+
101+
it "makes the member an owner" do
102+
subject.group_add_owners(123, usernames: "sam")
103+
params = escape_params("group[usernames]" => "sam")
104+
expect(a_request(:put, "#{host}/admin/groups/123/owners.json").
105+
with(body: params)
106+
).to have_been_made
107+
end
108+
end
109+
110+
describe "remove owners" do
111+
let(:url) { "#{host}/admin/groups/123/owners.json?group%5Busernames%5D=sam" }
112+
113+
before do
114+
stub_delete(url)
115+
end
116+
117+
it "removes the owner role from the group member" do
118+
subject.group_remove_owners(123, usernames: "sam")
119+
expect(a_delete(url)).to have_been_made
120+
end
121+
end
122+
94123
describe "group members" do
95124
it "list members" do
96125
stub_get("#{host}/groups/mygroup/members.json?limit=100&offset=0").to_return(body: fixture("members_0.json"), headers: { content_type: "application/json" })

0 commit comments

Comments
 (0)