Refactor database services and add component tests

- Remove deprecated CouchDB service files
- Update database test configurations
- Add test files for components and auth modules
- Update user context and admin interface
- Remove migration script for unified config
- Fix User interface properties in tests (use status instead of isActive)
This commit is contained in:
William Valentin
2025-09-08 18:30:43 -07:00
parent 31e08d730d
commit ac3643f76d
10 changed files with 934 additions and 1614 deletions

45
App.tsx
View File

@@ -59,7 +59,7 @@ import {
BarChartIcon,
} from './components/icons/Icons';
import { useUser } from './contexts/UserContext';
import { dbService } from './services/couchdb.factory';
import { databaseService } from './services/database';
import { databaseSeeder } from './services/database.seeder';
const Header: React.FC<{
@@ -242,10 +242,10 @@ const MedicationScheduleApp: React.FC<{ user: User }> = ({ user }) => {
const [medsData, remindersData, takenDosesData, settingsData] =
await Promise.all([
dbService.getMedications(user._id),
dbService.getCustomReminders(user._id),
dbService.getTakenDoses(user._id),
dbService.getSettings(user._id),
databaseService.getMedications(user._id),
databaseService.getCustomReminders(user._id),
databaseService.getTakenDoses(user._id),
databaseService.getUserSettings(user._id),
]);
console.warn('Data fetched successfully:', {
@@ -308,18 +308,18 @@ const MedicationScheduleApp: React.FC<{ user: User }> = ({ user }) => {
}, [medications, customReminders, currentTime]);
const handleAddMedication = async (med: Omit<Medication, '_id' | '_rev'>) => {
const newMed = await dbService.addMedication(user._id, med);
const newMed = await databaseService.createMedication(user._id, med);
setMedications(prev => [...prev, newMed]);
setAddModalOpen(false);
};
const handleDeleteMedication = async (medToDelete: Medication) => {
await dbService.deleteMedication(user._id, medToDelete);
await databaseService.deleteMedication(medToDelete._id);
setMedications(meds => meds.filter(med => med._id !== medToDelete._id));
};
const handleUpdateMedication = async (updatedMed: Medication) => {
const savedMed = await dbService.updateMedication(user._id, updatedMed);
const savedMed = await databaseService.updateMedication(updatedMed);
setMedications(meds =>
meds.map(m => (m._id === savedMed._id ? savedMed : m))
);
@@ -329,16 +329,17 @@ const MedicationScheduleApp: React.FC<{ user: User }> = ({ user }) => {
const handleAddReminder = async (
reminder: Omit<CustomReminder, '_id' | '_rev'>
) => {
const newReminder = await dbService.addCustomReminder(user._id, reminder);
const newReminder = await databaseService.createCustomReminder(
user._id,
reminder
);
setCustomReminders(prev => [...prev, newReminder]);
setAddReminderOpen(false);
};
const handleUpdateReminder = async (updatedReminder: CustomReminder) => {
const savedReminder = await dbService.updateCustomReminder(
user._id,
updatedReminder
);
const savedReminder =
await databaseService.updateCustomReminder(updatedReminder);
setCustomReminders(reminders =>
reminders.map(r => (r._id === savedReminder._id ? savedReminder : r))
);
@@ -346,7 +347,7 @@ const MedicationScheduleApp: React.FC<{ user: User }> = ({ user }) => {
};
const handleDeleteReminder = async (reminderToDelete: CustomReminder) => {
await dbService.deleteCustomReminder(user._id, reminderToDelete);
await databaseService.deleteCustomReminder(reminderToDelete._id);
setCustomReminders(reminders =>
reminders.filter(r => r._id !== reminderToDelete._id)
);
@@ -371,13 +372,13 @@ const MedicationScheduleApp: React.FC<{ user: User }> = ({ user }) => {
} else {
newDoses[doseId] = new Date().toISOString();
}
const updatedDoc = await dbService.updateTakenDoses(user._id, {
const updatedDoc = await databaseService.updateTakenDoses({
...takenDosesDoc,
doses: newDoses,
});
setTakenDosesDoc(updatedDoc);
},
[takenDosesDoc, user._id]
[takenDosesDoc]
);
const handleSnoozeDose = useCallback((doseId: string) => {
@@ -656,10 +657,8 @@ const MedicationScheduleApp: React.FC<{ user: User }> = ({ user }) => {
}, [medications, takenDoses, getDoseStatus]);
const handleUpdateSettings = async (newSettings: UserSettings) => {
const updatedSettings = await dbService.updateSettings(
user._id,
newSettings
);
const updatedSettings =
await databaseService.updateUserSettings(newSettings);
setSettings(updatedSettings);
};
@@ -669,10 +668,10 @@ const MedicationScheduleApp: React.FC<{ user: User }> = ({ user }) => {
'Are you sure you want to delete all your medication data? This action cannot be undone.'
)
) {
await dbService.deleteAllUserData(user._id);
await databaseService.deleteAllUserData(user._id);
setMedications([]);
setCustomReminders([]);
const updatedTakenDoses = await dbService.getTakenDoses(user._id);
const updatedTakenDoses = await databaseService.getTakenDoses(user._id);
setTakenDosesDoc(updatedTakenDoses);
setAccountModalOpen(false);
}
@@ -681,7 +680,7 @@ const MedicationScheduleApp: React.FC<{ user: User }> = ({ user }) => {
const handleCompleteOnboarding = async () => {
if (settings) {
try {
const updatedSettings = await dbService.updateSettings(user._id, {
const updatedSettings = await databaseService.updateUserSettings({
...settings,
hasCompletedOnboarding: true,
});