discourse/test/javascripts/widgets/user-menu-test.js.es6

107 lines
2.5 KiB
JavaScript

import { moduleForWidget, widgetTest } from 'helpers/widget-test';
moduleForWidget('user-menu');
widgetTest('basics', {
template: '{{mount-widget widget="user-menu"}}',
test(assert) {
assert.ok(this.$('.user-menu').length);
assert.ok(this.$('.user-activity-link').length);
assert.ok(this.$('.user-bookmarks-link').length);
assert.ok(this.$('.user-preferences-link').length);
assert.ok(this.$('.notifications').length);
}
});
widgetTest('log out', {
template: '{{mount-widget widget="user-menu" logout="logout"}}',
setup() {
this.on('logout', () => this.loggedOut = true);
},
test(assert) {
assert.ok(this.$('.logout').length);
click('.logout');
andThen(() => {
assert.ok(this.loggedOut);
});
}
});
widgetTest('private messages - disabled', {
template: '{{mount-widget widget="user-menu"}}',
setup() {
this.siteSettings.enable_private_messages = false;
},
test(assert) {
assert.ok(!this.$('.user-pms-link').length);
}
});
widgetTest('private messages - enabled', {
template: '{{mount-widget widget="user-menu"}}',
setup() {
this.siteSettings.enable_private_messages = true;
},
test(assert) {
assert.ok(this.$('.user-pms-link').length);
}
});
widgetTest('anonymous', {
template: '{{mount-widget widget="user-menu" toggleAnonymous="toggleAnonymous"}}',
setup() {
this.currentUser.setProperties({ is_anonymous: false, trust_level: 3 });
this.siteSettings.allow_anonymous_posting = true;
this.siteSettings.anonymous_posting_min_trust_level = 3;
this.on('toggleAnonymous', () => this.anonymous = true);
},
test(assert) {
assert.ok(this.$('.enable-anonymous').length);
click('.enable-anonymous');
andThen(() => {
assert.ok(this.anonymous);
});
}
});
widgetTest('anonymous - disabled', {
template: '{{mount-widget widget="user-menu"}}',
setup() {
this.siteSettings.allow_anonymous_posting = false;
},
test(assert) {
assert.ok(!this.$('.enable-anonymous').length);
}
});
widgetTest('anonymous - switch back', {
template: '{{mount-widget widget="user-menu" toggleAnonymous="toggleAnonymous"}}',
setup() {
this.currentUser.setProperties({ is_anonymous: true });
this.siteSettings.allow_anonymous_posting = true;
this.on('toggleAnonymous', () => this.anonymous = true);
},
test(assert) {
assert.ok(this.$('.disable-anonymous').length);
click('.disable-anonymous');
andThen(() => {
assert.ok(this.anonymous);
});
}
});