button.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. import assert from 'assert';
  2. import React from 'react'; // jshint ignore:line
  3. import ReactDOM from 'react-dom'; // jshint ignore:line
  4. import ReactTestUtils from 'react-addons-test-utils';
  5. import Button from 'misago/components/button'; // jshint ignore:line
  6. describe("Button", function() {
  7. afterEach(function() {
  8. window.emptyTestContainers();
  9. });
  10. it('renders', function() {
  11. /* jshint ignore:start */
  12. ReactDOM.render(
  13. <Button>
  14. Lorem ipsum
  15. </Button>,
  16. document.getElementById('test-mount')
  17. );
  18. /* jshint ignore:end */
  19. let element = $('#test-mount button');
  20. assert.ok(element.length, "component rendered");
  21. assert.equal(element.attr('type'), 'submit', "component is submit button");
  22. assert.equal(element.text().trim(), "Lorem ipsum", "component contains child");
  23. });
  24. it('handles clicks', function(done) { // jshint ignore:line
  25. /* jshint ignore:start */
  26. function click() {
  27. assert.ok(true, "component called callback on click");
  28. done();
  29. }
  30. ReactDOM.render(
  31. <Button onClick={click}>
  32. Lorem ipsum
  33. </Button>,
  34. document.getElementById('test-mount')
  35. );
  36. /* jshint ignore:end */
  37. let element = $('#test-mount button');
  38. assert.ok(element.length, "component rendered");
  39. assert.equal(element.attr('type'), 'button', "component is regular button");
  40. ReactTestUtils.Simulate.click(element.get(0));
  41. });
  42. it('renders disabled', function() {
  43. /* jshint ignore:start */
  44. ReactDOM.render(
  45. <Button disabled={true}>
  46. Lorem ipsum
  47. </Button>,
  48. document.getElementById('test-mount')
  49. );
  50. /* jshint ignore:end */
  51. let element = $('#test-mount button');
  52. assert.ok(element.length, "component rendered");
  53. assert.equal(element.attr('disabled'), 'disabled', "component is disabled");
  54. });
  55. it('renders loading', function() {
  56. /* jshint ignore:start */
  57. ReactDOM.render(
  58. <Button loading={true}>
  59. Lorem ipsum
  60. </Button>,
  61. document.getElementById('test-mount')
  62. );
  63. /* jshint ignore:end */
  64. let element = $('#test-mount button>.loader-compact');
  65. assert.ok(element.length, "component rendered with loader");
  66. assert.equal(element.parent().attr('disabled'), 'disabled', "component is disabled");
  67. });
  68. });