feat: Implement dual scheduling API design and interfaces

- Add comprehensive dual scheduling interfaces to definitions.ts
- Implement ContentFetchConfig, UserNotificationConfig, and DualScheduleConfiguration
- Add new plugin methods for dual scheduling, content management, and callbacks
- Update web implementations with mock functionality for all new methods
- Fix all test files to include new dual scheduling method mocks
- Ensure TypeScript compilation and all tests pass successfully

Resolves: Plugin API design for dual scheduling system implementation
This commit is contained in:
Matthew Raymer
2025-08-26 13:04:33 +00:00
parent 5ac0340bed
commit 9f8a8e60a9
7 changed files with 427 additions and 42 deletions

View File

@@ -19,6 +19,26 @@ describe('DailyNotification Advanced Scenarios', () => {
getPowerState: jest.fn(),
checkPermissions: jest.fn(),
requestPermissions: jest.fn(),
// Dual scheduling methods
scheduleContentFetch: jest.fn(),
scheduleUserNotification: jest.fn(),
scheduleDualNotification: jest.fn(),
getDualScheduleStatus: jest.fn(),
updateDualScheduleConfig: jest.fn(),
cancelDualSchedule: jest.fn(),
pauseDualSchedule: jest.fn(),
resumeDualSchedule: jest.fn(),
// Content management methods
getContentCache: jest.fn(),
clearContentCache: jest.fn(),
getContentHistory: jest.fn(),
// Callback management methods
registerCallback: jest.fn(),
unregisterCallback: jest.fn(),
getRegisteredCallbacks: jest.fn(),
};
plugin = new DailyNotification(mockPlugin);
});

View File

@@ -33,6 +33,26 @@ describe('DailyNotification Plugin', () => {
getPowerState: jest.fn(),
checkPermissions: jest.fn(),
requestPermissions: jest.fn(),
// Dual scheduling methods
scheduleContentFetch: jest.fn(),
scheduleUserNotification: jest.fn(),
scheduleDualNotification: jest.fn(),
getDualScheduleStatus: jest.fn(),
updateDualScheduleConfig: jest.fn(),
cancelDualSchedule: jest.fn(),
pauseDualSchedule: jest.fn(),
resumeDualSchedule: jest.fn(),
// Content management methods
getContentCache: jest.fn(),
clearContentCache: jest.fn(),
getContentHistory: jest.fn(),
// Callback management methods
registerCallback: jest.fn(),
unregisterCallback: jest.fn(),
getRegisteredCallbacks: jest.fn(),
};
// Create plugin instance with mock

View File

@@ -24,6 +24,26 @@ describe('DailyNotification Edge Cases', () => {
getPowerState: jest.fn(),
checkPermissions: jest.fn(),
requestPermissions: jest.fn(),
// Dual scheduling methods
scheduleContentFetch: jest.fn(),
scheduleUserNotification: jest.fn(),
scheduleDualNotification: jest.fn(),
getDualScheduleStatus: jest.fn(),
updateDualScheduleConfig: jest.fn(),
cancelDualSchedule: jest.fn(),
pauseDualSchedule: jest.fn(),
resumeDualSchedule: jest.fn(),
// Content management methods
getContentCache: jest.fn(),
clearContentCache: jest.fn(),
getContentHistory: jest.fn(),
// Callback management methods
registerCallback: jest.fn(),
unregisterCallback: jest.fn(),
getRegisteredCallbacks: jest.fn(),
};
plugin = new DailyNotification(mockPlugin);
});

View File

@@ -23,6 +23,26 @@ describe('DailyNotification Enterprise Scenarios', () => {
getPowerState: jest.fn(),
checkPermissions: jest.fn(),
requestPermissions: jest.fn(),
// Dual scheduling methods
scheduleContentFetch: jest.fn(),
scheduleUserNotification: jest.fn(),
scheduleDualNotification: jest.fn(),
getDualScheduleStatus: jest.fn(),
updateDualScheduleConfig: jest.fn(),
cancelDualSchedule: jest.fn(),
pauseDualSchedule: jest.fn(),
resumeDualSchedule: jest.fn(),
// Content management methods
getContentCache: jest.fn(),
clearContentCache: jest.fn(),
getContentHistory: jest.fn(),
// Callback management methods
registerCallback: jest.fn(),
unregisterCallback: jest.fn(),
getRegisteredCallbacks: jest.fn(),
};
plugin = new DailyNotification(mockPlugin);
});