From 20a882389a3eb93bbc32454c0f3fd43326cd4585 Mon Sep 17 00:00:00 2001 From: Natalie Tay Date: Wed, 27 Sep 2023 13:54:44 +0800 Subject: [PATCH] FIX: Correct error on add user modal (#23679) --- .../app/components/modal/group-add-members.js | 2 +- .../discourse/app/templates/group-index.hbs | 2 +- spec/system/groups/group_members_spec.rb | 25 ++++++++++++++ spec/system/page_objects/pages/group.rb | 33 +++++++++++++++++++ 4 files changed, 60 insertions(+), 2 deletions(-) create mode 100644 spec/system/groups/group_members_spec.rb create mode 100644 spec/system/page_objects/pages/group.rb diff --git a/app/assets/javascripts/discourse/app/components/modal/group-add-members.js b/app/assets/javascripts/discourse/app/components/modal/group-add-members.js index 3e24d54dee4..0bcd8d2bb94 100644 --- a/app/assets/javascripts/discourse/app/components/modal/group-add-members.js +++ b/app/assets/javascripts/discourse/app/components/modal/group-add-members.js @@ -63,7 +63,7 @@ export default class GroupAddMembers extends Component { }); this.args.closeModal(); }) - .catch((e) => (this.flash = e)) + .catch((e) => (this.flash = e.jqXHR.responseJSON.errors.join(". "))) .finally(() => (this.loading = false)); } } diff --git a/app/assets/javascripts/discourse/app/templates/group-index.hbs b/app/assets/javascripts/discourse/app/templates/group-index.hbs index e14a51ef85e..9fbbb8abab7 100644 --- a/app/assets/javascripts/discourse/app/templates/group-index.hbs +++ b/app/assets/javascripts/discourse/app/templates/group-index.hbs @@ -66,7 +66,7 @@ @icon="plus" @action={{route-action "showInviteModal"}} @label="groups.manage.invite_members" - class="btn-default group-members-add" + class="btn-default group-members-invite" /> {{/if}} diff --git a/spec/system/groups/group_members_spec.rb b/spec/system/groups/group_members_spec.rb new file mode 100644 index 00000000000..6363575d674 --- /dev/null +++ b/spec/system/groups/group_members_spec.rb @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +describe "Group members", type: :system do + let(:group_page) { PageObjects::Pages::Group.new } + fab!(:admin) { Fabricate(:admin) } + fab!(:group) { Fabricate(:group) } + + before { sign_in(admin) } + + describe "adds a user to the group" do + it "should show that the user is already in the group" do + group_page.visit(group).add_users.select_user_and_add(admin) + + expect( + group_page.find(".group-members .directory-table__cell--username.group-member .username"), + ).to have_text(admin.username) + + group_page.add_users.select_user_and_add(admin) + + expect(page.find(".modal-container #modal-alert")).to have_text( + "'#{admin.username}' is already a member of this group", + ) + end + end +end diff --git a/spec/system/page_objects/pages/group.rb b/spec/system/page_objects/pages/group.rb new file mode 100644 index 00000000000..b8a3a8f7bd4 --- /dev/null +++ b/spec/system/page_objects/pages/group.rb @@ -0,0 +1,33 @@ +# frozen_string_literal: true + +module PageObjects + module Pages + class Group < PageObjects::Pages::Base + def visit(group) + page.visit("/g/#{group.name}") + self + end + + def find(selector) + page.find(".group #{selector}") + end + + def add_users + find(".group-members-manage button.group-members-add").click + self + end + + def select_user_and_add(user) + page.find( + ".modal-container .user-chooser .multi-select-header .select-kit-header-wrapper", + ).click + page.find(".modal-container .user-chooser .filter-input").set(user.username) + page.find( + ".modal-container li.email-group-user-chooser-row[data-value='#{user.username}']", + ).click + page.find(".modal-container button.add.btn-primary").click + self + end + end + end +end