MCPcopy Index your code
hub / github.com/rilldata/rill / testProjectsForUserWithPagination

Function testProjectsForUserWithPagination

admin/database/postgres/postgres_test.go:368–427  ·  view source on GitHub ↗
(t *testing.T, db database.DB)

Source from the content-addressed store, hash-verified

366}
367
368func testProjectsForUserWithPagination(t *testing.T, db database.DB) {
369 ctx := context.Background()
370
371 // add user
372 user, err := db.InsertUser(ctx, &database.InsertUserOptions{Email: "test@rilldata.com"})
373 require.NoError(t, err)
374 require.Equal(t, "test@rilldata.com", user.Email)
375
376 // fetch role
377 role, err := db.FindProjectRole(ctx, database.ProjectRoleNameEditor)
378 require.NoError(t, err)
379
380 // add org
381 org, err := db.InsertOrganization(ctx, &database.InsertOrganizationOptions{Name: "test"})
382 require.NoError(t, err)
383 require.Equal(t, "test", org.Name)
384
385 // add projects
386 // public project
387 proj, err := db.InsertProject(ctx, &database.InsertProjectOptions{OrganizationID: org.ID, Name: "alpha", Public: true})
388 require.NoError(t, err)
389
390 // user added as collaborator
391 proj1, err := db.InsertProject(ctx, &database.InsertProjectOptions{OrganizationID: org.ID, Name: "beta"})
392 require.NoError(t, err)
393 require.Equal(t, "beta", proj1.Name)
394 require.NoError(t, db.InsertProjectMemberUser(ctx, proj1.ID, user.ID, role.ID, false, nil))
395
396 // public project and user added as collaborator
397 proj2, err := db.InsertProject(ctx, &database.InsertProjectOptions{OrganizationID: org.ID, Name: "gamma", Public: true})
398 require.NoError(t, err)
399 require.Equal(t, "gamma", proj2.Name)
400 require.NoError(t, db.InsertProjectMemberUser(ctx, proj2.ID, user.ID, role.ID, false, nil))
401
402 // internal project
403 proj3, err := db.InsertProject(ctx, &database.InsertProjectOptions{OrganizationID: org.ID, Name: "internal"})
404 require.NoError(t, err)
405 require.Equal(t, "internal", proj3.Name)
406
407 // fetch projects without name filter
408 projs, err := db.FindProjectsForOrgAndUser(ctx, org.ID, user.ID, true, true, "", 2)
409 require.NoError(t, err)
410 require.Equal(t, len(projs), 2)
411 require.Equal(t, "alpha", projs[0].Name)
412 require.Equal(t, "beta", projs[1].Name)
413
414 // fetch project with name filter
415 projs, err = db.FindProjectsForOrgAndUser(ctx, org.ID, user.ID, true, true, projs[1].Name, 2)
416 require.NoError(t, err)
417 require.Equal(t, len(projs), 1)
418 require.Equal(t, "gamma", projs[0].Name)
419
420 //cleanup
421 require.NoError(t, db.DeleteProject(ctx, proj.ID))
422 require.NoError(t, db.DeleteProject(ctx, proj1.ID))
423 require.NoError(t, db.DeleteProject(ctx, proj2.ID))
424 require.NoError(t, db.DeleteProject(ctx, proj3.ID))
425 require.NoError(t, db.DeleteOrganization(ctx, "test"))

Callers 1

TestPostgresFunction · 0.85

Calls 9

InsertUserMethod · 0.65
FindProjectRoleMethod · 0.65
InsertOrganizationMethod · 0.65
InsertProjectMethod · 0.65
DeleteProjectMethod · 0.65
DeleteOrganizationMethod · 0.65
DeleteUserMethod · 0.65

Tested by

no test coverage detected