39 lines
1.4 KiB
Go
39 lines
1.4 KiB
Go
package convert_test
|
|
|
|
import (
|
|
"encoding/json"
|
|
"testing"
|
|
|
|
opensearchgoAPI "github.com/opensearch-project/opensearch-go/v4/opensearchapi"
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
"github.com/qsfera/server/pkg/conversions"
|
|
searchMessage "github.com/qsfera/server/protogen/gen/qsfera/messages/search/v0"
|
|
"github.com/qsfera/server/services/search/pkg/opensearch/internal/convert"
|
|
"github.com/qsfera/server/services/search/pkg/opensearch/internal/test"
|
|
)
|
|
|
|
func TestOpenSearchHitToMatch(t *testing.T) {
|
|
resource := opensearchtest.Testdata.Resources.File
|
|
resource.MimeType = "audio/anything"
|
|
|
|
hit := opensearchgoAPI.SearchHit{
|
|
Score: 1.1,
|
|
Source: json.RawMessage(opensearchtest.JSONMustMarshal(t, resource)),
|
|
}
|
|
match, err := convert.OpenSearchHitToMatch(hit)
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, hit.Score, match.Score)
|
|
assert.Equal(t, resource.Name, match.Entity.Name)
|
|
t.Parallel()
|
|
t.Run("converts the audio field to the expected type", func(t *testing.T) {
|
|
// searchMessage.Audio contains int64, int32 ... values that are converted to strings by the JSON marshaler,
|
|
// so we need to convert the resource.Audio to align the expectations for the JSON comparison.
|
|
audio, err := conversions.To[*searchMessage.Audio](resource.Audio)
|
|
assert.NoError(t, err)
|
|
|
|
assert.Equal(t, resource.Audio.Bitrate, match.Entity.Audio.Bitrate)
|
|
assert.JSONEq(t, opensearchtest.JSONMustMarshal(t, audio), opensearchtest.JSONMustMarshal(t, match.Entity.Audio))
|
|
})
|
|
}
|