package postgres import ( "context" "fmt" "git.dragse.it/anthrove/otter-space-sdk/pkg/models" "git.dragse.it/anthrove/otter-space-sdk/test" "gorm.io/gorm" "testing" ) func TestCheckUserToPostLink(t *testing.T) { // Setup trow away container ctx := context.Background() container, gormDB, err := test.StartPostgresContainer(ctx) if err != nil { t.Fatalf("Could not start PostgreSQL container: %v", err) } defer container.Terminate(ctx) // Setup Test err = CreateUser(ctx, gormDB, "1") if err != nil { t.Fatal(err) } post := &models.Post{ BaseModel: models.BaseModel{ ID: fmt.Sprintf("%025s", "1"), }, Rating: "safe", } err = CreatePost(ctx, gormDB, post) if err != nil { t.Fatal(err) } err = CreateReferenceBetweenUserAndPost(ctx, gormDB, "1", models.AnthrovePostID(post.ID)) if err != nil { t.Fatal(err) } // Test type args struct { ctx context.Context db *gorm.DB anthroveUserID models.AnthroveUserID anthrovePostID models.AnthrovePostID } tests := []struct { name string args args want bool wantErr bool }{ { name: "Test 1: Valid AnthroveUserID and AnthrovePostID", args: args{ ctx: ctx, db: gormDB, anthroveUserID: "1", anthrovePostID: models.AnthrovePostID(post.ID), }, want: true, wantErr: false, }, { name: "Test 2: Valid AnthroveUserID and invalid AnthrovePostID", args: args{ ctx: ctx, db: gormDB, anthroveUserID: "1", anthrovePostID: "qadw", }, want: false, wantErr: false, }, { name: "Test 3: Valid AnthrovePostID and invalid AnthroveUserID", args: args{ ctx: ctx, db: gormDB, anthroveUserID: "123", anthrovePostID: models.AnthrovePostID(post.ID), }, want: false, wantErr: false, }, { name: "Test 4: Invalid AnthrovePostID and invalid AnthroveUserID", args: args{ ctx: ctx, db: gormDB, anthroveUserID: "123", anthrovePostID: "123456", }, want: false, wantErr: false, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { got, err := CheckReferenceBetweenUserAndPost(tt.args.ctx, tt.args.db, tt.args.anthroveUserID, tt.args.anthrovePostID) if (err != nil) != tt.wantErr { t.Errorf("CheckReferenceBetweenUserAndPost() error = %v, wantErr %v", err, tt.wantErr) return } if got != tt.want { t.Errorf("CheckReferenceBetweenUserAndPost() got = %v, want %v", got, tt.want) } }) } } func TestEstablishAnthrovePostToSourceLink(t *testing.T) { // Setup trow away container ctx := context.Background() container, gormDB, err := test.StartPostgresContainer(ctx) if err != nil { t.Fatalf("Could not start PostgreSQL container: %v", err) } defer container.Terminate(ctx) // Setup Test post := &models.Post{ BaseModel: models.BaseModel{ ID: fmt.Sprintf("%025s", "1"), }, Rating: "safe", } err = CreatePost(ctx, gormDB, post) if err != nil { t.Fatal(err) } source := &models.Source{ DisplayName: "e621", Domain: "e621.net", Icon: "icon.e621.net", } err = CreateSource(ctx, gormDB, source) if err != nil { t.Fatal(err) } // Test type args struct { ctx context.Context db *gorm.DB anthrovePostID models.AnthrovePostID sourceDomain models.AnthroveSourceDomain anthrovePostRelationship *models.PostReference } tests := []struct { name string args args wantErr bool }{ { name: "Test 1: Valid AnthrovePostID and anthroveSourceDomain", args: args{ ctx: ctx, db: gormDB, anthrovePostID: models.AnthrovePostID(post.ID), sourceDomain: "e621.net", }, wantErr: false, }, { name: "Test 2: Invalid AnthrovePostID and Valid anthroveSourceDomain", args: args{ ctx: ctx, db: gormDB, anthrovePostID: "123456", sourceDomain: "e621.net", }, wantErr: true, }, { name: "Test 3: Invalid anthroveSourceDomain and Valid AnthrovePostID", args: args{ ctx: ctx, db: gormDB, anthrovePostID: "1234", sourceDomain: "fa.banana", }, wantErr: true, }, { name: "Test 4: Invalid anthroveSourceDomain and Invalid AnthrovePostID", args: args{ ctx: ctx, db: gormDB, anthrovePostID: "696969", sourceDomain: "hehe.funny.number", }, wantErr: true, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { if err := CreateReferenceBetweenPostAndSource(tt.args.ctx, tt.args.db, tt.args.anthrovePostID, tt.args.sourceDomain); (err != nil) != tt.wantErr { t.Errorf("CreateReferenceBetweenPostAndSource() error = %v, wantErr %v", err, tt.wantErr) } }) } } func TestEstablishUserToPostLink(t *testing.T) { // Setup trow away container ctx := context.Background() container, gormDB, err := test.StartPostgresContainer(ctx) if err != nil { t.Fatalf("Could not start PostgreSQL container: %v", err) } defer container.Terminate(ctx) // Setup Test err = CreateUser(ctx, gormDB, "1") if err != nil { t.Fatal(err) } post := &models.Post{ BaseModel: models.BaseModel{ ID: fmt.Sprintf("%025s", "1"), }, Rating: "safe", } err = CreatePost(ctx, gormDB, post) if err != nil { t.Fatal(err) } // Test type args struct { ctx context.Context db *gorm.DB anthroveUserID models.AnthroveUserID anthrovePostID models.AnthrovePostID } tests := []struct { name string args args wantErr bool }{ { name: "Test 1: Valid AnthroveUserID and AnthrovePostID", args: args{ ctx: ctx, db: gormDB, anthroveUserID: "1", anthrovePostID: models.AnthrovePostID(post.ID), }, wantErr: false, }, { name: "Test 2: Valid AnthroveUserID and invalid AnthrovePostID", args: args{ ctx: ctx, db: gormDB, anthroveUserID: "1", anthrovePostID: "123456", }, wantErr: true, }, { name: "Test 3: Valid AnthrovePostID and invalid AnthroveUserID", args: args{ ctx: ctx, db: gormDB, anthroveUserID: "123", anthrovePostID: "1234", }, wantErr: true, }, { name: "Test 4: Invalid AnthrovePostID and invalid AnthroveUserID", args: args{ ctx: ctx, db: gormDB, anthroveUserID: "123", anthrovePostID: "123456", }, wantErr: true, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { if err := CreateReferenceBetweenUserAndPost(tt.args.ctx, tt.args.db, tt.args.anthroveUserID, tt.args.anthrovePostID); (err != nil) != tt.wantErr { t.Errorf("CreateReferenceBetweenUserAndPost() error = %v, wantErr %v", err, tt.wantErr) } }) } }