Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Migrate from workout datatype to timer #179

Open
wants to merge 3 commits into
base: 1.5.0
Choose a base branch
from

Conversation

a-mabe
Copy link
Owner

@a-mabe a-mabe commented Dec 2, 2024

TODO

  • Allow legacy workout import

Testing

  1. Start from old version with timers configured. [ ]
  2. Upgrade and verify migration. [ ]
  3. Test on new version: [ ]
  • Number of intervals can be set correctly.
    • Minimum value is validated.
    • Maximum value is validated.
  • Work time can be set correctly.
    • Minimum value is validated.
    • Maximum value is validated.
  • Rest time can be set correctly.
    • Minimum value is validated.
    • Maximum value is validated.
  • Warmup time can be set correctly.
    • Minimum value is validated.
    • Maximum value is validated.
  • Cooldown time can be set correctly.
    • Minimum value is validated.
    • Maximum value is validated.
  • Get ready time can be set correctly.
    • Minimum value is validated.
    • Maximum value is validated.
  • Number of auto restarts can be set correctly.
    • Minimum value is validated.
    • Maximum value is validated.
  • Break time between restarts can be set correctly.
    • Minimum value is validated.
    • Maximum value is validated.
  • Exercises can be added to the work intervals.
    • Exercise names can be edited.
    • Exercise list is saved with the timer.
  • Timer Actions

  • Create Timer

  • User can create a new timer with all default settings.
  • User can create a timer with customized settings.
  • User is prompted if required fields are left empty.
  • Validation is enforced for invalid inputs.
  • Import Timer

  • User can import a timer from a valid file (can be legacy workout or new timer file).
  • App handles invalid file formats gracefully.
  • Imported timers retain all their settings accurately.
  • App handles duplicate timer imports.
  • Export Timer

  • User can export an existing timer to a file.
  • Exported file format is valid and compatible for re-import.
  • Timer settings are preserved in the exported file.
  • Copy Timer

  • User can copy an existing timer.
  • Copied timer retains all settings of the original timer.
  • Copied timer is assigned a unique identifier.
  • Delete Timer

  • User can delete an existing timer.
  • App prompts user for confirmation before deletion.
  • Deleted timers are removed from the timer list.
  • Edit Timer

  • User can edit all settings of an existing timer.
  • Edits are saved correctly.
  • App prevents invalid edits (e.g., removing all exercises).
  • General Functionality

  • Timer list displays all created timers.
    • List updates dynamically after adding, editing, or deleting timers.
  • UI is responsive and handles different screen sizes.
  • App displays error messages for invalid actions.
  • App handles edge cases gracefully (e.g., importing an empty file, deleting the only timer).
  • Timer Playback

  • Timer plays all intervals as per settings.
    • Correct durations for work, rest, warmup, cooldown, and break times.
  • Timer announces or displays "Get ready" time.
  • Auto restarts function as expected.
    • Break time is honored between restarts.
    • If no break time is added, another Rest interval is used between restarts.
  • Exercises are displayed correctly during work intervals.
  • Timer stops at the end of all intervals.
  • App handles timer interruptions (e.g., app minimized or closed).
  • Notifications and Background Behavior

  • Timer runs correctly when the app is in the background.
  • Timer continues to function when screen is off.
  • App handles interruptions like incoming calls or system notifications.
  • Edge Cases

  • User creates a timer with the minimum valid settings.
  • User creates a timer with the maximum valid settings.
  • User sets a timer with unusual combinations (e.g., 0 rest time, 0 work time, etc.).
  • User imports/exported timer data with unsupported modifications (e.g., tampered file).
  • Performance

  • Timer playback remains smooth with complex settings (e.g., many intervals, exercises, auto restarts).
  • App does not crash under high usage.

@a-mabe a-mabe self-assigned this Dec 2, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: In progress
Development

Successfully merging this pull request may close these issues.

1 participant