mirror of
https://github.com/johannesjo/super-productivity.git
synced 2026-08-02 12:32:14 +00:00
test: update tests for mention and focus mode improvements
- Update focus-mode reducer test to match simplified unPauseFocusSession action - Improve mention-utils type definitions to support HTMLTextAreaElement - Add comprehensive test coverage for mention directive stopEvent method 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
7f3481733c
commit
5dd3b2e823
2 changed files with 101 additions and 1 deletions
|
|
@ -175,7 +175,7 @@ describe('FocusModeReducer', () => {
|
|||
},
|
||||
};
|
||||
|
||||
const action = a.unPauseFocusSession({ idleTime: 5000 });
|
||||
const action = a.unPauseFocusSession();
|
||||
const result = focusModeReducer(pausedState, action);
|
||||
|
||||
expect(result.timer.isRunning).toBe(true);
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import { By } from '@angular/platform-browser';
|
|||
import { MentionDirective } from './mention.directive';
|
||||
import { MentionConfig } from './mention-config';
|
||||
import { Log } from '../../core/log';
|
||||
import { MentionEvent } from './mention-types';
|
||||
|
||||
@Component({
|
||||
template: `<input [mentionConfig]="mentionConfig" />`,
|
||||
|
|
@ -243,4 +244,103 @@ describe('MentionDirective', () => {
|
|||
expect(result).toEqual(items);
|
||||
});
|
||||
});
|
||||
|
||||
describe('stopEvent', () => {
|
||||
it('should handle standard event with all methods', () => {
|
||||
const mockEvent: MentionEvent = {
|
||||
wasClick: false,
|
||||
preventDefault: jasmine.createSpy('preventDefault'),
|
||||
stopPropagation: jasmine.createSpy('stopPropagation'),
|
||||
stopImmediatePropagation: jasmine.createSpy('stopImmediatePropagation'),
|
||||
};
|
||||
|
||||
directive.stopEvent(mockEvent);
|
||||
|
||||
expect(mockEvent.preventDefault).toHaveBeenCalled();
|
||||
expect(mockEvent.stopPropagation).toHaveBeenCalled();
|
||||
expect(mockEvent.stopImmediatePropagation).toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('should handle event with missing preventDefault method', () => {
|
||||
const mockEvent: MentionEvent = {
|
||||
wasClick: false,
|
||||
stopPropagation: jasmine.createSpy('stopPropagation'),
|
||||
stopImmediatePropagation: jasmine.createSpy('stopImmediatePropagation'),
|
||||
};
|
||||
|
||||
// Should not throw error
|
||||
expect(() => directive.stopEvent(mockEvent)).not.toThrow();
|
||||
expect(mockEvent.stopPropagation).toHaveBeenCalled();
|
||||
expect(mockEvent.stopImmediatePropagation).toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('should handle event with missing stopPropagation method', () => {
|
||||
const mockEvent: MentionEvent = {
|
||||
wasClick: false,
|
||||
preventDefault: jasmine.createSpy('preventDefault'),
|
||||
stopImmediatePropagation: jasmine.createSpy('stopImmediatePropagation'),
|
||||
};
|
||||
|
||||
expect(() => directive.stopEvent(mockEvent)).not.toThrow();
|
||||
expect(mockEvent.preventDefault).toHaveBeenCalled();
|
||||
expect(mockEvent.stopImmediatePropagation).toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('should handle event with missing stopImmediatePropagation method', () => {
|
||||
const mockEvent: MentionEvent = {
|
||||
wasClick: false,
|
||||
preventDefault: jasmine.createSpy('preventDefault'),
|
||||
stopPropagation: jasmine.createSpy('stopPropagation'),
|
||||
};
|
||||
|
||||
expect(() => directive.stopEvent(mockEvent)).not.toThrow();
|
||||
expect(mockEvent.preventDefault).toHaveBeenCalled();
|
||||
expect(mockEvent.stopPropagation).toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('should handle event with all methods missing', () => {
|
||||
const mockEvent: MentionEvent = {
|
||||
wasClick: false,
|
||||
};
|
||||
|
||||
// Should not throw error
|
||||
expect(() => directive.stopEvent(mockEvent)).not.toThrow();
|
||||
});
|
||||
|
||||
it('should handle event with non-function preventDefault property', () => {
|
||||
const mockEvent: MentionEvent = {
|
||||
wasClick: false,
|
||||
preventDefault: 'not-a-function' as any, // intentionally invalid for test
|
||||
stopPropagation: jasmine.createSpy('stopPropagation'),
|
||||
stopImmediatePropagation: jasmine.createSpy('stopImmediatePropagation'),
|
||||
};
|
||||
|
||||
expect(() => directive.stopEvent(mockEvent)).not.toThrow();
|
||||
expect(mockEvent.stopPropagation).toHaveBeenCalled();
|
||||
expect(mockEvent.stopImmediatePropagation).toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('should not stop event when wasClick is true', () => {
|
||||
const mockEvent: MentionEvent = {
|
||||
wasClick: true,
|
||||
preventDefault: jasmine.createSpy('preventDefault'),
|
||||
stopPropagation: jasmine.createSpy('stopPropagation'),
|
||||
stopImmediatePropagation: jasmine.createSpy('stopImmediatePropagation'),
|
||||
};
|
||||
|
||||
directive.stopEvent(mockEvent);
|
||||
|
||||
expect(mockEvent.preventDefault).not.toHaveBeenCalled();
|
||||
expect(mockEvent.stopPropagation).not.toHaveBeenCalled();
|
||||
expect(mockEvent.stopImmediatePropagation).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('should handle null event gracefully', () => {
|
||||
expect(() => directive.stopEvent(null)).not.toThrow();
|
||||
});
|
||||
|
||||
it('should handle undefined event gracefully', () => {
|
||||
expect(() => directive.stopEvent(undefined as any)).not.toThrow();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue