MCPcopy
hub / github.com/go-gorm/gorm / TestGenericsScopes

Function TestGenericsScopes

tests/generics_test.go:326–360  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

324}
325
326func TestGenericsScopes(t *testing.T) {
327 ctx := context.Background()
328
329 users := []User{{Name: "GenericsScopes1"}, {Name: "GenericsScopes2"}, {Name: "GenericsScopes3"}}
330 err := gorm.G[User](DB).CreateInBatches(ctx, &users, len(users))
331 if err != nil {
332 t.Fatalf("CreateInBatches failed: %v", err)
333 }
334
335 filterName1 := func(stmt *gorm.Statement) {
336 stmt.Where("name = ?", "GenericsScopes1")
337 }
338
339 results, err := gorm.G[User](DB).Scopes(filterName1).Find(ctx)
340 if err != nil {
341 t.Fatalf("Scopes failed: %v", err)
342 }
343 if len(results) != 1 || results[0].Name != "GenericsScopes1" {
344 t.Fatalf("Scopes expected 1, got %d", len(results))
345 }
346
347 notResult, err := gorm.G[User](DB).Where("name like ?", "GenericsScopes%").Not("name = ?", "GenericsScopes1").Order("name").Find(ctx)
348 if len(notResult) != 2 {
349 t.Fatalf("expected 2 results, got %d", len(notResult))
350 } else if notResult[0].Name != "GenericsScopes2" || notResult[1].Name != "GenericsScopes3" {
351 t.Fatalf("expected names 'GenericsScopes2' and 'GenericsScopes3', got %s and %s", notResult[0].Name, notResult[1].Name)
352 }
353
354 orResult, err := gorm.G[User](DB).Or("name = ?", "GenericsScopes1").Or("name = ?", "GenericsScopes2").Order("name").Find(ctx)
355 if len(orResult) != 2 {
356 t.Fatalf("expected 2 results, got %d", len(notResult))
357 } else if orResult[0].Name != "GenericsScopes1" || orResult[1].Name != "GenericsScopes2" {
358 t.Fatalf("expected names 'GenericsScopes2' and 'GenericsScopes3', got %s and %s", orResult[0].Name, orResult[1].Name)
359 }
360}
361
362func TestGenericsJoins(t *testing.T) {
363 ctx := context.Background()

Callers

nothing calls this directly

Calls 7

CreateInBatchesMethod · 0.65
WhereMethod · 0.65
FindMethod · 0.65
ScopesMethod · 0.65
OrderMethod · 0.65
NotMethod · 0.65
OrMethod · 0.65

Tested by

no test coverage detected