BREAKING CHANGE: V2 of thr SDK #12
@ -94,7 +94,7 @@ func TestCreateTagNodeWitRelation(t *testing.T) {
|
|||||||
for _, tt := range tests {
|
for _, tt := range tests {
|
||||||
t.Run(tt.name, func(t *testing.T) {
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
if err := CreateTagAndReferenceToPost(tt.args.ctx, tt.args.db, tt.args.PostID, tt.args.tag); (err != nil) != tt.wantErr {
|
if err := CreateTagAndReferenceToPost(tt.args.ctx, tt.args.db, tt.args.PostID, tt.args.tag); (err != nil) != tt.wantErr {
|
||||||
t.Errorf("CreateTagAndReferenceToPost() error = %v, wantErr %v", err, tt.wantErr)
|
t.Errorf("CreatePostWithReferenceToTagAnd() error = %v, wantErr %v", err, tt.wantErr)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -170,7 +170,7 @@ func GetUserSourceLinks(ctx context.Context, db *gorm.DB, anthroveUserID models.
|
|||||||
}
|
}
|
||||||
|
|
||||||
func GetUserSourceBySourceID(ctx context.Context, db *gorm.DB, anthroveUserID models.AnthroveUserID, sourceID models.AnthroveSourceID) (*models.UserSource, error) {
|
func GetUserSourceBySourceID(ctx context.Context, db *gorm.DB, anthroveUserID models.AnthroveUserID, sourceID models.AnthroveSourceID) (*models.UserSource, error) {
|
||||||
var userSource *models.UserSource
|
var userSource models.UserSource
|
||||||
|
|
||||||
if anthroveUserID == "" {
|
if anthroveUserID == "" {
|
||||||
return nil, &otterError.EntityValidationFailed{Reason: otterError.AnthroveUserIDIsEmpty}
|
return nil, &otterError.EntityValidationFailed{Reason: otterError.AnthroveUserIDIsEmpty}
|
||||||
@ -188,7 +188,7 @@ func GetUserSourceBySourceID(ctx context.Context, db *gorm.DB, anthroveUserID mo
|
|||||||
return nil, &otterError.EntityValidationFailed{Reason: "sourceID needs to be 25 characters long"}
|
return nil, &otterError.EntityValidationFailed{Reason: "sourceID needs to be 25 characters long"}
|
||||||
}
|
}
|
||||||
|
|
||||||
result := db.WithContext(ctx).Model(&models.UserSource{}).InnerJoins("Source", db.Where("id = ?", sourceID)).Where("user_id = ?", string(anthroveUserID)).First(userSource)
|
result := db.WithContext(ctx).Model(&models.UserSource{}).InnerJoins("Source", db.Where("id = ?", sourceID)).Where("user_id = ?", string(anthroveUserID)).First(&userSource)
|
||||||
if result.Error != nil {
|
if result.Error != nil {
|
||||||
if errors.Is(result.Error, gorm.ErrRecordNotFound) {
|
if errors.Is(result.Error, gorm.ErrRecordNotFound) {
|
||||||
return nil, &otterError.NoDataFound{}
|
return nil, &otterError.NoDataFound{}
|
||||||
@ -201,7 +201,7 @@ func GetUserSourceBySourceID(ctx context.Context, db *gorm.DB, anthroveUserID mo
|
|||||||
"source_id": sourceID,
|
"source_id": sourceID,
|
||||||
}).Trace("database: got specified user source link")
|
}).Trace("database: got specified user source link")
|
||||||
|
|
||||||
return userSource, nil
|
return &userSource, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetAllUsers(ctx context.Context, db *gorm.DB) ([]models.User, error) {
|
func GetAllUsers(ctx context.Context, db *gorm.DB) ([]models.User, error) {
|
||||||
|
@ -198,7 +198,7 @@ func TestCreateUserNodeWithSourceRelation(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetAllAnthroveUserIDs(t *testing.T) {
|
func TestGetAllUsers(t *testing.T) {
|
||||||
// Setup trow away container
|
// Setup trow away container
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
container, gormDB, err := test.StartPostgresContainer(ctx)
|
container, gormDB, err := test.StartPostgresContainer(ctx)
|
||||||
@ -212,10 +212,20 @@ func TestGetAllAnthroveUserIDs(t *testing.T) {
|
|||||||
validUserID02 := models.AnthroveUserID(fmt.Sprintf("%025s", "User2"))
|
validUserID02 := models.AnthroveUserID(fmt.Sprintf("%025s", "User2"))
|
||||||
validUserID03 := models.AnthroveUserID(fmt.Sprintf("%025s", "User3"))
|
validUserID03 := models.AnthroveUserID(fmt.Sprintf("%025s", "User3"))
|
||||||
|
|
||||||
users := []models.AnthroveUserID{validUserID01, validUserID02, validUserID03}
|
users := []models.User{
|
||||||
|
{
|
||||||
|
BaseModel: models.BaseModel[models.AnthroveUserID]{ID: validUserID01},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
BaseModel: models.BaseModel[models.AnthroveUserID]{ID: validUserID02},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
BaseModel: models.BaseModel[models.AnthroveUserID]{ID: validUserID03},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
for _, user := range users {
|
for _, user := range users {
|
||||||
err = CreateUser(ctx, gormDB, user)
|
err = CreateUser(ctx, gormDB, user.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
@ -229,7 +239,7 @@ func TestGetAllAnthroveUserIDs(t *testing.T) {
|
|||||||
tests := []struct {
|
tests := []struct {
|
||||||
name string
|
name string
|
||||||
args args
|
args args
|
||||||
want []models.AnthroveUserID
|
want []models.User
|
||||||
wantErr bool
|
wantErr bool
|
||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
@ -249,7 +259,7 @@ func TestGetAllAnthroveUserIDs(t *testing.T) {
|
|||||||
t.Errorf("GetAllUsers() error = %v, wantErr %v", err, tt.wantErr)
|
t.Errorf("GetAllUsers() error = %v, wantErr %v", err, tt.wantErr)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if !reflect.DeepEqual(got, tt.want) {
|
if !checkUser(got, tt.want) {
|
||||||
t.Errorf("GetAllUsers() got = %v, want %v", got, tt.want)
|
t.Errorf("GetAllUsers() got = %v, want %v", got, tt.want)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -278,13 +288,14 @@ func TestGetUserSourceBySourceID(t *testing.T) {
|
|||||||
},
|
},
|
||||||
DisplayName: "e621",
|
DisplayName: "e621",
|
||||||
Domain: "e621.net",
|
Domain: "e621.net",
|
||||||
|
Icon: "https://e621.icon",
|
||||||
}
|
}
|
||||||
|
|
||||||
expectedResult := make(map[string]models.UserSource)
|
expectedResult := &models.UserSource{
|
||||||
expectedResult["e621"] = models.UserSource{
|
UserID: string(validUserID),
|
||||||
UserID: "e1",
|
|
||||||
AccountUsername: "euser",
|
AccountUsername: "euser",
|
||||||
Source: models.Source{
|
Source: models.Source{
|
||||||
|
BaseModel: models.BaseModel[models.AnthroveSourceID]{ID: source.ID},
|
||||||
DisplayName: source.DisplayName,
|
DisplayName: source.DisplayName,
|
||||||
Domain: source.Domain,
|
Domain: source.Domain,
|
||||||
Icon: source.Icon,
|
Icon: source.Icon,
|
||||||
@ -296,7 +307,7 @@ func TestGetUserSourceBySourceID(t *testing.T) {
|
|||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = CreateUserWithRelationToSource(ctx, gormDB, validUserID, validSourceID, expectedResult["e621"].UserID, expectedResult["e621"].AccountUsername)
|
err = CreateUserWithRelationToSource(ctx, gormDB, validUserID, validSourceID, expectedResult.UserID, expectedResult.AccountUsername)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
@ -311,7 +322,7 @@ func TestGetUserSourceBySourceID(t *testing.T) {
|
|||||||
tests := []struct {
|
tests := []struct {
|
||||||
name string
|
name string
|
||||||
args args
|
args args
|
||||||
want map[string]models.UserSource
|
want *models.UserSource
|
||||||
wantErr bool
|
wantErr bool
|
||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
@ -400,7 +411,7 @@ func TestGetUserSourceBySourceID(t *testing.T) {
|
|||||||
t.Errorf("GetUserSourceBySourceID() error = %v, wantErr %v", err, tt.wantErr)
|
t.Errorf("GetUserSourceBySourceID() error = %v, wantErr %v", err, tt.wantErr)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if !reflect.DeepEqual(got, tt.want) {
|
if !checkUserSource(got, tt.want) {
|
||||||
t.Errorf("GetUserSourceBySourceID() got = %v, want %v", got, tt.want)
|
t.Errorf("GetUserSourceBySourceID() got = %v, want %v", got, tt.want)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -939,3 +950,39 @@ func TestGetUserTagNodeWitRelationToFavedPosts(t *testing.T) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func checkUser(got []models.User, want []models.User) bool {
|
||||||
|
for i, user := range want {
|
||||||
|
if user.ID != got[i].ID {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
func checkUserSource(got *models.UserSource, want *models.UserSource) bool {
|
||||||
|
|
||||||
|
if got == nil && want == nil {
|
||||||
|
return true
|
||||||
|
} else if got == nil || want == nil {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
if got.UserID != want.UserID {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
if got.AccountUsername != want.AccountUsername {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
if got.Source.DisplayName != want.Source.DisplayName {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
if got.Source.Domain != want.Source.Domain {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
if got.Source.Icon != want.Source.Icon {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
@ -10,6 +10,9 @@ type OtterSpace interface {
|
|||||||
// Connect establishes a connection to the database.
|
// Connect establishes a connection to the database.
|
||||||
Connect(ctx context.Context, config models.DatabaseConfig) error
|
Connect(ctx context.Context, config models.DatabaseConfig) error
|
||||||
|
|
||||||
|
// Post contains all function that are needed to manage Posts
|
||||||
|
Post
|
||||||
|
|
||||||
// User contains all function that are needed to manage the AnthroveUser
|
// User contains all function that are needed to manage the AnthroveUser
|
||||||
User
|
User
|
||||||
|
|
||||||
|
@ -20,9 +20,9 @@ type Post interface {
|
|||||||
// GetPostBySourceID retrieves a post by its source ID.
|
// GetPostBySourceID retrieves a post by its source ID.
|
||||||
GetPostBySourceID(ctx context.Context, sourceID models.AnthroveSourceID) (*models.Post, error)
|
GetPostBySourceID(ctx context.Context, sourceID models.AnthroveSourceID) (*models.Post, error)
|
||||||
|
|
||||||
// CreateTagAndReferenceToPost adds a tag with a relation to a post.
|
// CreatePostWithReferenceToTagAnd adds a tag with a relation to a post.
|
||||||
CreateTagAndReferenceToPost(ctx context.Context, anthrovePostID models.AnthrovePostID, anthroveTag *models.Tag) error
|
CreatePostWithReferenceToTagAnd(ctx context.Context, anthrovePostID models.AnthrovePostID, anthroveTag *models.Tag) error
|
||||||
|
|
||||||
// CreateReferenceBetweenPostAndSource links a post with a source.
|
// CreatePostReference links a post with a source.
|
||||||
CreateReferenceBetweenPostAndSource(ctx context.Context, anthrovePostID models.AnthrovePostID, sourceDomain models.AnthroveSourceDomain, postURL models.AnthrovePostURL, config models.PostReferenceConfig) error
|
CreatePostReference(ctx context.Context, anthrovePostID models.AnthrovePostID, sourceDomain models.AnthroveSourceDomain, postURL models.AnthrovePostURL, config models.PostReferenceConfig) error
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package postgres
|
package database
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
@ -9,7 +9,6 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"git.dragse.it/anthrove/otter-space-sdk/internal/postgres"
|
"git.dragse.it/anthrove/otter-space-sdk/internal/postgres"
|
||||||
"git.dragse.it/anthrove/otter-space-sdk/pkg/database"
|
|
||||||
"git.dragse.it/anthrove/otter-space-sdk/pkg/models"
|
"git.dragse.it/anthrove/otter-space-sdk/pkg/models"
|
||||||
_ "github.com/lib/pq"
|
_ "github.com/lib/pq"
|
||||||
migrate "github.com/rubenv/sql-migrate"
|
migrate "github.com/rubenv/sql-migrate"
|
||||||
@ -27,7 +26,7 @@ type postgresqlConnection struct {
|
|||||||
debug bool
|
debug bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewPostgresqlConnection() database.OtterSpace {
|
func NewPostgresqlConnection() OtterSpace {
|
||||||
return &postgresqlConnection{
|
return &postgresqlConnection{
|
||||||
db: nil,
|
db: nil,
|
||||||
}
|
}
|
||||||
@ -85,11 +84,11 @@ func (p *postgresqlConnection) CreatePost(ctx context.Context, anthrovePost *mod
|
|||||||
return postgres.CreatePost(ctx, p.db, anthrovePost)
|
return postgres.CreatePost(ctx, p.db, anthrovePost)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *postgresqlConnection) CreateTagAndReferenceToPost(ctx context.Context, anthrovePostID models.AnthrovePostID, anthroveTag *models.Tag) error {
|
func (p *postgresqlConnection) CreatePostWithReferenceToTagAnd(ctx context.Context, anthrovePostID models.AnthrovePostID, anthroveTag *models.Tag) error {
|
||||||
return postgres.CreateTagAndReferenceToPost(ctx, p.db, anthrovePostID, anthroveTag)
|
return postgres.CreateTagAndReferenceToPost(ctx, p.db, anthrovePostID, anthroveTag)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *postgresqlConnection) CreateReferenceBetweenPostAndSource(ctx context.Context, anthrovePostID models.AnthrovePostID, sourceDomain models.AnthroveSourceDomain, postURL models.AnthrovePostURL, config models.PostReferenceConfig) error {
|
func (p *postgresqlConnection) CreatePostReference(ctx context.Context, anthrovePostID models.AnthrovePostID, sourceDomain models.AnthroveSourceDomain, postURL models.AnthrovePostURL, config models.PostReferenceConfig) error {
|
||||||
return postgres.CreateReferenceBetweenPostAndSource(ctx, p.db, anthrovePostID, sourceDomain, postURL, config)
|
return postgres.CreateReferenceBetweenPostAndSource(ctx, p.db, anthrovePostID, sourceDomain, postURL, config)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -125,7 +124,7 @@ func (p *postgresqlConnection) GetUserSourceBySourceID(ctx context.Context, anth
|
|||||||
return postgres.GetUserSourceBySourceID(ctx, p.db, anthroveUserID, sourceID)
|
return postgres.GetUserSourceBySourceID(ctx, p.db, anthroveUserID, sourceID)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *postgresqlConnection) GetAllUser(ctx context.Context) ([]models.User, error) {
|
func (p *postgresqlConnection) GetAllUsers(ctx context.Context) ([]models.User, error) {
|
||||||
return postgres.GetAllUsers(ctx, p.db)
|
return postgres.GetAllUsers(ctx, p.db)
|
||||||
}
|
}
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
package postgres
|
package database
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
@ -7,7 +7,6 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"git.dragse.it/anthrove/otter-space-sdk/internal/postgres"
|
"git.dragse.it/anthrove/otter-space-sdk/internal/postgres"
|
||||||
"git.dragse.it/anthrove/otter-space-sdk/pkg/database"
|
|
||||||
"git.dragse.it/anthrove/otter-space-sdk/pkg/models"
|
"git.dragse.it/anthrove/otter-space-sdk/pkg/models"
|
||||||
"git.dragse.it/anthrove/otter-space-sdk/test"
|
"git.dragse.it/anthrove/otter-space-sdk/test"
|
||||||
"gorm.io/gorm"
|
"gorm.io/gorm"
|
||||||
@ -17,7 +16,7 @@ func TestNewPostgresqlConnection(t *testing.T) {
|
|||||||
// Test
|
// Test
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
name string
|
name string
|
||||||
want database.OtterSpace
|
want OtterSpace
|
||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
name: "Test 1: Create new postgresql connection",
|
name: "Test 1: Create new postgresql connection",
|
||||||
@ -421,8 +420,8 @@ func Test_postgresqlConnection_CreateTagAndReferenceToPost(t *testing.T) {
|
|||||||
db: gormDB,
|
db: gormDB,
|
||||||
debug: true,
|
debug: true,
|
||||||
}
|
}
|
||||||
if err := p.CreateTagAndReferenceToPost(tt.args.ctx, tt.args.anthrovePostID, tt.args.anthroveTag); (err != nil) != tt.wantErr {
|
if err := p.CreatePostWithReferenceToTagAnd(tt.args.ctx, tt.args.anthrovePostID, tt.args.anthroveTag); (err != nil) != tt.wantErr {
|
||||||
t.Errorf("CreateTagAndReferenceToPost() error = %v, wantErr %v", err, tt.wantErr)
|
t.Errorf("CreatePostWithReferenceToTagAnd() error = %v, wantErr %v", err, tt.wantErr)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -522,8 +521,8 @@ func Test_postgresqlConnection_CreateReferenceBetweenPostAndSource(t *testing.T)
|
|||||||
db: gormDB,
|
db: gormDB,
|
||||||
debug: true,
|
debug: true,
|
||||||
}
|
}
|
||||||
if err := p.CreateReferenceBetweenPostAndSource(tt.args.ctx, tt.args.anthrovePostID, tt.args.sourceDomain, tt.args.postURl, models.PostReferenceConfig{}); (err != nil) != tt.wantErr {
|
if err := p.CreatePostReference(tt.args.ctx, tt.args.anthrovePostID, tt.args.sourceDomain, tt.args.postURl, models.PostReferenceConfig{}); (err != nil) != tt.wantErr {
|
||||||
t.Errorf("CreateReferenceBetweenPostAndSource() error = %v, wantErr %v", err, tt.wantErr)
|
t.Errorf("CreatePostReference() error = %v, wantErr %v", err, tt.wantErr)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -714,7 +713,7 @@ func Test_postgresqlConnection_CheckReferenceBetweenUserAndPost(t *testing.T) {
|
|||||||
db: gormDB,
|
db: gormDB,
|
||||||
debug: true,
|
debug: true,
|
||||||
}
|
}
|
||||||
got, err := p.CheckIfUserFavouritedPost(tt.args.ctx, tt.args.anthroveUserID, tt.args.anthrovePostID)
|
got, err := p.CheckIfUserHasPostAsFavorite(tt.args.ctx, tt.args.anthroveUserID, tt.args.anthrovePostID)
|
||||||
if (err != nil) != tt.wantErr {
|
if (err != nil) != tt.wantErr {
|
||||||
t.Errorf("CheckIfUserHasPostAsFavorite() error = %v, wantErr %v", err, tt.wantErr)
|
t.Errorf("CheckIfUserHasPostAsFavorite() error = %v, wantErr %v", err, tt.wantErr)
|
||||||
return
|
return
|
||||||
@ -1235,20 +1234,20 @@ func Test_postgresqlConnection_GetUserSourceBySourceID(t *testing.T) {
|
|||||||
|
|
||||||
validSourceID := models.AnthroveSourceID(fmt.Sprintf("%025s", "Source1"))
|
validSourceID := models.AnthroveSourceID(fmt.Sprintf("%025s", "Source1"))
|
||||||
|
|
||||||
expectedResult := make(map[string]models.UserSource)
|
|
||||||
|
|
||||||
source := &models.Source{
|
source := &models.Source{
|
||||||
BaseModel: models.BaseModel[models.AnthroveSourceID]{
|
BaseModel: models.BaseModel[models.AnthroveSourceID]{
|
||||||
ID: validSourceID,
|
ID: validSourceID,
|
||||||
},
|
},
|
||||||
DisplayName: "e621",
|
DisplayName: "e621",
|
||||||
Domain: "e621.net",
|
Domain: "e621.net",
|
||||||
|
Icon: "https://e621.icon",
|
||||||
}
|
}
|
||||||
|
|
||||||
expectedResult["e621"] = models.UserSource{
|
expectedResult := &models.UserSource{
|
||||||
UserID: "e1",
|
UserID: string(validUserID),
|
||||||
AccountUsername: "euser",
|
AccountUsername: "euser",
|
||||||
Source: models.Source{
|
Source: models.Source{
|
||||||
|
BaseModel: models.BaseModel[models.AnthroveSourceID]{ID: source.ID},
|
||||||
DisplayName: source.DisplayName,
|
DisplayName: source.DisplayName,
|
||||||
Domain: source.Domain,
|
Domain: source.Domain,
|
||||||
Icon: source.Icon,
|
Icon: source.Icon,
|
||||||
@ -1260,7 +1259,7 @@ func Test_postgresqlConnection_GetUserSourceBySourceID(t *testing.T) {
|
|||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = postgres.CreateUserWithRelationToSource(ctx, gormDB, validUserID, validSourceID, expectedResult["e621"].UserID, expectedResult["e621"].AccountUsername)
|
err = postgres.CreateUserWithRelationToSource(ctx, gormDB, validUserID, validSourceID, expectedResult.UserID, expectedResult.AccountUsername)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
@ -1271,10 +1270,11 @@ func Test_postgresqlConnection_GetUserSourceBySourceID(t *testing.T) {
|
|||||||
anthroveUserID models.AnthroveUserID
|
anthroveUserID models.AnthroveUserID
|
||||||
sourceID models.AnthroveSourceID
|
sourceID models.AnthroveSourceID
|
||||||
}
|
}
|
||||||
|
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
name string
|
name string
|
||||||
args args
|
args args
|
||||||
want map[string]models.UserSource
|
want *models.UserSource
|
||||||
wantErr bool
|
wantErr bool
|
||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
@ -1349,14 +1349,14 @@ func Test_postgresqlConnection_GetUserSourceBySourceID(t *testing.T) {
|
|||||||
t.Errorf("GetUserSourceBySourceID() error = %v, wantErr %v", err, tt.wantErr)
|
t.Errorf("GetUserSourceBySourceID() error = %v, wantErr %v", err, tt.wantErr)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if !reflect.DeepEqual(got, tt.want) {
|
if !checkUserSource(got, tt.want) {
|
||||||
t.Errorf("GetUserSourceBySourceID() got = %v, want %v", got, tt.want)
|
t.Errorf("GetUserSourceBySourceID() got = %v, want %v", got, tt.want)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func Test_postgresqlConnection_GetAllAnthroveUserIDs(t *testing.T) {
|
func Test_postgresqlConnection_GetAllUsers(t *testing.T) {
|
||||||
// Setup trow away container
|
// Setup trow away container
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
container, gormDB, err := test.StartPostgresContainer(ctx)
|
container, gormDB, err := test.StartPostgresContainer(ctx)
|
||||||
@ -1370,10 +1370,20 @@ func Test_postgresqlConnection_GetAllAnthroveUserIDs(t *testing.T) {
|
|||||||
validUserID02 := models.AnthroveUserID(fmt.Sprintf("%025s", "User2"))
|
validUserID02 := models.AnthroveUserID(fmt.Sprintf("%025s", "User2"))
|
||||||
validUserID03 := models.AnthroveUserID(fmt.Sprintf("%025s", "User3"))
|
validUserID03 := models.AnthroveUserID(fmt.Sprintf("%025s", "User3"))
|
||||||
|
|
||||||
users := []models.AnthroveUserID{validUserID01, validUserID02, validUserID03}
|
users := []models.User{
|
||||||
|
{
|
||||||
|
BaseModel: models.BaseModel[models.AnthroveUserID]{ID: validUserID01},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
BaseModel: models.BaseModel[models.AnthroveUserID]{ID: validUserID02},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
BaseModel: models.BaseModel[models.AnthroveUserID]{ID: validUserID03},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
for _, user := range users {
|
for _, user := range users {
|
||||||
err = postgres.CreateUser(ctx, gormDB, user)
|
err = postgres.CreateUser(ctx, gormDB, user.ID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
@ -1386,7 +1396,7 @@ func Test_postgresqlConnection_GetAllAnthroveUserIDs(t *testing.T) {
|
|||||||
tests := []struct {
|
tests := []struct {
|
||||||
name string
|
name string
|
||||||
args args
|
args args
|
||||||
want []models.AnthroveUserID
|
want []models.User
|
||||||
wantErr bool
|
wantErr bool
|
||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
@ -1403,12 +1413,12 @@ func Test_postgresqlConnection_GetAllAnthroveUserIDs(t *testing.T) {
|
|||||||
db: gormDB,
|
db: gormDB,
|
||||||
debug: true,
|
debug: true,
|
||||||
}
|
}
|
||||||
got, err := p.GetAllAnthroveUserIDs(tt.args.ctx)
|
got, err := p.GetAllUsers(tt.args.ctx)
|
||||||
if (err != nil) != tt.wantErr {
|
if (err != nil) != tt.wantErr {
|
||||||
t.Errorf("GetAllUsers() error = %v, wantErr %v", err, tt.wantErr)
|
t.Errorf("GetAllUsers() error = %v, wantErr %v", err, tt.wantErr)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if !reflect.DeepEqual(got, tt.want) {
|
if !checkUser(got, tt.want) {
|
||||||
t.Errorf("GetAllUsers() got = %v, want %v", got, tt.want)
|
t.Errorf("GetAllUsers() got = %v, want %v", got, tt.want)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -1975,3 +1985,38 @@ func Test_postgresqlConnection_migrateDatabase(t *testing.T) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func checkUser(got []models.User, want []models.User) bool {
|
||||||
|
for i, user := range want {
|
||||||
|
if user.ID != got[i].ID {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
func checkUserSource(got *models.UserSource, want *models.UserSource) bool {
|
||||||
|
|
||||||
|
if got == nil && want == nil {
|
||||||
|
return true
|
||||||
|
} else if got == nil || want == nil {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
if got.UserID != want.UserID {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
if got.AccountUsername != want.AccountUsername {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
if got.Source.DisplayName != want.Source.DisplayName {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
if got.Source.Domain != want.Source.Domain {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
if got.Source.Icon != want.Source.Icon {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
return true
|
||||||
|
}
|
@ -20,7 +20,7 @@ type User interface {
|
|||||||
|
|
||||||
UpdateUserSourceValidation(ctx context.Context, anthroveUserID models.AnthroveUserID, sourceID models.AnthroveSourceID, valid bool) error
|
UpdateUserSourceValidation(ctx context.Context, anthroveUserID models.AnthroveUserID, sourceID models.AnthroveSourceID, valid bool) error
|
||||||
|
|
||||||
GetAllUser(ctx context.Context) ([]models.User, error)
|
GetAllUsers(ctx context.Context) ([]models.User, error)
|
||||||
|
|
||||||
// GetUserFavoritesCount retrieves the count of a user's favorites.
|
// GetUserFavoritesCount retrieves the count of a user's favorites.
|
||||||
GetUserFavoritesCount(ctx context.Context, anthroveUserID models.AnthroveUserID) (int64, error)
|
GetUserFavoritesCount(ctx context.Context, anthroveUserID models.AnthroveUserID) (int64, error)
|
||||||
|
@ -29,10 +29,12 @@ func TestPostReference_TableName(t *testing.T) {
|
|||||||
PostID: tt.fields.PostID,
|
PostID: tt.fields.PostID,
|
||||||
SourceID: tt.fields.SourceID,
|
SourceID: tt.fields.SourceID,
|
||||||
URL: tt.fields.URL,
|
URL: tt.fields.URL,
|
||||||
|
PostReferenceConfig: PostReferenceConfig{
|
||||||
SourcePostID: tt.fields.SourcePostID,
|
SourcePostID: tt.fields.SourcePostID,
|
||||||
FullFileURL: tt.fields.FullFileURL,
|
FullFileURL: tt.fields.FullFileURL,
|
||||||
PreviewFileURL: tt.fields.PreviewFileURL,
|
PreviewFileURL: tt.fields.PreviewFileURL,
|
||||||
SampleFileURL: tt.fields.SampleFileURL,
|
SampleFileURL: tt.fields.SampleFileURL,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
if got := po.TableName(); got != tt.want {
|
if got := po.TableName(); got != tt.want {
|
||||||
t.Errorf("TableName() = %v, want %v", got, tt.want)
|
t.Errorf("TableName() = %v, want %v", got, tt.want)
|
||||||
|
@ -6,6 +6,7 @@ import (
|
|||||||
"net/url"
|
"net/url"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
"time"
|
||||||
|
|
||||||
"git.dragse.it/anthrove/otter-space-sdk/pkg/models"
|
"git.dragse.it/anthrove/otter-space-sdk/pkg/models"
|
||||||
migrate "github.com/rubenv/sql-migrate"
|
migrate "github.com/rubenv/sql-migrate"
|
||||||
@ -22,7 +23,7 @@ const (
|
|||||||
databaseName = "anthrove"
|
databaseName = "anthrove"
|
||||||
databaseUser = "anthrove"
|
databaseUser = "anthrove"
|
||||||
databasePassword = "anthrove"
|
databasePassword = "anthrove"
|
||||||
migrationSource = "../../pkg/database/migrations"
|
migrationSource = "../../pkg/database/migrations/"
|
||||||
)
|
)
|
||||||
|
|
||||||
func StartPostgresContainer(ctx context.Context) (*postgrescontainer.PostgresContainer, *gorm.DB, error) {
|
func StartPostgresContainer(ctx context.Context) (*postgrescontainer.PostgresContainer, *gorm.DB, error) {
|
||||||
@ -33,7 +34,9 @@ func StartPostgresContainer(ctx context.Context) (*postgrescontainer.PostgresCon
|
|||||||
postgrescontainer.WithUsername(databaseUser),
|
postgrescontainer.WithUsername(databaseUser),
|
||||||
postgrescontainer.WithPassword(databasePassword),
|
postgrescontainer.WithPassword(databasePassword),
|
||||||
testcontainers.WithWaitStrategy(
|
testcontainers.WithWaitStrategy(
|
||||||
wait.ForLog("database system is ready to accept connections")))
|
wait.ForLog("database system is ready to accept connections").
|
||||||
|
WithOccurrence(2).WithStartupTimeout(60*time.Second)),
|
||||||
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user