Files
privacy.sexy/tests/unit/presentation/components/Scripts/View/Cards/NonCollapsingDirective.spec.ts
undergroundwires 949fac1a7c Refactor to enforce strictNullChecks
This commit applies `strictNullChecks` to the entire codebase to improve
maintainability and type safety. Key changes include:

- Remove some explicit null-checks where unnecessary.
- Add necessary null-checks.
- Refactor static factory functions for a more functional approach.
- Improve some test names and contexts for better debugging.
- Add unit tests for any additional logic introduced.
- Refactor `createPositionFromRegexFullMatch` to its own function as the
  logic is reused.
- Prefer `find` prefix on functions that may return `undefined` and
  `get` prefix for those that always return a value.
2023-11-12 22:54:00 +01:00

56 lines
1.8 KiB
TypeScript

import { describe, it, expect } from 'vitest';
import { NonCollapsing, hasDirective } from '@/presentation/components/Scripts/View/Cards/NonCollapsingDirective';
const expectedAttributeName = 'data-interaction-does-not-collapse';
describe('NonCollapsingDirective', () => {
describe('NonCollapsing', () => {
it('adds expected attribute to the element when mounted', () => {
// arrange
const element = createElementMock();
// act
if (!NonCollapsing.mounted) {
throw new Error('expected hook is missing');
}
NonCollapsing.mounted(element, undefined as never, undefined as never, undefined as never);
// assert
expect(element.hasAttribute(expectedAttributeName));
});
});
describe('hasDirective', () => {
it('returns `true` if the element has expected attribute', () => {
// arrange
const element = createElementMock();
element.setAttribute(expectedAttributeName, '');
// act
const actual = hasDirective(element);
// assert
expect(actual).to.equal(true);
});
it('returns `true` if the element has a parent with expected attribute', () => {
// arrange
const parent = createElementMock();
const element = createElementMock();
parent.appendChild(element);
element.setAttribute(expectedAttributeName, '');
// act
const actual = hasDirective(element);
// assert
expect(actual).to.equal(true);
});
it('returns `false` if nor the element or its parent has expected attribute', () => {
// arrange
const element = createElementMock();
// act
const actual = hasDirective(element);
// assert
expect(actual).to.equal(false);
});
});
function createElementMock(): HTMLElement {
return document.createElement('div');
}
});