api-view-spec.ts 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import { expect } from 'chai';
  2. import { closeWindow } from './lib/window-helpers';
  3. import { BaseWindow, View } from 'electron/main';
  4. describe('View', () => {
  5. let w: BaseWindow;
  6. afterEach(async () => {
  7. await closeWindow(w as any);
  8. w = null as unknown as BaseWindow;
  9. });
  10. it('can be used as content view', () => {
  11. w = new BaseWindow({ show: false });
  12. const v = new View();
  13. w.setContentView(v);
  14. expect(w.contentView).to.equal(v);
  15. });
  16. it('will throw when added as a child to itself', () => {
  17. w = new BaseWindow({ show: false });
  18. expect(() => {
  19. w.contentView.addChildView(w.contentView);
  20. }).to.throw('A view cannot be added as its own child');
  21. });
  22. it('does not crash when attempting to add a child multiple times', () => {
  23. w = new BaseWindow({ show: false });
  24. const cv = new View();
  25. w.setContentView(cv);
  26. const v = new View();
  27. w.contentView.addChildView(v);
  28. w.contentView.addChildView(v);
  29. w.contentView.addChildView(v);
  30. expect(w.contentView.children).to.have.lengthOf(1);
  31. });
  32. it('correctly reorders children', () => {
  33. w = new BaseWindow({ show: false });
  34. const cv = new View();
  35. w.setContentView(cv);
  36. const v1 = new View();
  37. const v2 = new View();
  38. const v3 = new View();
  39. w.contentView.addChildView(v1);
  40. w.contentView.addChildView(v2);
  41. w.contentView.addChildView(v3);
  42. expect(w.contentView.children).to.deep.equal([v1, v2, v3]);
  43. w.contentView.addChildView(v1);
  44. w.contentView.addChildView(v2);
  45. expect(w.contentView.children).to.deep.equal([v3, v1, v2]);
  46. });
  47. });