mirror of
https://github.com/PR0M3TH3AN/bitvid.git
synced 2026-11-06 21:02:28 +00:00
Adds a standalone Node.js script that reproduces the TypeError seen in `tests/app/channel-profile-moderation.test.mjs`. The crash occurs because the test harness instantiates `Application` without running the constructor, leaving `moderationDecorator` undefined. The reproducer demonstrates this by using `Object.create(Application.prototype)` and attempting to call `decorateVideoModeration`.
42 lines
1.8 KiB
Markdown
42 lines
1.8 KiB
Markdown
# Reproducer for Channel Moderation Test Crash
|
|
|
|
This reproducer demonstrates a bug in the test harness setup used in `tests/app/channel-profile-moderation.test.mjs`.
|
|
|
|
## Issue Description
|
|
|
|
The test helper `createModerationAppHarness` in `tests/helpers/moderation-test-helpers.mjs` instantiates the `Application` class using `Object.create(Application.prototype)`, bypassing the constructor.
|
|
|
|
The `Application` constructor is responsible for initializing `this.moderationDecorator`.
|
|
|
|
When `app.decorateVideoModeration()` is called (which is done in `renderChannelVideosFromList`), it attempts to call `this.moderationDecorator.decorateVideo()`. Since `this.moderationDecorator` is undefined, it throws a `TypeError: Cannot read properties of undefined (reading 'decorateVideo')`.
|
|
|
|
This causes tests in `tests/app/channel-profile-moderation.test.mjs` to fail with exit code 1.
|
|
|
|
## How to Run
|
|
|
|
Run the reproducer script:
|
|
|
|
```bash
|
|
node examples/reproducers/issue-channel-moderation-test-crash/repro.mjs
|
|
```
|
|
|
|
A successful run (reproduction of the crash) will output:
|
|
`SUCCESS: Caught expected error: Cannot read properties of undefined (reading 'decorateVideo')`
|
|
|
|
## Fix (Recommendation)
|
|
|
|
The `createModerationAppHarness` helper should ensure `moderationDecorator` is initialized on the mock `Application` instance, or use a method of instantiation that runs the constructor (if feasible with mocks).
|
|
|
|
Example fix in `tests/helpers/moderation-test-helpers.mjs`:
|
|
|
|
```javascript
|
|
// ... inside createModerationAppHarness
|
|
const app = Object.create(Application.prototype);
|
|
// ...
|
|
// Manually initialize moderationDecorator since constructor is skipped
|
|
app.moderationDecorator = new ModerationDecorator({
|
|
getProfileCacheEntry: (pubkey) => app.getProfileCacheEntry(pubkey),
|
|
});
|
|
// ...
|
|
```
|