< Summary

Information
Class: Pomodoro.Web.Services.Formatters.ChartDataFormatter
Assembly: Pomodoro.Web
File(s): /home/runner/work/Pomodoro/Pomodoro/src/Pomodoro.Web/Services/Formatters/ChartDataFormatter.cs
Line coverage
100%
Covered lines: 14
Uncovered lines: 0
Coverable lines: 14
Total lines: 38
Line coverage: 100%
Branch coverage
100%
Covered branches: 6
Total branches: 6
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
PrepareWeeklyChartData(...)100%66100%

File(s)

/home/runner/work/Pomodoro/Pomodoro/src/Pomodoro.Web/Services/Formatters/ChartDataFormatter.cs

#LineLine coverage
 1using static Pomodoro.Web.Constants;
 2
 3namespace Pomodoro.Web.Services.Formatters;
 4
 5/// <summary>
 6/// Service for preparing chart data from activity dictionaries
 7/// </summary>
 8public class ChartDataFormatter
 9{
 10    /// <summary>
 11    /// Prepares chart data arrays from daily activity dictionaries for a week
 12    /// </summary>
 13    /// <param name="dailyFocusMinutes">Dictionary mapping dates to focus minutes</param>
 14    /// <param name="breakDailyMinutes">Dictionary mapping dates to break minutes</param>
 15    /// <param name="weekStartDate">Start date of the week</param>
 16    /// <returns>Tuple containing labels array, focus data array, and break data array</returns>
 17    public (string[] labels, int[] focusData, int[] breakData) PrepareWeeklyChartData(
 18        Dictionary<DateTime, int> dailyFocusMinutes,
 19        Dictionary<DateTime, int> breakDailyMinutes,
 20        DateTime weekStartDate)
 6221    {
 6222        var weekStart = weekStartDate.Date;
 23
 6224        var labels = new string[Constants.Charts.DaysPerWeek];
 6225        var focusData = new int[Constants.Charts.DaysPerWeek];
 6226        var breakData = new int[Constants.Charts.DaysPerWeek];
 27
 99228        for (int i = 0; i < Constants.Charts.DaysPerWeek; i++)
 43429        {
 43430            var date = weekStart.AddDays(i);
 43431            labels[i] = date.ToString(Constants.DateFormats.DayOfWeekShortFormat);
 43432            focusData[i] = dailyFocusMinutes.TryGetValue(date, out var minutes) ? minutes : 0;
 43433            breakData[i] = breakDailyMinutes.TryGetValue(date, out var breakMinutes) ? breakMinutes : 0;
 43434        }
 35
 6236        return (labels, focusData, breakData);
 6237    }
 38}