Browse Source

fixed tests suite for threads list route

Rafał Pitoń 9 years ago
parent
commit
bc7fa73ef0

+ 4 - 10
frontend/tests/components/threads/category-picker.js

@@ -13,13 +13,11 @@ let categories = {
   1: {
     id: 1,
     name: "First Category",
-    css_class: null,
     absolute_url: '/category-1/'
   },
   3: {
     id: 3,
     name: "Second Category",
-    css_class: 'custom',
     absolute_url: '/category-3/'
   }
 };
@@ -39,7 +37,7 @@ describe("Threads List Category Picker", function() {
     );
     /* jshint ignore:end */
 
-    let element = $('#test-mount .list-inline');
+    let element = $('#test-mount .category-picker');
     assert.ok(element.length, "component renders");
     assert.ok(!element.find('li').length, "picker renders without choices");
   });
@@ -53,10 +51,10 @@ describe("Threads List Category Picker", function() {
     );
     /* jshint ignore:end */
 
-    let element = $('#test-mount .list-inline');
+    let element = $('#test-mount .category-picker');
     assert.ok(element.length, "component renders");
     assert.equal(element.find('li').length, 2,
-      "picker renders with two valid choices");
+      "picker renders with only two choices");
 
     assert.equal(element.find('li').first().text(),
       "First Category",
@@ -64,8 +62,6 @@ describe("Threads List Category Picker", function() {
     assert.equal(element.find('li').last().text(),
       "Second Category",
       "second category is rendered in picker");
-    assert.ok(element.find('li').find('a.subcategory-custom').length,
-      "second category has custom class");
   });
 
   it("renders with categories", function() {
@@ -77,7 +73,7 @@ describe("Threads List Category Picker", function() {
     );
     /* jshint ignore:end */
 
-    let element = $('#test-mount .list-inline');
+    let element = $('#test-mount .category-picker');
     assert.ok(element.length, "component renders");
     assert.equal(element.find('li').length, 2,
       "picker renders with two valid choices");
@@ -88,7 +84,5 @@ describe("Threads List Category Picker", function() {
     assert.equal(element.find('li').last(1).text(),
       "Second Category",
       "second category is rendered in picker");
-    assert.ok(element.find('li').find('a.subcategory-custom').length,
-      "second category has custom class");
   });
 });

+ 32 - 4
frontend/tests/components/threads/header.js

@@ -27,7 +27,9 @@ describe("Threads List Header", function() {
 
   it("renders title", function() {
     /* jshint ignore:start */
-    testUtils.render(<Header route={route} title="Lorem Ipsum" />);
+    testUtils.render(
+      <Header route={route} title="Lorem Ipsum" user={{id: null}} />
+    );
     /* jshint ignore:end */
 
     let element = $('#test-mount .page-header h1');
@@ -37,7 +39,7 @@ describe("Threads List Header", function() {
 
   it("renders without nav", function() {
     /* jshint ignore:start */
-    testUtils.render(<Header route={route} title="Test" />);
+    testUtils.render(<Header route={route} title="Test" user={{id: null}} />);
     /* jshint ignore:end */
 
     let element = $('#test-mount .page-header');
@@ -82,7 +84,8 @@ describe("Threads List Header", function() {
     testUtils.render(
       <Header route={route}
               title="Test"
-              toggleNav={callback} />
+              toggleNav={callback}
+              user={{id: null}} />
     );
     /* jshint ignore:end */
 
@@ -107,10 +110,35 @@ describe("Threads List Header", function() {
       name: "Parent",
       absolute_url: '/parent-12/'
     }
-    testUtils.render(<Header route={route} title="Lorem Ipsum" />);
+    testUtils.render(<Header route={route} title="Test"  user={{id: null}} />);
     /* jshint ignore:end */
 
     let element = $('#test-mount .page-header .btn-go-back');
     assert.ok(element.length, "button renders");
   });
+
+  it("renders new thread button for authenticated", function() {
+    /* jshint ignore:start */
+    route.list= {
+      name: "New",
+      nameLong: "New threads",
+      path: 'new/'
+    };
+    route.category.parent = {
+      name: "Parent",
+      absolute_url: '/parent-12/'
+    }
+    testUtils.render(<Header route={route} title="Test"  user={{id: null}} />);
+    /* jshint ignore:end */
+
+    let element = $('#test-mount .page-header .btn-success');
+    assert.ok(!element.length, "button is hidden for guest");
+
+    /* jshint ignore:start */
+    testUtils.render(<Header route={route} title="Test"  user={{id: 123}} />);
+    /* jshint ignore:end */
+
+    element = $('#test-mount .page-header .btn-success');
+    assert.ok(element.length, "button is rendered for authenticated");
+  });
 });

+ 49 - 11
frontend/tests/components/threads/route.js

@@ -4,7 +4,9 @@ import React from 'react'; // jshint ignore:line
 import Route from 'misago/components/threads/route'; // jshint ignore:line
 import misago from 'misago/index';
 import reducer, { hydrateThread } from 'misago/reducers/threads'; // jshint ignore:line
+import ajax from 'misago/services/ajax';
 import title from 'misago/services/page-title';
+import polls from 'misago/services/polls';
 import snackbar from 'misago/services/snackbar';
 import store from 'misago/services/store';
 import * as testUtils from 'misago/utils/test-utils';
@@ -97,6 +99,10 @@ let route = {
     absolute_url: '/categories/category-1/'
   }
 };
+
+let user = {
+  id: null
+};
 /* jshint ignore:end */
 let thread = {
   id: 1,
@@ -118,6 +124,8 @@ describe("Threads List Route", function() {
     snackbarStore = testUtils.snackbarStoreMock();
     snackbar.init(snackbarStore);
 
+    polls.init(ajax, snackbar);
+
     misago._context = {
       CATEGORIES_ON_INDEX: false,
       THREADS_API: '/test-api/threads/',
@@ -162,11 +170,29 @@ describe("Threads List Route", function() {
       subcategories: [2, 3]
     };
 
+    $.mockjax({
+      url: '/test-api/threads/?category=1&list=all&page=1',
+      status: 200,
+      responseText: {
+        results: [],
+
+        count: 1,
+        more: 0,
+
+        page: 1,
+        pages: 1,
+
+        subcategories: [2]
+      }
+    });
+
     /* jshint ignore:start */
     let threads = [
       hydrateThread(thread)
     ];
-    testUtils.render(<Route route={route} threads={threads} />);
+    testUtils.render(
+      <Route route={route} selection={[]} threads={threads} user={user} />
+    );
     /* jshint ignore:end */
 
     testUtils.onElement('#test-mount .thread-title', function(element) {
@@ -180,7 +206,7 @@ describe("Threads List Route", function() {
         "Lorem ipsum dolor met sit amet eli.",
         "category description was displayed");
 
-      assert.equal($('.subcategories-list li').length, 2,
+      assert.equal($('.category-picker li').length, 2,
         "categories picker shows two cats");
 
       assert.equal(document.title, "Lorem | Test Forum",
@@ -212,7 +238,9 @@ describe("Threads List Route", function() {
     });
 
     /* jshint ignore:start */
-    testUtils.render(<Route route={route} threads={[]} />);
+    testUtils.render(
+      <Route route={route} selection={[]} threads={[]} user={user} />
+    );
     /* jshint ignore:end */
 
     window.setTimeout(function() {
@@ -220,7 +248,7 @@ describe("Threads List Route", function() {
       assert.equal(state.length, 1, "one thread was loaded into store");
       assert.equal(state[0].title, "Test thread", "test thread was loaded");
 
-      assert.equal($('.subcategories-list li').length, 1,
+      assert.equal($('.category-picker li').length, 1,
         "categories picker shows one category");
 
       done();
@@ -245,14 +273,16 @@ describe("Threads List Route", function() {
     });
 
     /* jshint ignore:start */
-    testUtils.render(<Route route={route} threads={[]} />);
+    testUtils.render(
+      <Route route={route} selection={[]} threads={[]} user={user} />
+    );
     /* jshint ignore:end */
 
     window.setTimeout(function() {
       let state = store.getState().threads;
       assert.equal(state.length, 0, "no threads were loaded into store");
 
-      assert.equal($('.subcategories-list li').length, 0,
+      assert.equal($('.category-picker li').length, 0,
         "categories picker is empty");
 
       done();
@@ -275,7 +305,9 @@ describe("Threads List Route", function() {
     });
 
     /* jshint ignore:start */
-    testUtils.render(<Route route={route} threads={[]} />);
+    testUtils.render(
+      <Route route={route} selection={[]} threads={[]} user={user} />
+    );
     /* jshint ignore:end */
   });
 
@@ -298,7 +330,9 @@ describe("Threads List Route", function() {
     });
 
     /* jshint ignore:start */
-    testUtils.render(<Route route={route} threads={[]} />);
+    testUtils.render(
+      <Route route={route} selection={[]} threads={[]} user={user} />
+    );
     /* jshint ignore:end */
   });
 
@@ -340,7 +374,9 @@ describe("Threads List Route", function() {
     });
 
     /* jshint ignore:start */
-    testUtils.render(<Route route={route} threads={[]} />);
+    testUtils.render(
+      <Route route={route} selection={[]} threads={[]} user={user} />
+    );
     /* jshint ignore:end */
 
     testUtils.onElement('#test-mount .pager-more .btn', function() {
@@ -353,7 +389,7 @@ describe("Threads List Route", function() {
         assert.equal(state[0].title, "Test thread", "test thread was loaded");
         assert.equal(state[1].title, "Other thread", "new thread was added");
 
-        assert.equal($('.subcategories-list li').length, 1,
+        assert.equal($('.category-picker li').length, 1,
           "categories picker shows one category");
 
         done();
@@ -384,7 +420,9 @@ describe("Threads List Route", function() {
         special_role: true
       })
     });
-    testUtils.render(<Route route={finalRoute} threads={[]} />);
+    testUtils.render(
+      <Route route={finalRoute} selection={[]} threads={[]} user={user} />
+    );
     /* jshint ignore:end */
 
     window.setTimeout(function() {