diff --git a/internal/configstatus/configuration_progress.go b/internal/configstatus/configuration_progress.go index 1e61fdd6..5599e2e5 100644 --- a/internal/configstatus/configuration_progress.go +++ b/internal/configstatus/configuration_progress.go @@ -53,9 +53,9 @@ func numberOfDay(now, prev time.Time) int { } if now.Year() > prev.Year() { if now.YearDay() > prev.YearDay() { - return 365 + (now.YearDay() - prev.YearDay()) + return 365 + (now.YearDay() - prev.YearDay()) + (365 * (now.Year() - prev.Year() - 1)) } - return (prev.YearDay() + now.YearDay()) - 365 + return (365 - prev.YearDay()) + now.YearDay() + (365 * (now.Year() - prev.Year() - 1)) } else if now.YearDay() > prev.YearDay() { return now.YearDay() - prev.YearDay() } diff --git a/internal/configstatus/configuration_progress_test.go b/internal/configstatus/configuration_progress_test.go index 23658b35..496a5e48 100644 --- a/internal/configstatus/configuration_progress_test.go +++ b/internal/configstatus/configuration_progress_test.go @@ -69,3 +69,61 @@ func TestConfigurationProgress_fed(t *testing.T) { require.Equal(t, 5, req.Values.NbDay) require.Equal(t, 2, req.Values.NbDaySinceLast) } + +func TestConfigurationProgress_fed_year_change(t *testing.T) { + dir := t.TempDir() + file := filepath.Join(dir, "dummy.json") + var data = configstatus.ConfigurationStatusData{ + Metadata: configstatus.Metadata{Version: "1.0.0"}, + DataV1: configstatus.DataV1{ + PendingSince: time.Now().AddDate(-1, 0, -5), + LastProgress: time.Now().AddDate(0, 0, -2), + Autoconf: "Mr TBird", + ClickedLink: 42, + ReportSent: false, + ReportClick: true, + FailureDetails: "Not an error", + }, + } + require.NoError(t, dumpConfigStatusInFile(&data, file)) + + config, err := configstatus.LoadConfigurationStatus(file) + require.NoError(t, err) + + var builder = configstatus.ConfigProgressBuilder{} + req := builder.New(config) + + require.Equal(t, "bridge.any.configuration", req.MeasurementGroup) + require.Equal(t, "bridge_config_progress", req.Event) + require.Equal(t, 370, req.Values.NbDay) + require.Equal(t, 2, req.Values.NbDaySinceLast) +} + +func TestConfigurationProgress_fed_day_higher(t *testing.T) { + dir := t.TempDir() + file := filepath.Join(dir, "dummy.json") + var data = configstatus.ConfigurationStatusData{ + Metadata: configstatus.Metadata{Version: "1.0.0"}, + DataV1: configstatus.DataV1{ + PendingSince: time.Now().AddDate(-1, 0, -5), + LastProgress: time.Now().AddDate(0, 0, -2), + Autoconf: "Mr TBird", + ClickedLink: 42, + ReportSent: false, + ReportClick: true, + FailureDetails: "Not an error", + }, + } + require.NoError(t, dumpConfigStatusInFile(&data, file)) + + config, err := configstatus.LoadConfigurationStatus(file) + require.NoError(t, err) + + var builder = configstatus.ConfigProgressBuilder{} + req := builder.New(config) + + require.Equal(t, "bridge.any.configuration", req.MeasurementGroup) + require.Equal(t, "bridge_config_progress", req.Event) + require.Equal(t, 370, req.Values.NbDay) + require.Equal(t, 2, req.Values.NbDaySinceLast) +}