Files
gochat/backend/internal/repository/article_embedding_repo_test.go
T

109 lines
4.0 KiB
Go

package repository
import (
"context"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/gochat/gochat/internal/model"
)
func TestArticleEmbeddingRepo_DB(t *testing.T) {
db := setupTestDB(t, &model.ArticleEmbedding{}, &model.Article{})
repo := NewArticleEmbeddingRepo(db)
assert.NotNil(t, repo.DB())
}
func TestArticleEmbeddingRepo_Upsert_Create(t *testing.T) {
db := setupTestDB(t, &model.ArticleEmbedding{}, &model.Article{})
repo := NewArticleEmbeddingRepo(db)
account := &model.Account{Name: "AEOrg", Locale: "en", Active: true}
require.NoError(t, db.Create(account).Error)
portal := &model.Portal{AccountID: account.ID, Name: "Portal", Slug: "ae-portal"}
require.NoError(t, db.Create(portal).Error)
article := &model.Article{AccountID: account.ID, PortalID: portal.ID, Title: "Art", Slug: "ae-art", Status: "published"}
require.NoError(t, db.Create(article).Error)
emb := &model.ArticleEmbedding{
ArticleID: article.ID,
Term: "test content",
}
err := repo.Upsert(context.Background(), emb)
assert.NoError(t, err)
}
func TestArticleEmbeddingRepo_Upsert_Update(t *testing.T) {
db := setupTestDB(t, &model.ArticleEmbedding{}, &model.Article{})
repo := NewArticleEmbeddingRepo(db)
account := &model.Account{Name: "AEUpdOrg", Locale: "en", Active: true}
require.NoError(t, db.Create(account).Error)
portal := &model.Portal{AccountID: account.ID, Name: "Portal", Slug: "ae-upd"}
require.NoError(t, db.Create(portal).Error)
article := &model.Article{AccountID: account.ID, PortalID: portal.ID, Title: "Art", Slug: "ae-upd-art", Status: "published"}
require.NoError(t, db.Create(article).Error)
// Create first
emb := &model.ArticleEmbedding{ArticleID: article.ID, Term: "original"}
require.NoError(t, repo.Upsert(context.Background(), emb))
// Update
emb2 := &model.ArticleEmbedding{ArticleID: article.ID, Term: "updated"}
err := repo.Upsert(context.Background(), emb2)
assert.NoError(t, err)
found, _ := repo.GetByArticleID(context.Background(), article.ID)
assert.Equal(t, "updated", found.Term)
}
func TestArticleEmbeddingRepo_GetByArticleID(t *testing.T) {
db := setupTestDB(t, &model.ArticleEmbedding{}, &model.Article{})
repo := NewArticleEmbeddingRepo(db)
account := &model.Account{Name: "AEGetOrg", Locale: "en", Active: true}
require.NoError(t, db.Create(account).Error)
portal := &model.Portal{AccountID: account.ID, Name: "Portal", Slug: "ae-get"}
require.NoError(t, db.Create(portal).Error)
article := &model.Article{AccountID: account.ID, PortalID: portal.ID, Title: "Art", Slug: "ae-get-art", Status: "published"}
require.NoError(t, db.Create(article).Error)
emb := &model.ArticleEmbedding{ArticleID: article.ID, Term: "get test"}
require.NoError(t, repo.Upsert(context.Background(), emb))
found, err := repo.GetByArticleID(context.Background(), article.ID)
assert.NoError(t, err)
assert.Equal(t, "get test", found.Term)
}
func TestArticleEmbeddingRepo_GetByArticleID_NotFound(t *testing.T) {
db := setupTestDB(t, &model.ArticleEmbedding{}, &model.Article{})
repo := NewArticleEmbeddingRepo(db)
_, err := repo.GetByArticleID(context.Background(), 9999)
assert.Error(t, err)
}
func TestArticleEmbeddingRepo_DeleteByArticleID(t *testing.T) {
db := setupTestDB(t, &model.ArticleEmbedding{}, &model.Article{})
repo := NewArticleEmbeddingRepo(db)
account := &model.Account{Name: "AEDelOrg", Locale: "en", Active: true}
require.NoError(t, db.Create(account).Error)
portal := &model.Portal{AccountID: account.ID, Name: "Portal", Slug: "ae-del"}
require.NoError(t, db.Create(portal).Error)
article := &model.Article{AccountID: account.ID, PortalID: portal.ID, Title: "Art", Slug: "ae-del-art", Status: "published"}
require.NoError(t, db.Create(article).Error)
emb := &model.ArticleEmbedding{ArticleID: article.ID, Term: "del test"}
require.NoError(t, repo.Upsert(context.Background(), emb))
err := repo.DeleteByArticleID(context.Background(), article.ID)
assert.NoError(t, err)
_, err = repo.GetByArticleID(context.Background(), article.ID)
assert.Error(t, err)
}