category-picker.js 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. import assert from 'assert';
  2. import React from 'react'; // jshint ignore:line
  3. import CategoryPicker from 'misago/components/threads/category-picker'; // jshint ignore:line
  4. import * as testUtils from 'misago/utils/test-utils';
  5. /* jshint ignore:start */
  6. let list = {
  7. name: "All",
  8. nameLong: "All threads",
  9. path: ''
  10. };
  11. let categories = {
  12. 1: {
  13. id: 1,
  14. name: "First Category",
  15. absolute_url: '/category-1/'
  16. },
  17. 3: {
  18. id: 3,
  19. name: "Second Category",
  20. absolute_url: '/category-3/'
  21. }
  22. };
  23. /* jshint ignore:end */
  24. describe("Threads List Category Picker", function() {
  25. afterEach(function() {
  26. testUtils.unmountComponents();
  27. });
  28. it("renders with invalid categories", function() {
  29. /* jshint ignore:start */
  30. testUtils.render(
  31. <CategoryPicker list={list}
  32. categories={{}}
  33. choices={[1, 3, 5]} />
  34. );
  35. /* jshint ignore:end */
  36. let element = $('#test-mount .category-picker');
  37. assert.ok(element.length, "component renders");
  38. assert.ok(!element.find('li').length, "picker renders without choices");
  39. });
  40. it("renders with some invalid categories", function() {
  41. /* jshint ignore:start */
  42. testUtils.render(
  43. <CategoryPicker list={list}
  44. categories={categories}
  45. choices={[1, 2, 3, 4, 5]} />
  46. );
  47. /* jshint ignore:end */
  48. let element = $('#test-mount .category-picker');
  49. assert.ok(element.length, "component renders");
  50. assert.equal(element.find('li').length, 2,
  51. "picker renders with only two choices");
  52. assert.equal(element.find('li').first().text(),
  53. "First Category",
  54. "first category is rendered in picker");
  55. assert.equal(element.find('li').last().text(),
  56. "Second Category",
  57. "second category is rendered in picker");
  58. });
  59. it("renders with categories", function() {
  60. /* jshint ignore:start */
  61. testUtils.render(
  62. <CategoryPicker list={list}
  63. categories={categories}
  64. choices={[1, 3]} />
  65. );
  66. /* jshint ignore:end */
  67. let element = $('#test-mount .category-picker');
  68. assert.ok(element.length, "component renders");
  69. assert.equal(element.find('li').length, 2,
  70. "picker renders with two valid choices");
  71. assert.equal(element.find('li').first().text(),
  72. "First Category",
  73. "first category is rendered in picker");
  74. assert.equal(element.find('li').last(1).text(),
  75. "Second Category",
  76. "second category is rendered in picker");
  77. });
  78. });