package timer

import (
	"testing"
	"time"

	"github.com/stretchr/testify/assert"
	"github.com/stretchr/testify/require"

	"github.com/Luzifer/twitch-bot/v3/pkg/database"
)

func TestTimerRoundtrip(t *testing.T) {
	dbc := database.GetTestDatabase(t)
	ts, err := New(dbc, nil)
	require.NoError(t, err, "creating timer service")

	id := "78c0176a-938e-497b-bed4-83d5bdec6caf"

	has, err := ts.HasTimer(id)
	require.NoError(t, err, "checking for non-existent timer")
	assert.False(t, has, "checking existence of non-existing timer")

	err = ts.SetTimer(id, time.Now().Add(500*time.Millisecond))
	require.NoError(t, err, "setting timer")

	has, err = ts.HasTimer(id)
	require.NoError(t, err, "checking for existent timer")
	assert.True(t, has, "checking existence of existing timer")

	err = ts.SetTimer(id, time.Now().Add(-time.Millisecond))
	require.NoError(t, err, "updating timer")

	has, err = ts.HasTimer(id)
	require.NoError(t, err, "checking for expired timer")
	assert.False(t, has, "checking existence of expired timer")
}