FEATURE: Add group settngs to allow users to leave a group freely.

https://meta.discourse.org/t/split-join-leave-freely-setting-on-groups/65565
This commit is contained in:
Guo Xiang Tan
2017-07-28 11:37:10 +09:00
parent 5012d46cbd
commit 4620dfe92d
25 changed files with 315 additions and 89 deletions
@@ -12,7 +12,17 @@ QUnit.test("Editing group", assert => {
assert.ok(find('.group-flair-inputs').length === 1, 'it should display avatar flair inputs');
assert.ok(find('.group-edit-bio').length === 1, 'it should display group bio input');
assert.ok(find('.group-edit-full-name').length === 1, 'it should display group full name input');
assert.ok(find('.group-edit-public').length === 1, 'it should display group public input');
assert.ok(
find('.group-edit-public-admission').length === 1,
'it should display group public admission input'
);
assert.ok(
find('.group-edit-public-exit').length === 1,
'it should display group public exit input'
);
assert.ok(find('.group-edit-allow-membership-requests').length === 1, 'it should display group allow_membership_requets input');
assert.ok(find('.group-members-input .item').length === 7, 'it should display group members');
assert.ok(find('.group-members-input-selector').length === 1, 'it should display input to add group members');
@@ -20,14 +30,20 @@ QUnit.test("Editing group", assert => {
});
andThen(() => {
assert.ok(find('.group-edit-allow-membership-requests[disabled]').length === 1, 'it should disable group allow_membership_request input');
assert.ok(
find('.group-edit-allow-membership-requests[disabled]').length === 1,
'it should disable group allow_membership_request input'
);
});
click('.group-edit-public');
click('.group-edit-public-admission');
click('.group-edit-allow-membership-requests');
andThen(() => {
assert.ok(find('.group-edit-public[disabled]').length === 1, 'it should disable group public input');
assert.ok(
find('.group-edit-public-admission[disabled]').length === 1,
'it should disable group public admission input'
);
});
});
@@ -37,4 +53,4 @@ QUnit.test("Editing group as an anonymous user", assert => {
andThen(() => {
assert.ok(count('.group-members tr') > 0, "it should redirect to members page for an anonymous user");
});
});
});
@@ -2,18 +2,52 @@ moduleFor('component:group-membership-button');
QUnit.test('canJoinGroup', function(assert) {
this.subject().setProperties({
model: { public: false }
model: { public_admission: false, is_group_user: true }
});
assert.equal(this.subject().get("canJoinGroup"), false, "non public group cannot be joined");
assert.equal(
this.subject().get("canJoinGroup"), false,
"can't join group if public_admission is false"
);
this.subject().set("model.public", true);
this.subject().set("model.public_admission", true);
assert.equal(this.subject().get("canJoinGroup"), true, "public group can be joined");
assert.equal(
this.subject().get("canJoinGroup"), false,
"can't join group if user is already in the group"
);
this.subject().setProperties({ currentUser: null, model: { public: true } });
this.subject().set("model.is_group_user", false);
assert.equal(this.subject().get("canJoinGroup"), true, "can't join group when not logged in");
assert.equal(
this.subject().get("canJoinGroup"), true,
"allowed to join group"
);
});
QUnit.test('canLeaveGroup', function(assert) {
this.subject().setProperties({
model: { public_exit: false, is_group_user: false }
});
assert.equal(
this.subject().get("canLeaveGroup"), false,
"can't leave group if public_exit is false"
);
this.subject().set("model.public_exit", true);
assert.equal(
this.subject().get("canLeaveGroup"), false,
"can't leave group if user is not in the group"
);
this.subject().set("model.is_group_user", true);
assert.equal(
this.subject().get("canLeaveGroup"), true,
"allowed to leave group"
);
});
QUnit.test('userIsGroupUser', function(assert) {
@@ -20,16 +20,22 @@ QUnit.test("disablePublicSetting", function(assert) {
QUnit.test("disableMembershipRequestSetting", function(assert) {
this.subject().setProperties({
model: { visibility_level: 1, public: false, canEveryoneMention: true }
model: { visibility_level: 1, public_admission: false, canEveryoneMention: true }
});
assert.equal(this.subject().get("disableMembershipRequestSetting"), true, "it should disable setting");
this.subject().set("model.visibility_level", 0);
assert.equal(this.subject().get("disableMembershipRequestSetting"), false, "it should enable setting");
assert.equal(
this.subject().get("disableMembershipRequestSetting"), false,
"it should enable setting"
);
this.subject().set("model.public", true);
this.subject().set("model.public_admission", true);
assert.equal(this.subject().get("disableMembershipRequestSetting"), true, "it should disalbe setting");
assert.equal(
this.subject().get("disableMembershipRequestSetting"), true,
"it should disable setting"
);
});
@@ -8,7 +8,8 @@ export default {
"user_count":8,
"alias_level":99,
"visible":true,
"public":true,
"public_admission":true,
"public_exit":true,
"flair_url": 'fa-adjust',
"is_group_owner":true,
"mentionable":true
@@ -1,3 +1,3 @@
export default {
"/groups.json": {"groups":[{"id":41,"automatic":false,"name":"discourse","user_count":0,"alias_level":0,"visible":true,"automatic_membership_email_domains":"","automatic_membership_retroactive":false,"primary_group":false,"title":null,"grant_trust_level":null,"has_messages":false,"flair_url":null,"flair_bg_color":null,"flair_color":null,"bio_raw":"","bio_cooked":null,"public":true,"allow_membership_requests":false,"full_name":"Awesome Team"},{"id":42,"automatic":false,"name":"Macdonald","user_count":0,"alias_level":99,"visible":true,"automatic_membership_email_domains":"","automatic_membership_retroactive":false,"primary_group":false,"title":null,"grant_trust_level":null,"has_messages":false,"flair_url":null,"flair_bg_color":null,"flair_color":null,"bio_raw":null,"bio_cooked":null,"public":false,"allow_membership_requests":true,"full_name":null}],"extras":{"group_user_ids":[]},"total_rows_groups":2,"load_more_groups":"/groups?page=1"}
"/groups.json": {"groups":[{"id":41,"automatic":false,"name":"discourse","user_count":0,"alias_level":0,"visible":true,"automatic_membership_email_domains":"","automatic_membership_retroactive":false,"primary_group":false,"title":null,"grant_trust_level":null,"has_messages":false,"flair_url":null,"flair_bg_color":null,"flair_color":null,"bio_raw":"","bio_cooked":null,"public_admission":true,"allow_membership_requests":false,"full_name":"Awesome Team"},{"id":42,"automatic":false,"name":"Macdonald","user_count":0,"alias_level":99,"visible":true,"automatic_membership_email_domains":"","automatic_membership_retroactive":false,"primary_group":false,"title":null,"grant_trust_level":null,"has_messages":false,"flair_url":null,"flair_bg_color":null,"flair_color":null,"bio_raw":null,"bio_cooked":null,"public_admission":false,"allow_membership_requests":true,"full_name":null}],"extras":{"group_user_ids":[]},"total_rows_groups":2,"load_more_groups":"/groups?page=1"}
}