import assert from 'assert'; import moment from 'moment'; // jshint ignore:line import React from 'react'; // jshint ignore:line import ListReady from 'misago/components/threads-list/list/ready'; // jshint ignore:line import * as testUtils from 'misago/utils/test-utils'; /* jshint ignore:start */ const props = { threads: [ { id: 123, category: 3, title: "Doloremque alias repudiandae magnam facilis eligendi.", weight: 0, top_category: 3, replies: 2, has_unapproved_posts: false, started_on: moment("2016-04-17T16:37:42.317994Z"), last_post: 68707, last_poster_name: "Amya", last_poster_url: "/user/amya-1522/", last_post_on: moment("2016-04-17T16:37:42.364183Z"), is_read: true, is_unapproved: false, is_hidden: false, is_closed: false, absolute_url: "/threads/not-implemented-yet-123/", last_post_url: "/threads/not-implemented-yet-123/last/", new_post_url: "/threads/not-implemented-yet-123/new/", subscription: true, api_url: "/api/threads/123/", moderation: [], acl: { can_edit: true, can_reply: true, can_hide: 2, can_close: 1, can_report: 1, can_see_reports: 1, can_move: 1, can_pin: 2, can_approve: 1 } }, { id: 42, category: 4, title: "Sit facere pariatur consequatur qui voluptatum ducimus.", weight: 0, top_category: 3, replies: 3, has_unapproved_posts: false, started_on: moment("2016-04-17T16:37:13.224850Z"), last_post: 67637, last_poster_name: "Madora", last_poster_url: "/user/madora-1530/", last_post_on: moment("2016-04-17T16:37:13.287355Z"), is_read: true, is_unapproved: false, is_hidden: false, is_closed: false, absolute_url: "/threads/not-implemented-yet-42/", last_post_url: "/threads/not-implemented-yet-42/last/", new_post_url: "/threads/not-implemented-yet-42/new/", subscription: null, api_url: "/api/threads/42/", moderation: [], acl: { can_edit: true, can_reply: true, can_hide: 2, can_close: 1, can_report: 1, can_see_reports: 1, can_move: 1, can_pin: 2, can_approve: 1 } } ], categories: { 2: { id: 2, parent: null, name: "Root", description: null, css_class: null, absolute_url: "/", api_url: { read: "/api/threads/read/" }, special_role: true }, 3: { id: 3, parent: { id: 2, name: "Root", css_class: null, absolute_url: "/" }, name: "First category", description: null, css_class: "accent", absolute_url: "/category/first-category-3/", api_url: { read: "/api/threads/read/?category=3" } }, 4: { id: 4, parent: { id: 3, name: "First category", css_class: null, absolute_url: "/category/first-category-3/" }, name: "Herma Turnpike", description: null, css_class: null, absolute_url: "/category/herma-turnpike-4/", api_url: { read: "/api/threads/read/?category=4" } } }, list: { type: 'all', path: '', name: gettext("All"), longName: gettext("All threads") }, diffSize: 0, applyDiff: null, showOptions: false, selection: [], busyThreads: [] }; /* jshint ignore:end */ describe("Ready Threads List", function() { afterEach(function() { testUtils.unmountComponents(); }); it("renders", function(done) { /* jshint ignore:start */ testUtils.render(); /* jshint ignore:end */ testUtils.onElement('#test-mount .threads-list', function(element) { assert.ok(true, "component renders"); assert.ok(!$(element).find('.thread-busy').length, "no thread is busy"); assert.ok(!$(element).find('.thread-selected').length, "no thread is selected"); assert.ok(!$(element).find('.thread-new').length, "no thread is unread"); assert.ok(!$(element).find('.thread-new-posts').length, "no thread is unread"); assert.ok(!$(element).find('.thread-pinned-globally').length, "no thread is pinned globally"); assert.ok(!$(element).find('.thread-pinned-locally').length, "no thread is pinned locally"); assert.ok(!$(element).find('.thread-unapproved').length, "no thread is unapproved"); assert.ok(!$(element).find('.thread-unapproved-posts').length, "no thread has unapproved posts"); assert.ok(!$(element).find('.thread-hidden').length, "no thread is hidden"); assert.ok(!$(element).find('.thread-closed').length, "no thread is closed"); assert.ok(!$(element).find('.thread-options').length, "no thread options are shown"); done(); }); }); it("renders with diff message", function(done) { // jshint ignore:line /* jshint ignore:start */ const applyDiff = function() { assert.ok(true, "apply diff message runs callback"); done(); }; const newProps = Object.assign({}, props, { diffSize: 1, applyDiff }); testUtils.render(); /* jshint ignore:end */ testUtils.onElement('#test-mount .threads-list .btn', function(element) { assert.ok(true, "component renders"); assert.equal($(element).find('.diff-message').text(), "There is 1 new or updated thread. Click this message to show it.", "message about new threads is displayed"); testUtils.simulateClick('.btn'); }); }); it("renders with state flags and options", function(done) { /* jshint ignore:start */ let newProps = Object.assign({}, props, { showOptions: true, selection: [123], busyThreads: [42] }); newProps.threads[0] = Object.assign({}, newProps.threads[0], { weight: 2, has_unapproved_posts: false, is_read: false, is_unapproved: true, is_hidden: true, is_closed: true, moderation: [true] }); newProps.threads[1] = Object.assign({}, newProps.threads[1], { weight: 1, has_unapproved_posts: true, moderation: [true] }); testUtils.render(); /* jshint ignore:end */ testUtils.onElement('#test-mount .threads-list', function(element) { assert.ok(true, "component renders"); assert.equal($(element).find('.thread-busy').length, 1, "one thread is busy"); assert.equal($(element).find('.thread-selected').length, 1, "one thread is selected"); assert.ok($(element).find('.thread-new').length, "unread threads are shown"); assert.ok($(element).find('.thread-new-posts').length, "unread threads have state flag"); assert.ok($(element).find('.thread-pinned-globally').length, "globally pinned thread has state flag"); assert.ok($(element).find('.thread-pinned-locally').length, "locally pinned thread has state flag"); assert.ok($(element).find('.thread-unapproved').length, "unapproved thread has state flag"); assert.ok($(element).find('.thread-unapproved-posts').length, "thread with unapproved posts has state flag"); assert.ok($(element).find('.thread-hidden').length, "hidden thread has state flag"); assert.ok($(element).find('.thread-closed').length, "closed thread has state flag"); assert.ok($(element).find('.thread-options').length, "thread options are shown"); done(); }); }); });