import assert from 'assert';
import React from 'react'; // jshint ignore:line
import { SideNav, CompactNav } from 'misago/components/profile/navs'; // jshint ignore:line
import * as testUtils from 'misago/utils/test-utils';
let pages = [
{
name: 'Followers',
icon: 'heart',
component: 'followers',
meta: {attr: 'test_meta'}
},
{
name: 'Ban details',
icon: 'lock',
component: 'ban-details'
}
];
let profileMock = {
test_meta: 42,
is_followed: false,
acl: {
can_follow: false,
can_moderate: false
}
};
describe("User Profile Side Nav", function() {
afterEach(function() {
testUtils.unmountComponents();
});
it("renders", function() {
/* jshint ignore:start */
testUtils.render(
);
/* jshint ignore:end */
let element = $('#test-mount .nav-side');
assert.ok(element.length, "component renders");
pages.forEach(function(page, i) {
let link = $(element.find('a')[i]);
assert.equal(link.find('.material-icon').text(), page.icon,
"page link contains icon");
assert.ok(link.text().indexOf(page.name) > 0,
"page link contains name");
if (page.meta) {
assert.equal(link.find('.badge').text(), profileMock.test_meta,
"page link contains badge");
}
});
});
});
describe("User Profile Compact Nav", function() {
beforeEach(function() {
profileMock.acl = {
can_follow: false,
can_moderate: false
};
});
afterEach(function() {
testUtils.unmountComponents();
});
it("renders", function() {
/* jshint ignore:start */
testUtils.render(
);
/* jshint ignore:end */
let element = $('#test-mount .dropdown-menu');
assert.ok(element.length, "component renders");
assert.ok(!element.find('.dropdown-buttons').length,
"component has no special options");
pages.forEach(function(page, i) {
let link = $(element.find('a')[i]);
assert.equal(link.find('.material-icon').text(), page.icon,
"page link contains icon");
assert.ok(link.text().indexOf(page.name) > 0,
"page link contains name");
if (page.meta) {
assert.equal(link.find('.badge').text(), profileMock.test_meta,
"page link contains badge");
}
});
});
it("renders follow button", function() {
/* jshint ignore:start */
profileMock.acl.can_follow = true;
testUtils.render(
);
/* jshint ignore:end */
let element = $('#test-mount .dropdown-menu .btn-follow');
assert.ok(element.length, "follow button renders");
});
it("renders moderation button", function(done) { // jshint ignore:line
/* jshint ignore:start */
let toggleModeration = function() {
assert.ok(true, "moderation toggle was clicked");
done();
}
profileMock.acl.can_moderate = true;
testUtils.render(
);
/* jshint ignore:end */
testUtils.simulateClick('#test-mount .dropdown-menu .btn-block');
});
});