func (s *searchRepositoryWhiteboxTest) TestSearchByID() { models.Transactional(s.DB, func(tx *gorm.DB) error { wir := workitem.NewWorkItemRepository(tx) workItem := app.WorkItem{Fields: make(map[string]interface{})} workItem.Fields = map[string]interface{}{ workitem.SystemTitle: "Search Test Sbose", workitem.SystemDescription: rendering.NewMarkupContentFromLegacy("Description"), workitem.SystemCreator: "sbose78", workitem.SystemAssignees: []string{"pranav"}, workitem.SystemState: "closed", } createdWorkItem, err := wir.Create(context.Background(), workitem.SystemBug, workItem.Fields, testsupport.TestIdentity.ID.String()) if err != nil { s.T().Fatalf("Couldn't create test data: %+v", err) } defer wir.Delete(context.Background(), createdWorkItem.ID) // Create a new workitem to have the ID in it's title. This should not come // up in search results workItem.Fields[workitem.SystemTitle] = "Search test sbose " + createdWorkItem.ID _, err = wir.Create(context.Background(), workitem.SystemBug, workItem.Fields, testsupport.TestIdentity.ID.String()) if err != nil { s.T().Fatalf("Couldn't create test data: %+v", err) } sr := NewGormSearchRepository(tx) var start, limit int = 0, 100 searchString := "id:" + createdWorkItem.ID workItemList, _, err := sr.SearchFullText(context.Background(), searchString, &start, &limit) if err != nil { s.T().Fatal("Error gettig search result ", err) } // ID is unique, hence search result set's length should be 1 assert.Equal(s.T(), len(workItemList), 1) for _, workItemValue := range workItemList { s.T().Log("Found search result for ID Search ", workItemValue.ID) assert.Equal(s.T(), createdWorkItem.ID, workItemValue.ID) } return errors.WithStack(err) }) }