inlines.test.js 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. /* global QUnit */
  2. /* eslint global-strict: 0, strict: 0 */
  3. 'use strict';
  4. QUnit.module('admin.inlines: tabular formsets', {
  5. beforeEach: function() {
  6. var $ = django.jQuery;
  7. var that = this;
  8. this.addText = 'Add another';
  9. $('#qunit-fixture').append($('#tabular-formset').text());
  10. this.table = $('table.inline');
  11. this.inlineRow = this.table.find('tr');
  12. that.inlineRow.tabularFormset('table.inline tr', {
  13. prefix: 'first',
  14. addText: that.addText,
  15. deleteText: 'Remove'
  16. });
  17. }
  18. });
  19. QUnit.test('no forms', function(assert) {
  20. assert.ok(this.inlineRow.hasClass('dynamic-first'));
  21. assert.equal(this.table.find('.add-row a').text(), this.addText);
  22. });
  23. QUnit.test('add form', function(assert) {
  24. var addButton = this.table.find('.add-row a');
  25. assert.equal(addButton.text(), this.addText);
  26. addButton.click();
  27. assert.ok(this.table.find('#first-1').hasClass('row2'));
  28. });
  29. QUnit.test('add/remove form events', function(assert) {
  30. assert.expect(6);
  31. var $ = django.jQuery;
  32. var $document = $(document);
  33. var addButton = this.table.find('.add-row a');
  34. $document.on('formset:added', function(event, $row, formsetName) {
  35. assert.ok(true, 'event `formset:added` triggered');
  36. assert.equal(true, $row.is($('.row2')));
  37. assert.equal(formsetName, 'first');
  38. });
  39. addButton.click();
  40. var deletedRow = $('.row2');
  41. var deleteLink = this.table.find('.inline-deletelink');
  42. $document.on('formset:removed', function(event, $row, formsetName) {
  43. assert.ok(true, 'event `formset:removed` triggered');
  44. assert.equal(true, $row.is(deletedRow));
  45. assert.equal(formsetName, 'first');
  46. });
  47. deleteLink.click();
  48. });
  49. QUnit.test('existing add button', function(assert) {
  50. var $ = django.jQuery;
  51. $('#qunit-fixture').empty(); // Clear the table added in beforeEach
  52. $('#qunit-fixture').append($('#tabular-formset').text());
  53. this.table = $('table.inline');
  54. this.inlineRow = this.table.find('tr');
  55. this.table.append('<i class="add-button"></i>');
  56. var addButton = this.table.find('.add-button');
  57. this.inlineRow.tabularFormset('table.inline tr', {
  58. prefix: 'first',
  59. deleteText: 'Remove',
  60. addButton: addButton
  61. });
  62. assert.equal(this.table.find('.add-row a').length, 0);
  63. addButton.click();
  64. assert.ok(this.table.find('#first-1').hasClass('row2'));
  65. });