Ctrl K
ComunidadGuías…

dto/channel_constraints_test.go

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
package dto

import (
	"testing"

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

func TestResolvedPinPriorityAndMerge(t *testing.T) {
	t.Run("token pin beats origin pin on a different channel", func(t *testing.T) {
		constraints := &ChannelConstraints{}
		constraints.AddPin(ChannelPin{ChannelId: 10, Source: PinSourceOriginTask, Rank: PinRankOriginTask, RetryMode: PinRetrySameChannel})
		constraints.AddPin(ChannelPin{ChannelId: 1, Source: PinSourceToken, Rank: PinRankToken, RetryMode: PinRetrySingleAttempt})

		pin, found, overridden := constraints.ResolvedPin()
		require.True(t, found)
		assert.Equal(t, 1, pin.ChannelId)
		assert.Equal(t, PinSourceToken, pin.Source)
		assert.Equal(t, PinRetrySingleAttempt, pin.RetryMode)
		require.Len(t, overridden, 1)
		assert.Equal(t, PinSourceOriginTask, overridden[0].Source)
		assert.Equal(t, 10, overridden[0].ChannelId)
	})

	t.Run("same channel pins merge to the stricter retry mode", func(t *testing.T) {
		constraints := &ChannelConstraints{}
		constraints.AddPin(ChannelPin{ChannelId: 7, Source: PinSourceOriginTask, Rank: PinRankOriginTask, RetryMode: PinRetrySameChannel})
		constraints.AddPin(ChannelPin{ChannelId: 7, Source: PinSourceToken, Rank: PinRankToken, RetryMode: PinRetrySingleAttempt})

		pin, found, overridden := constraints.ResolvedPin()
		require.True(t, found)
		assert.Equal(t, 7, pin.ChannelId)
		assert.Equal(t, PinSourceToken, pin.Source)
		assert.Equal(t, PinRetrySingleAttempt, pin.RetryMode)
		assert.Empty(t, overridden)
		assert.True(t, constraints.SuppressesRetry())
	})

	t.Run("empty set has no pin", func(t *testing.T) {
		pin, found, overridden := (*ChannelConstraints)(nil).ResolvedPin()
		assert.False(t, found)
		assert.Zero(t, pin.ChannelId)
		assert.Nil(t, overridden)
	})
}