api-view-spec.ts 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  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. });