| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- package model
- import (
- "github.com/opencost/opencost/core/pkg/model/pb"
- "github.com/opencost/opencost/core/pkg/opencost"
- "github.com/opencost/opencost/core/pkg/util/timeutil"
- "google.golang.org/protobuf/types/known/timestamppb"
- "reflect"
- "testing"
- "time"
- )
- func TestConvertWindow(t *testing.T) {
- timeDay := time.Date(2025, 9, 1, 0, 0, 0, 0, time.UTC)
- timeHour := timeDay.Add(time.Hour)
- timeTenMinute := timeHour.Add(time.Minute * 10)
- invalidTime := timeTenMinute.Add(time.Second)
- tests := []struct {
- name string
- window *pb.Window
- want opencost.Window
- wantErr bool
- }{
- {
- name: "nil window",
- window: nil,
- want: opencost.Window{},
- wantErr: true,
- },
- {
- name: "invalid resolution",
- window: &pb.Window{
- Resolution: 999,
- Start: timestamppb.New(timeDay),
- },
- want: opencost.Window{},
- wantErr: true,
- },
- {
- name: "invalid time",
- window: &pb.Window{
- Resolution: pb.Resolution_RESOLUTION_1D,
- Start: timestamppb.New(invalidTime),
- },
- want: opencost.Window{},
- wantErr: true,
- },
- {
- name: "valid 1d",
- window: &pb.Window{
- Resolution: pb.Resolution_RESOLUTION_1D,
- Start: timestamppb.New(timeDay),
- },
- want: opencost.NewClosedWindow(timeDay, timeDay.Add(timeutil.Day)),
- wantErr: false,
- },
- {
- name: "valid 1h",
- window: &pb.Window{
- Resolution: pb.Resolution_RESOLUTION_1H,
- Start: timestamppb.New(timeHour),
- },
- want: opencost.NewClosedWindow(timeHour, timeHour.Add(time.Hour)),
- wantErr: false,
- },
- {
- name: "valid 10m",
- window: &pb.Window{
- Resolution: pb.Resolution_RESOLUTION_10M,
- Start: timestamppb.New(timeTenMinute),
- },
- want: opencost.NewClosedWindow(timeTenMinute, timeTenMinute.Add(10*time.Minute)),
- wantErr: false,
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- got, err := ConvertWindow(tt.window)
- if (err != nil) != tt.wantErr {
- t.Errorf("ConvertWindow() error = %v, wantErr %v", err, tt.wantErr)
- return
- }
- if !reflect.DeepEqual(got, tt.want) {
- t.Errorf("ConvertWindow() got = %v, want %v", got, tt.want)
- }
- })
- }
- }
|