// Copyright 2025 The Gitea Authors. All rights reserved. // SPDX-License-Identifier: MIT package actions import ( "testing" actions_model "gitea.dev/models/actions" "gitea.dev/modules/timeutil" "gitea.dev/modules/translation" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) func TestConvertToViewModel(t *testing.T) { task := &actions_model.ActionTask{ Status: actions_model.StatusSuccess, Steps: []*actions_model.ActionTaskStep{ {Name: "Run step-name", Index: 0, Status: actions_model.StatusSuccess, LogLength: 1, Started: timeutil.TimeStamp(1), Stopped: timeutil.TimeStamp(5)}, }, Stopped: timeutil.TimeStamp(20), } viewJobSteps, _, err := convertToViewModel(t.Context(), translation.MockLocale{}, nil, task) require.NoError(t, err) expectedViewJobs := []*ViewJobStep{ { Summary: "Set up job", Duration: "0s", Status: "success", }, { Summary: "Run step-name", Duration: "4s", Status: "success", }, { Summary: "Complete job", Duration: "15s", Status: "success", }, } assert.Equal(t, expectedViewJobs, viewJobSteps) } func TestConvertToViewModelCancellingTaskDoesNotRenderRunningSteps(t *testing.T) { task := &actions_model.ActionTask{ Status: actions_model.StatusCancelling, Steps: []*actions_model.ActionTaskStep{ {Name: "Run step-name", Index: 0, Status: actions_model.StatusRunning, LogLength: 1}, }, } viewJobSteps, _, err := convertToViewModel(t.Context(), translation.MockLocale{}, nil, task) require.NoError(t, err) expectedViewJobs := []*ViewJobStep{ { Summary: "Set up job", Duration: "0s", Status: "success", }, { Summary: "Run step-name", Duration: "0s", Status: "cancelling", }, { Summary: "Complete job", Duration: "0s", Status: "waiting", }, } assert.Equal(t, expectedViewJobs, viewJobSteps) }