package web_test

import (
	"context"
	"testing"

	"github.com/stretchr/testify/require"
	api "go.xsfx.dev/schnutibox/pkg/api/v1"
	"go.xsfx.dev/schnutibox/pkg/web"
	"google.golang.org/protobuf/types/known/durationpb"
)

func TestTimerService(t *testing.T) {
	t.Parallel()

	tables := []struct {
		name     string
		req      *api.Timer
		expected *api.Timer
		err      error
	}{
		{
			"10 seconds",
			&api.Timer{Duration: &durationpb.Duration{Seconds: 10}},
			&api.Timer{Duration: &durationpb.Duration{Seconds: 10}},
			nil,
		},
	}

	for _, table := range tables {
		table := table
		t.Run(table.name, func(t *testing.T) {
			t.Parallel()
			require := require.New(t)
			ctx := context.Background()
			timerSvc := web.TimerServer{}
			resp, err := timerSvc.Create(ctx, &api.Timer{Duration: &durationpb.Duration{Seconds: 10}})
			if table.err == nil {
				require.NoError(err)
			}

			require.Equal(table.expected, resp)
		})
	}
}
