func (s *workItemTypeRepoBlackBoxTest) SetupTest() { s.undoScript = &gormsupport.DBScript{} gWitRepo := workitem.NewWorkItemTypeRepository(s.DB) s.repo = workitem.NewUndoableWorkItemTypeRepository(gWitRepo, s.undoScript) db2 := s.DB.Unscoped().Delete(workitem.WorkItemType{Name: "foo_bar"}) if db2.Error != nil { s.T().Fatalf("Could not setup test %s", db2.Error.Error()) return } workitem.ClearGlobalWorkItemTypeCache() }
func (s *searchRepositoryBlackboxTest) TestRestrictByType() { resource.Require(s.T(), resource.Database) undoScript := &gormsupport.DBScript{} defer undoScript.Run(s.DB) typeRepo := workitem.NewUndoableWorkItemTypeRepository(workitem.NewWorkItemTypeRepository(s.DB), undoScript) wiRepo := workitem.NewUndoableWorkItemRepository(workitem.NewWorkItemRepository(s.DB), undoScript) searchRepo := search.NewGormSearchRepository(s.DB) ctx := context.Background() res, count, err := searchRepo.SearchFullText(ctx, "TestRestrictByType", nil, nil) require.Nil(s.T(), err) require.True(s.T(), count == uint64(len(res))) // safety check for many, many instances of bogus search results. for _, wi := range res { wiRepo.Delete(ctx, wi.ID) } s.DB.Unscoped().Delete(&workitem.WorkItemType{Name: "base"}) s.DB.Unscoped().Delete(&workitem.WorkItemType{Name: "sub1"}) s.DB.Unscoped().Delete(&workitem.WorkItemType{Name: "subtwo"}) extended := workitem.SystemBug base, err := typeRepo.Create(ctx, &extended, "base", map[string]app.FieldDefinition{}) require.NotNil(s.T(), base) require.Nil(s.T(), err) extended = "base" sub1, err := typeRepo.Create(ctx, &extended, "sub1", map[string]app.FieldDefinition{}) require.NotNil(s.T(), sub1) require.Nil(s.T(), err) sub2, err := typeRepo.Create(ctx, &extended, "subtwo", map[string]app.FieldDefinition{}) require.NotNil(s.T(), sub2) require.Nil(s.T(), err) wi1, err := wiRepo.Create(ctx, "sub1", map[string]interface{}{ workitem.SystemTitle: "Test TestRestrictByType", workitem.SystemState: "closed", }, testsupport.TestIdentity.ID.String()) require.NotNil(s.T(), wi1) require.Nil(s.T(), err) wi2, err := wiRepo.Create(ctx, "subtwo", map[string]interface{}{ workitem.SystemTitle: "Test TestRestrictByType 2", workitem.SystemState: "closed", }, testsupport.TestIdentity.ID.String()) require.NotNil(s.T(), wi2) require.Nil(s.T(), err) res, count, err = searchRepo.SearchFullText(ctx, "TestRestrictByType", nil, nil) assert.Nil(s.T(), err) assert.Equal(s.T(), uint64(2), count) res, count, err = searchRepo.SearchFullText(ctx, "TestRestrictByType type:sub1", nil, nil) assert.Nil(s.T(), err) assert.Equal(s.T(), uint64(1), count) if count == 1 { assert.Equal(s.T(), wi1.ID, res[0].ID) } res, count, err = searchRepo.SearchFullText(ctx, "TestRestrictByType type:subtwo", nil, nil) assert.Nil(s.T(), err) assert.Equal(s.T(), uint64(1), count) if count == 1 { assert.Equal(s.T(), wi2.ID, res[0].ID) } _, count, err = searchRepo.SearchFullText(ctx, "TestRestrictByType type:base", nil, nil) assert.Nil(s.T(), err) assert.Equal(s.T(), uint64(2), count) _, count, err = searchRepo.SearchFullText(ctx, "TestRestrictByType type:subtwo type:sub1", nil, nil) assert.Nil(s.T(), err) assert.Equal(s.T(), uint64(2), count) _, count, err = searchRepo.SearchFullText(ctx, "TestRestrictByType type:base type:sub1", nil, nil) assert.Nil(s.T(), err) assert.Equal(s.T(), uint64(2), count) _, count, err = searchRepo.SearchFullText(ctx, "TRBTgorxi type:base", nil, nil) assert.Nil(s.T(), err) assert.Equal(s.T(), uint64(0), count) }