91 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			91 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Go
		
	
	
	
// Copyright 2022 The Gitea Authors. All rights reserved.
 | 
						|
// SPDX-License-Identifier: MIT
 | 
						|
 | 
						|
package actions
 | 
						|
 | 
						|
import (
 | 
						|
	"math"
 | 
						|
	"testing"
 | 
						|
	"time"
 | 
						|
 | 
						|
	"code.gitea.io/gitea/modules/timeutil"
 | 
						|
 | 
						|
	"github.com/stretchr/testify/assert"
 | 
						|
	"github.com/stretchr/testify/require"
 | 
						|
)
 | 
						|
 | 
						|
func TestLogIndexes_ToDB(t *testing.T) {
 | 
						|
	tests := []struct {
 | 
						|
		indexes LogIndexes
 | 
						|
	}{
 | 
						|
		{
 | 
						|
			indexes: []int64{1, 2, 0, -1, -2, math.MaxInt64, math.MinInt64},
 | 
						|
		},
 | 
						|
	}
 | 
						|
	for _, tt := range tests {
 | 
						|
		t.Run("", func(t *testing.T) {
 | 
						|
			got, err := tt.indexes.ToDB()
 | 
						|
			require.NoError(t, err)
 | 
						|
 | 
						|
			indexes := LogIndexes{}
 | 
						|
			require.NoError(t, indexes.FromDB(got))
 | 
						|
 | 
						|
			assert.Equal(t, tt.indexes, indexes)
 | 
						|
		})
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func Test_calculateDuration(t *testing.T) {
 | 
						|
	oldTimeSince := timeSince
 | 
						|
	defer func() {
 | 
						|
		timeSince = oldTimeSince
 | 
						|
	}()
 | 
						|
 | 
						|
	timeSince = func(t time.Time) time.Duration {
 | 
						|
		return timeutil.TimeStamp(1000).AsTime().Sub(t)
 | 
						|
	}
 | 
						|
	type args struct {
 | 
						|
		started timeutil.TimeStamp
 | 
						|
		stopped timeutil.TimeStamp
 | 
						|
		status  Status
 | 
						|
	}
 | 
						|
	tests := []struct {
 | 
						|
		name string
 | 
						|
		args args
 | 
						|
		want time.Duration
 | 
						|
	}{
 | 
						|
		{
 | 
						|
			name: "unknown",
 | 
						|
			args: args{
 | 
						|
				started: 0,
 | 
						|
				stopped: 0,
 | 
						|
				status:  StatusUnknown,
 | 
						|
			},
 | 
						|
			want: 0,
 | 
						|
		},
 | 
						|
		{
 | 
						|
			name: "running",
 | 
						|
			args: args{
 | 
						|
				started: 500,
 | 
						|
				stopped: 0,
 | 
						|
				status:  StatusRunning,
 | 
						|
			},
 | 
						|
			want: 500 * time.Second,
 | 
						|
		},
 | 
						|
		{
 | 
						|
			name: "done",
 | 
						|
			args: args{
 | 
						|
				started: 500,
 | 
						|
				stopped: 600,
 | 
						|
				status:  StatusSuccess,
 | 
						|
			},
 | 
						|
			want: 100 * time.Second,
 | 
						|
		},
 | 
						|
	}
 | 
						|
	for _, tt := range tests {
 | 
						|
		t.Run(tt.name, func(t *testing.T) {
 | 
						|
			assert.Equalf(t, tt.want, calculateDuration(tt.args.started, tt.args.stopped, tt.args.status), "calculateDuration(%v, %v, %v)", tt.args.started, tt.args.stopped, tt.args.status)
 | 
						|
		})
 | 
						|
	}
 | 
						|
}
 |