Initial commit: Fixes for linting and compilation

This commit is contained in:
2025-12-20 03:13:55 +00:00
commit 5d746d694e
148 changed files with 11207 additions and 0 deletions

View File

@@ -0,0 +1,72 @@
import 'package:flutter_test/flutter_test.dart';
import 'package:christian_period_tracker/services/cycle_service.dart';
import 'package:christian_period_tracker/models/user_profile.dart';
import 'package:christian_period_tracker/models/cycle_entry.dart';
void main() {
group('CycleService Tests', () {
test('calculateCycleInfo returns follicular phase for null profile', () {
final info = CycleService.calculateCycleInfo(null);
expect(info['phase'], CyclePhase.follicular);
expect(info['dayOfCycle'], 1);
});
test('calculateCycleInfo calculates follicular phase correctly (Day 7)', () {
final now = DateTime.now();
final lastPeriod = now.subtract(const Duration(days: 6)); // Today is Day 7
final user = UserProfile(
id: '1',
name: 'Test',
role: UserRole.wife,
relationshipStatus: RelationshipStatus.married,
averageCycleLength: 28,
lastPeriodStartDate: lastPeriod,
createdAt: now,
updatedAt: now,
);
final info = CycleService.calculateCycleInfo(user);
expect(info['dayOfCycle'], 7);
expect(info['phase'], CyclePhase.follicular);
});
test('calculateCycleInfo calculates menstrual phase correctly (Day 2)', () {
final now = DateTime.now();
final lastPeriod = now.subtract(const Duration(days: 1)); // Today is Day 2
final user = UserProfile(
id: '1',
name: 'Test',
role: UserRole.wife,
relationshipStatus: RelationshipStatus.married,
averageCycleLength: 28,
lastPeriodStartDate: lastPeriod,
createdAt: now,
updatedAt: now,
);
final info = CycleService.calculateCycleInfo(user);
expect(info['dayOfCycle'], 2);
expect(info['phase'], CyclePhase.menstrual);
});
test('calculateCycleInfo handles cycle length wrapping', () {
final now = DateTime.now();
// Last period was 30 days ago, cycle is 28 days -> Today is Day 3 of next cycle
final lastPeriod = now.subtract(const Duration(days: 30));
final user = UserProfile(
id: '1',
name: 'Test',
role: UserRole.wife,
relationshipStatus: RelationshipStatus.married,
averageCycleLength: 28,
lastPeriodStartDate: lastPeriod,
createdAt: now,
updatedAt: now,
);
final info = CycleService.calculateCycleInfo(user);
expect(info['dayOfCycle'], 3);
expect(info['phase'], CyclePhase.menstrual);
});
});
}

11
test/widget_test.dart Normal file
View File

@@ -0,0 +1,11 @@
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:christian_period_tracker/main.dart';
void main() {
testWidgets('App loads correctly', (WidgetTester tester) async {
// Build our app and trigger a frame.
// Note: This is a placeholder test - integration tests require Hive initialization
expect(true, isTrue);
});
}