123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- import assert from 'assert';
- import React from 'react'; // jshint ignore:line
- import Nav from 'misago/components/profile/moderation/nav'; // jshint ignore:line
- import * as testUtils from 'misago/utils/test-utils';
- let profileMock = null;
- describe("User Profile Moderation Menu", function() {
- beforeEach(function() {
- profileMock = {
- acl: {
- can_moderate_avatar: false,
- can_rename: false,
- can_delete: false
- }
- };
- });
- afterEach(function() {
- testUtils.unmountComponents();
- });
- it("renders", function() {
- /* jshint ignore:start */
- testUtils.render(<Nav profile={profileMock} />);
- /* jshint ignore:end */
- let element = $('#test-mount .dropdown-menu');
- assert.ok(element.length, "component renders");
- assert.ok(!element.find('.btn-link').length,
- "no moderation buttons are defautly displayed");
- });
- it("renders avatar moderation button", function() {
- /* jshint ignore:start */
- profileMock.acl.can_moderate_avatar = true;
- testUtils.render(<Nav profile={profileMock} />);
- /* jshint ignore:end */
- let element = $('#test-mount .dropdown-menu');
- assert.ok(element.length, "component renders");
- assert.equal(element.find('.btn-link').length, 1,
- "moderation button is displayed");
- assert.equal(element.find('.btn-link .material-icon').text(), 'portrait',
- "avatar moderation button has valid icon");
- assert.ok(element.find('.btn-link').text().indexOf("Avatar controls") > 0,
- "avatar moderation button has valid label");
- });
- it("renders username moderation button", function() {
- /* jshint ignore:start */
- profileMock.acl.can_rename = true;
- testUtils.render(<Nav profile={profileMock} />);
- /* jshint ignore:end */
- let element = $('#test-mount .dropdown-menu');
- assert.ok(element.length, "component renders");
- assert.equal(element.find('.btn-link').length, 1,
- "moderation button is displayed");
- assert.equal(element.find('.btn-link .material-icon').text(), 'credit_card',
- "username moderation button has valid icon");
- assert.ok(element.find('.btn-link').text().indexOf("Change username") > 0,
- "username moderation button has valid label");
- });
- it("renders delete button", function() {
- /* jshint ignore:start */
- profileMock.acl.can_delete = true;
- testUtils.render(<Nav profile={profileMock} />);
- /* jshint ignore:end */
- let element = $('#test-mount .dropdown-menu');
- assert.ok(element.length, "component renders");
- assert.equal(element.find('.btn-link').length, 1,
- "moderation button is displayed");
- assert.equal(element.find('.btn-link .material-icon').text(), 'clear',
- "delete user button has valid icon");
- assert.ok(element.find('.btn-link').text().indexOf("Delete account") > 0,
- "delete user button has valid label");
- });
- it("renders menu toggle", function(done) { // jshint ignore:line
- /* jshint ignore:start */
- let toggleNav = function() {
- assert.ok(true, "callback was called!");
- done();
- }
- testUtils.render(<Nav profile={profileMock} toggleNav={toggleNav} />);
- /* jshint ignore:end */
- let element = $('#test-mount .dropdown-menu');
- assert.ok(element.length, "component renders");
- testUtils.simulateClick('.btn-default');
- });
- });
|