/
siblun
/
ReadFlow
Обзор
Документация
Войти
/
siblun
/
ReadFlow
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
develop
test/domain/models/session_test.dart
129 строк
3 KB
siblun
Update Session test
23 мар 2026, 22:46
23 мар 2026, 22:46
d79c5f4
Код
Авторство
О чём код?
import 'package:flutter_test/flutter_test.dart'; import 'package:read_flow/domain/models/session_model.dart'; void main() { group('Session Model Tests', () { test('isCompleted returns false when endTime is null', () { final session = Session( id: '1', bookId: 'book-1', startPage: 0, endPage: 50, startTime: DateTime.now() ); expect(session.isCompleted, false); }); test('isCompleted returns true when endTime is set', () { final session = Session( id: '1', bookId: 'book-1', startPage: 0, endPage: 50, startTime: DateTime(2026, 1, 1, 10, 0), endTime: DateTime(2026, 1, 1, 10, 45), ); expect(session.isCompleted, true); }); test('durationSeconds returns correct value', () { final start = DateTime(2026, 1, 1, 10, 0, 0); final end = DateTime(2026, 1, 1, 10, 30, 0); final session = Session( id: '1', bookId: 'book-1', startPage: 0, endPage: 50, startTime: start, endTime: end, ); expect(session.durationSeconds, 1800); }); test('durationSeconds returns 0 when endTime is null', () { final session = Session( id: '1', bookId: 'book-1', startPage: 0, endPage: 50, startTime: DateTime.now(), ); expect(session.durationSeconds, 0); }); test('durationMinutes returns rounded value', () { final start = DateTime(2026, 1, 1, 10, 0, 0); final end = DateTime(2026, 1, 1, 10, 45, 30); final session = Session( id: '1', bookId: 'book-1', startPage: 0, endPage: 50, startTime: start, endTime: end, ); expect(session.durationMinutes, 46); }); test('pagesRead returns endPage - startPage', () { final session = Session( id: '1', bookId: 'book-1', startPage: 20, endPage: 70, startTime: DateTime.now(), endTime: DateTime.now(), ); expect(session.pagesRead, 50); }); test('copyWith preserves immutable fields', () { final original = Session( id: 'original-id', bookId: 'book-1', startPage: 0, endPage: 50, startTime: DateTime(2026, 1, 1, 10, 0), note: 'Original note', ); final updated = original.copyWith( endPage: 100, endTime: DateTime(2026, 1, 1, 11, 0), note: 'Updated note', ); expect(original.id, updated.id); expect(original.bookId, updated.bookId); expect(original.startPage, updated.startPage); expect(original.startTime, updated.startTime); expect(updated.endPage, 100); expect(updated.endTime, isNotNull); expect(updated.note, 'Updated note'); }); test('copyWith does not modify original object', () { final original = Session( id: '1', bookId: 'book-1', startPage: 0, endPage: 50, startTime: DateTime.now(), note: 'Original', ); original.copyWith(endPage: 100, note: 'Updated'); expect(original.endPage, 50); expect(original.note, 'Original'); }); }); }