api-view-spec.ts 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. import { BaseWindow, View } from 'electron/main';
  2. import { expect } from 'chai';
  3. import { closeWindow } from './lib/window-helpers';
  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('can be added as a child of another View', async () => {
  33. const w = new BaseWindow();
  34. const v1 = new View();
  35. const v2 = new View();
  36. v1.addChildView(v2);
  37. w.contentView.addChildView(v1);
  38. expect(w.contentView.children).to.deep.equal([v1]);
  39. expect(v1.children).to.deep.equal([v2]);
  40. });
  41. it('correctly reorders children', () => {
  42. w = new BaseWindow({ show: false });
  43. const cv = new View();
  44. w.setContentView(cv);
  45. const v1 = new View();
  46. const v2 = new View();
  47. const v3 = new View();
  48. w.contentView.addChildView(v1);
  49. w.contentView.addChildView(v2);
  50. w.contentView.addChildView(v3);
  51. expect(w.contentView.children).to.deep.equal([v1, v2, v3]);
  52. w.contentView.addChildView(v1);
  53. w.contentView.addChildView(v2);
  54. expect(w.contentView.children).to.deep.equal([v3, v1, v2]);
  55. });
  56. it('allows setting various border radius values', () => {
  57. w = new BaseWindow({ show: false });
  58. const v = new View();
  59. w.setContentView(v);
  60. v.setBorderRadius(10);
  61. v.setBorderRadius(0);
  62. v.setBorderRadius(-10);
  63. v.setBorderRadius(9999999);
  64. v.setBorderRadius(-9999999);
  65. });
  66. describe('view.getVisible|setVisible', () => {
  67. it('is visible by default', () => {
  68. const v = new View();
  69. expect(v.getVisible()).to.be.true();
  70. });
  71. it('can be set to not visible', () => {
  72. const v = new View();
  73. v.setVisible(false);
  74. expect(v.getVisible()).to.be.false();
  75. });
  76. });
  77. });