CCExtractor / CCExtractor/ultimate_alarm_clock

Enhancement: Add unit tests for AlarmModel (currently zero test coverage)

Open
#882 1 comment 0 reactions 0 assignees View on GitHub
on hold
Dominant language
Dart
Stars
112
Forks
227
PR merge metrics
No merged PRs in 30d

Description

## Description

While working on some bug fixes in the data layer, I noticed the [test/](cci:7://file:///Users/rajesh/Desktop/ultimate-alarm-clock/ultimate_alarm_clock/test:0:0-0:0) directory only has a single file ([splash_screen_view_test.dart](cci:7://file:///Users/rajesh/Desktop/ultimate-alarm-clock/ultimate_alarm_clock/test/splash_screen_view_test.dart:0:0-0:0)) that checks if an Image widget exists on the splash screen.
There's no test coverage at all for the data models or providers.

[AlarmModel](cci:2://file:///Users/rajesh/Desktop/ultimate-alarm-clock/ultimate_alarm_clock/lib/app/data/models/alarm_model.dart:10:0-429:1) in particular has 65+ fields, multiple constructors ([fromMap](cci:1://file:///Users/rajesh/Desktop/ultimate-alarm-clock/ultimate_alarm_clock/lib/app/data/models/alarm_model.dart:186:2-238:3), `fromJson`, `fromDocumentSnapshot`), and serialization helpers ([toMap](cci:1://file:///Users/rajesh/Desktop/ultimate-alarm-clock/ultimate_alarm_clock/lib/app/data/models/alarm_model.dart:357:2-413:3), [toJson](cci:1://file:///Users/rajesh/Desktop/ultimate-alarm-clock/ultimate_alarm_clock/lib/app/data/models/alarm_model.dart:353:2-355:3)) , all completely untested. My recent PRs (#868, #879) both caught bugs in this exact layer that tests would have caught automatically.

## What I would like to add

A proper unit test suite for [AlarmModel](cci:2://file:///Users/rajesh/Desktop/ultimate-alarm-clock/ultimate_alarm_clock/lib/app/data/models/alarm_model.dart:10:0-429:1) covering:
- Constructor correctness (default, [fromMap](cci:1://file:///Users/rajesh/Desktop/ultimate-alarm-clock/ultimate_alarm_clock/lib/app/data/models/alarm_model.dart:186:2-238:3), `fromJson`)
- Serialization roundtrips ([toMap](cci:1://file:///Users/rajesh/Desktop/ultimate-alarm-clock/ultimate_alarm_clock/lib/app/data/models/alarm_model.dart:357:2-413:3) → [fromMap](cci:1://file:///Users/rajesh/Desktop/ultimate-alarm-clock/ultimate_alarm_clock/lib/app/data/models/alarm_model.dart:186:2-238:3), [toJson](cci:1://file:///Users/rajesh/Desktop/ultimate-alarm-clock/ultimate_alarm_clock/lib/app/data/models/alarm_model.dart:353:2-355:3) → `fromJson`)
- Edge cases (empty strings, boundary values for fields like `minutesSinceMidnight`)
- Day list encoding/decoding via [boolListToString](cci:1://file:///Users/rajesh/Desktop/ultimate-alarm-clock/ultimate_alarm_clock/lib/app/data/models/alarm_model.dart:415:2-421:3)

Contributor guide

Open the contributing guide

Research direction

Start with lib/app/data/models/alarm_model.dart and inspect the default constructor, fromMap, fromJson, toMap, toJson, and boolListToString helpers. Add unit tests under test/ covering construction, serialization roundtrips, edge cases, and day-list encoding; done means AlarmModel behavior is covered by a passing test suite.

Written by the indexing model from the issue text.

Assessment

Tech stack
dart
Domain
testing
Issue type
Feature
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
68/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.