123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168 |
- import assert from 'assert';
- import moment from 'moment';
- import React from 'react'; // jshint ignore:line
- import Header from 'misago/components/profile/header'; // jshint ignore:line
- import * as testUtils from 'misago/utils/test-utils';
- let profileMock = null;
- describe("User Profile Header", function() {
- beforeEach(function() {
- profileMock = {
- id: 42,
- username: "BobBoberson",
- email: '',
- joined_on: moment(),
- title: '',
- rank: {
- id: 321,
- name: "Test Rank",
- slug: "test-rank",
- css_class: '',
- is_tab: false,
- title: ''
- },
- status: {
- is_online: true
- },
- is_followed: false,
- acl: {
- can_follow: false,
- can_moderate: false
- }
- };
- });
- afterEach(function() {
- testUtils.unmountComponents();
- });
- it("renders", function() {
- /* jshint ignore:start */
- testUtils.render(<Header profile={profileMock} />);
- /* jshint ignore:end */
- let element = $('#test-mount .page-header');
- assert.ok(element.length, "component renders");
- assert.equal(element.find('h1 .user-name').text(), profileMock.username,
- "header displays correct username");
- assert.equal(element.find('.user-joined-on abbr').text(),
- "Joined a few seconds ago",
- "correct join date is displayed");
- assert.equal(element.find('.user-rank span').text(), "Test Rank",
- "correct rank name is displaued");
- assert.ok(element.find('.user-status-display').length,
- "user status is displayed");
- assert.ok(!element.find('.user-title').length, "no title is displayed");
- assert.ok(!element.find('.user-email').length, "no email is displayed");
- assert.ok(!element.find('.btn-follow').length,
- "follow button is hidden");
- assert.ok(!element.find('.btn-moderate').length,
- "moderate button is hidden");
- });
- it("renders follow button", function() {
- /* jshint ignore:start */
- profileMock.acl.can_follow = true;
- testUtils.render(<Header profile={profileMock} />);
- /* jshint ignore:end */
- let element = $('#test-mount .page-header');
- assert.ok(element.length, "component renders");
- assert.ok(element.find('.btn-follow').length,
- "follow button is shown");
- });
- it("renders moderation button", function() {
- /* jshint ignore:start */
- profileMock.acl.can_moderate = true;
- testUtils.render(<Header profile={profileMock} />);
- /* jshint ignore:end */
- let element = $('#test-mount .page-header');
- assert.ok(element.length, "component renders");
- assert.ok(element.find('.btn-moderate').length,
- "moderate button is shown");
- });
- it("renders email", function() {
- /* jshint ignore:start */
- profileMock.email = 'lorem@ipsum.com';
- testUtils.render(<Header profile={profileMock} />);
- /* jshint ignore:end */
- let element = $('#test-mount .page-header');
- assert.ok(element.length, "component renders");
- assert.ok(element.find('.user-email a').text(), 'lorem@ipsum.com',
- "email address renders");
- });
- it("renders user title", function() {
- /* jshint ignore:start */
- profileMock.title = "Test User";
- testUtils.render(<Header profile={profileMock} />);
- /* jshint ignore:end */
- let element = $('#test-mount .page-header');
- assert.ok(element.length, "component renders");
- assert.ok(element.find('.user-title').text(), "Test User",
- "user title renders");
- });
- it("renders rank title", function() {
- /* jshint ignore:start */
- profileMock.rank.title = "Test Rank User";
- testUtils.render(<Header profile={profileMock} />);
- /* jshint ignore:end */
- let element = $('#test-mount .page-header');
- assert.ok(element.length, "component renders");
- assert.ok(element.find('.user-title').text(), "Test Rank User",
- "user rank title renders");
- });
- it("renders rank url", function() {
- /* jshint ignore:start */
- profileMock.rank.is_tab = true;
- profileMock.rank.absolute_url = '/rank-url/';
- testUtils.render(<Header profile={profileMock} />);
- /* jshint ignore:end */
- let element = $('#test-mount .page-header');
- assert.ok(element.length, "component renders");
- assert.ok(element.find('.user-rank a').text(), profileMock.rank.name,
- "user rank renders as link to profile");
- });
- it("renders compact menu toggle", function(done) { // jshint ignore:line
- /* jshint ignore:start */
- let toggleNav = function() {
- assert.ok(true, "callback was called!");
- done();
- }
- testUtils.render(<Header profile={profileMock} toggleNav={toggleNav} />);
- /* jshint ignore:end */
- let element = $('#test-mount .page-header');
- assert.ok(element.length, "component renders");
- testUtils.simulateClick('.btn-dropdown-toggle');
- });
- });
|