search.js 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. import assert from 'assert';
  2. import React from 'react'; // jshint ignore:line
  3. import Search from 'misago/components/search'; // jshint ignore:line
  4. import * as testUtils from 'misago/utils/test-utils';
  5. describe("Search Input", function() {
  6. afterEach(function() {
  7. testUtils.unmountComponents();
  8. });
  9. it("renders", function() {
  10. /* jshint ignore:start */
  11. testUtils.render(<Search />);
  12. /* jshint ignore:end */
  13. let element = $('#test-mount .form-search');
  14. assert.ok(element.length, "element renders");
  15. assert.equal(element.find('input').attr('placeholder'), "Search...",
  16. "default placeholder is rendered");
  17. assert.equal(element.find('span').text(), 'search',
  18. "search icon is displayed");
  19. });
  20. it("renders with custom placeholder", function() {
  21. /* jshint ignore:start */
  22. testUtils.render(<Search placeholder="Search tests..." />);
  23. /* jshint ignore:end */
  24. let element = $('#test-mount .form-search');
  25. assert.ok(element.length, "element renders");
  26. assert.equal(element.find('input').attr('placeholder'), "Search tests...",
  27. "custom placeholder is rendered");
  28. assert.equal(element.find('span').text(), 'search',
  29. "search icon is displayed");
  30. });
  31. it("renders with custom class", function() {
  32. /* jshint ignore:start */
  33. testUtils.render(<Search className="extra-class" />);
  34. /* jshint ignore:end */
  35. let element = $('#test-mount .form-search');
  36. assert.ok(element.length, "element renders");
  37. assert.ok(element.hasClass('extra-class'), "element has extra class");
  38. });
  39. it("displays value", function() {
  40. /* jshint ignore:start */
  41. testUtils.render(<Search value="lorem ipsum" onChange={function() {}} />);
  42. /* jshint ignore:end */
  43. let element = $('#test-mount .form-control');
  44. assert.ok(element.length, "element renders");
  45. assert.equal(element.val(), "lorem ipsum", "element has value");
  46. });
  47. it("calls binding on change", function(done) { // jshint ignore:line
  48. /* jshint ignore:start */
  49. let onChange = function(ev) {
  50. assert.equal(ev.target.value, 'BobBoberson', "callback was called");
  51. done();
  52. };
  53. testUtils.render(<Search onChange={onChange} />);
  54. /* jshint ignore:end */
  55. testUtils.simulateChange('#test-mount .form-control', 'BobBoberson');
  56. });
  57. });