151 lines
2.7 KiB
Go
151 lines
2.7 KiB
Go
// Copyright 2025 eat-pray-ai & OpenWaygate
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package activity
|
|
|
|
import (
|
|
"math"
|
|
"reflect"
|
|
"testing"
|
|
|
|
"google.golang.org/api/youtube/v3"
|
|
)
|
|
|
|
func TestNewActivity(t *testing.T) {
|
|
type args struct {
|
|
opts []Option
|
|
}
|
|
|
|
homeTrue := true
|
|
homeFalse := false
|
|
mineTrue := true
|
|
mineFalse := false
|
|
|
|
tests := []struct {
|
|
name string
|
|
args args
|
|
want Activity[youtube.Activity]
|
|
}{
|
|
{
|
|
name: "with all options",
|
|
args: args{
|
|
opts: []Option{
|
|
WithChannelId("test-channel-123"),
|
|
WithHome(&homeTrue),
|
|
WithMaxResults(50),
|
|
WithMine(&mineTrue),
|
|
WithPublishedAfter("2024-01-01T00:00:00Z"),
|
|
WithPublishedBefore("2024-12-31T23:59:59Z"),
|
|
WithRegionCode("US"),
|
|
WithService(&youtube.Service{}),
|
|
},
|
|
},
|
|
want: &activity{
|
|
ChannelId: "test-channel-123",
|
|
Home: &homeTrue,
|
|
MaxResults: 50,
|
|
Mine: &mineTrue,
|
|
PublishedAfter: "2024-01-01T00:00:00Z",
|
|
PublishedBefore: "2024-12-31T23:59:59Z",
|
|
RegionCode: "US",
|
|
},
|
|
},
|
|
{
|
|
name: "with no options",
|
|
args: args{
|
|
opts: []Option{},
|
|
},
|
|
want: &activity{},
|
|
},
|
|
{
|
|
name: "with nil boolean options",
|
|
args: args{
|
|
opts: []Option{
|
|
WithHome(nil),
|
|
WithMine(nil),
|
|
},
|
|
},
|
|
want: &activity{},
|
|
},
|
|
{
|
|
name: "with false boolean options",
|
|
args: args{
|
|
opts: []Option{
|
|
WithHome(&homeFalse),
|
|
WithMine(&mineFalse),
|
|
},
|
|
},
|
|
want: &activity{
|
|
Home: &homeFalse,
|
|
Mine: &mineFalse,
|
|
},
|
|
},
|
|
{
|
|
name: "with zero max results",
|
|
args: args{
|
|
opts: []Option{
|
|
WithMaxResults(0),
|
|
},
|
|
},
|
|
want: &activity{
|
|
MaxResults: math.MaxInt64,
|
|
},
|
|
},
|
|
{
|
|
name: "with negative max results",
|
|
args: args{
|
|
opts: []Option{
|
|
WithMaxResults(-10),
|
|
},
|
|
},
|
|
want: &activity{
|
|
MaxResults: 1,
|
|
},
|
|
},
|
|
{
|
|
name: "with empty string values",
|
|
args: args{
|
|
opts: []Option{
|
|
WithChannelId(""),
|
|
WithPublishedAfter(""),
|
|
WithPublishedBefore(""),
|
|
WithRegionCode(""),
|
|
},
|
|
},
|
|
want: &activity{
|
|
ChannelId: "",
|
|
PublishedAfter: "",
|
|
PublishedBefore: "",
|
|
RegionCode: "",
|
|
},
|
|
},
|
|
{
|
|
name: "with partial options",
|
|
args: args{
|
|
opts: []Option{
|
|
WithChannelId("partial-channel"),
|
|
WithMaxResults(25),
|
|
WithRegionCode("UK"),
|
|
},
|
|
},
|
|
want: &activity{
|
|
ChannelId: "partial-channel",
|
|
MaxResults: 25,
|
|
RegionCode: "UK",
|
|
},
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(
|
|
tt.name, func(t *testing.T) {
|
|
if got := NewActivity(tt.args.opts...); !reflect.DeepEqual(
|
|
got, tt.want,
|
|
) {
|
|
t.Errorf("NewActivity() = %v, want %v", got, tt.want)
|
|
}
|
|
},
|
|
)
|
|
}
|
|
}
|