package main

import (
	"errors"
	"testing"
)

func TestWatchServerlessCRIfEnabled(t *testing.T) {
	tests := []struct {
		name       string
		enabled    bool
		warmupErr  error
		wantCalled bool
		wantErr    bool
	}{
		{
			name:       "disabled skips warmup",
			enabled:    false,
			wantCalled: false,
			wantErr:    false,
		},
		{
			name:       "enabled calls warmup",
			enabled:    true,
			wantCalled: true,
			wantErr:    false,
		},
		{
			name:       "enabled returns warmup error",
			enabled:    true,
			warmupErr:  errors.New("boom"),
			wantCalled: true,
			wantErr:    true,
		},
	}

	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			called := false
			err := watchServerlessCRIfEnabled(tt.enabled, func() error {
				called = true
				return tt.warmupErr
			})

			if called != tt.wantCalled {
				t.Fatalf("called = %v, want %v", called, tt.wantCalled)
			}
			if (err != nil) != tt.wantErr {
				t.Fatalf("err = %v, wantErr %v", err, tt.wantErr)
			}
		})
	}
}
