button.js 2.2 KB

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