|
4 | 4 | "context" |
5 | 5 | "database/sql" |
6 | 6 | "errors" |
| 7 | + "slices" |
7 | 8 | "testing" |
8 | 9 | "time" |
9 | 10 |
|
@@ -259,3 +260,85 @@ func TestOrganizationStore_FindByUUID(t *testing.T) { |
259 | 260 | require.NotNil(t, err) |
260 | 261 | require.Nil(t, org) |
261 | 262 | } |
| 263 | + |
| 264 | +func TestOrganizationStore_SearchOrder(t *testing.T) { |
| 265 | + db := tests.InitTestDB() |
| 266 | + defer db.Close() |
| 267 | + ctx := context.TODO() |
| 268 | + |
| 269 | + store := database.NewOrgStoreWithDB(db) |
| 270 | + orgsToCreate := []database.Organization{ |
| 271 | + { |
| 272 | + Name: "sss", |
| 273 | + Nickname: "zzz org", |
| 274 | + UUID: uuid.New(), |
| 275 | + }, |
| 276 | + { |
| 277 | + Name: "sss-team", |
| 278 | + Nickname: "alpha org", |
| 279 | + UUID: uuid.New(), |
| 280 | + }, |
| 281 | + { |
| 282 | + Name: "team-01", |
| 283 | + Nickname: "sss", |
| 284 | + UUID: uuid.New(), |
| 285 | + }, |
| 286 | + { |
| 287 | + Name: "team-02", |
| 288 | + Nickname: "sss group", |
| 289 | + UUID: uuid.New(), |
| 290 | + }, |
| 291 | + { |
| 292 | + Name: "team-03", |
| 293 | + Nickname: "group sss", |
| 294 | + UUID: uuid.New(), |
| 295 | + }, |
| 296 | + } |
| 297 | + |
| 298 | + for _, org := range orgsToCreate { |
| 299 | + err := store.Create(ctx, &org, &database.Namespace{Path: org.Name}) |
| 300 | + require.Nil(t, err) |
| 301 | + } |
| 302 | + |
| 303 | + orgs, total, err := store.Search(ctx, "sss", 10, 1, "", "") |
| 304 | + require.Nil(t, err) |
| 305 | + require.Equal(t, 5, total) |
| 306 | + |
| 307 | + gotNames := make([]string, 0, len(orgs)) |
| 308 | + for _, org := range orgs { |
| 309 | + gotNames = append(gotNames, org.Name) |
| 310 | + } |
| 311 | + |
| 312 | + require.Equal(t, []string{"sss", "sss-team", "team-01", "team-02", "team-03"}, gotNames) |
| 313 | +} |
| 314 | + |
| 315 | +func TestOrganizationStore_SearchOrderCaseInsensitive(t *testing.T) { |
| 316 | + db := tests.InitTestDB() |
| 317 | + defer db.Close() |
| 318 | + ctx := context.TODO() |
| 319 | + |
| 320 | + store := database.NewOrgStoreWithDB(db) |
| 321 | + err := store.Create(ctx, &database.Organization{ |
| 322 | + Name: "SSS-Exact", |
| 323 | + Nickname: "display", |
| 324 | + UUID: uuid.New(), |
| 325 | + }, &database.Namespace{Path: "SSS-Exact"}) |
| 326 | + require.Nil(t, err) |
| 327 | + err = store.Create(ctx, &database.Organization{ |
| 328 | + Name: "other", |
| 329 | + Nickname: "sss", |
| 330 | + UUID: uuid.New(), |
| 331 | + }, &database.Namespace{Path: "other"}) |
| 332 | + require.Nil(t, err) |
| 333 | + |
| 334 | + orgs, total, err := store.Search(ctx, "sss-exact", 10, 1, "", "") |
| 335 | + require.Nil(t, err) |
| 336 | + require.Equal(t, 1, total) |
| 337 | + require.Len(t, orgs, 1) |
| 338 | + require.Equal(t, "SSS-Exact", orgs[0].Name) |
| 339 | + |
| 340 | + orgs, total, err = store.Search(ctx, "SSS", 10, 1, "", "") |
| 341 | + require.Nil(t, err) |
| 342 | + require.Equal(t, 2, total) |
| 343 | + require.True(t, slices.Equal([]string{"SSS-Exact", "other"}, []string{orgs[0].Name, orgs[1].Name})) |
| 344 | +} |
0 commit comments