// The SetupTest method will be run before every test in the suite. // SetupTest ensures that none of the work item links that we will create already exist. // It will also make sure that some resources that we rely on do exists. func (s *workItemLinkSuite) SetupTest() { s.cleanup() var err error // Create 3 work items (bug1, bug2, and feature1) bug1Payload := CreateWorkItem(workitem.SystemBug, "bug1") _, bug1 := test.CreateWorkitemCreated(s.T(), s.workItemSvc.Context, s.workItemSvc, s.workItemCtrl, bug1Payload) require.NotNil(s.T(), bug1) s.deleteWorkItems = append(s.deleteWorkItems, *bug1.Data.ID) s.bug1ID, err = strconv.ParseUint(*bug1.Data.ID, 10, 64) require.Nil(s.T(), err) fmt.Printf("Created bug1 with ID: %s\n", *bug1.Data.ID) bug2Payload := CreateWorkItem(workitem.SystemBug, "bug2") _, bug2 := test.CreateWorkitemCreated(s.T(), s.workItemSvc.Context, s.workItemSvc, s.workItemCtrl, bug2Payload) require.NotNil(s.T(), bug2) s.deleteWorkItems = append(s.deleteWorkItems, *bug2.Data.ID) s.bug2ID, err = strconv.ParseUint(*bug2.Data.ID, 10, 64) require.Nil(s.T(), err) fmt.Printf("Created bug2 with ID: %s\n", *bug2.Data.ID) bug3Payload := CreateWorkItem(workitem.SystemBug, "bug3") _, bug3 := test.CreateWorkitemCreated(s.T(), s.workItemSvc.Context, s.workItemSvc, s.workItemCtrl, bug3Payload) require.NotNil(s.T(), bug3) s.deleteWorkItems = append(s.deleteWorkItems, *bug3.Data.ID) s.bug3ID, err = strconv.ParseUint(*bug3.Data.ID, 10, 64) require.Nil(s.T(), err) fmt.Printf("Created bug3 with ID: %s\n", *bug3.Data.ID) feature1Payload := CreateWorkItem(workitem.SystemFeature, "feature1") _, feature1 := test.CreateWorkitemCreated(s.T(), s.workItemSvc.Context, s.workItemSvc, s.workItemCtrl, feature1Payload) require.NotNil(s.T(), feature1) s.deleteWorkItems = append(s.deleteWorkItems, *feature1.Data.ID) s.feature1ID, err = strconv.ParseUint(*feature1.Data.ID, 10, 64) require.Nil(s.T(), err) fmt.Printf("Created feature with ID: %s\n", *feature1.Data.ID) // Create a work item link category createLinkCategoryPayload := CreateWorkItemLinkCategory("test-user") _, workItemLinkCategory := test.CreateWorkItemLinkCategoryCreated(s.T(), nil, nil, s.workItemLinkCategoryCtrl, createLinkCategoryPayload) require.NotNil(s.T(), workItemLinkCategory) //s.deleteWorkItemLinkCategories = append(s.deleteWorkItemLinkCategories, *workItemLinkCategory.Data.ID) s.userLinkCategoryID = *workItemLinkCategory.Data.ID fmt.Printf("Created link category with ID: %s\n", *workItemLinkCategory.Data.ID) // Create work item link type payload createLinkTypePayload := CreateWorkItemLinkType("test-bug-blocker", workitem.SystemBug, workitem.SystemBug, s.userLinkCategoryID) _, workItemLinkType := test.CreateWorkItemLinkTypeCreated(s.T(), nil, nil, s.workItemLinkTypeCtrl, createLinkTypePayload) require.NotNil(s.T(), workItemLinkType) //s.deleteWorkItemLinkTypes = append(s.deleteWorkItemLinkTypes, *workItemLinkType.Data.ID) s.bugBlockerLinkTypeID = *workItemLinkType.Data.ID fmt.Printf("Created link type with ID: %s\n", *workItemLinkType.Data.ID) }
// createDemoType creates a demo work item link type of type "name" func (s *workItemLinkTypeSuite) createDemoLinkType(name string) *app.CreateWorkItemLinkTypePayload { // // 1. Create at least one work item type // workItemTypePayload := CreateWorkItemType("foo.bug") // _, workItemType := test.CreateWorkitemtypeCreated(s.T(), nil, nil, s.typeCtrl, workItemTypePayload) // require.NotNil(s.T(), workItemType) // 2. Create a work item link category createLinkCategoryPayload := CreateWorkItemLinkCategory("test-user") _, workItemLinkCategory := test.CreateWorkItemLinkCategoryCreated(s.T(), nil, nil, s.linkCatCtrl, createLinkCategoryPayload) require.NotNil(s.T(), workItemLinkCategory) // 3. Create work item link type payload createLinkTypePayload := CreateWorkItemLinkType(name, workitem.SystemBug, workitem.SystemBug, *workItemLinkCategory.Data.ID) return createLinkTypePayload }
// createWorkItemLinkCategoryUser defines a work item link category "test-user" func (s *workItemLinkCategorySuite) createWorkItemLinkCategoryUser() (http.ResponseWriter, *app.WorkItemLinkCategorySingle) { name := "test-user" description := "This work item link category is managed by an admin user." id := "bf30167a-9446-42de-82be-6b3815152051" // Use the goa generated code to create a work item link category payload := app.CreateWorkItemLinkCategoryPayload{ Data: &app.WorkItemLinkCategoryData{ ID: &id, Type: link.EndpointWorkItemLinkCategories, Attributes: &app.WorkItemLinkCategoryAttributes{ Name: &name, Description: &description, }, }, } return test.CreateWorkItemLinkCategoryCreated(s.T(), nil, nil, s.linkCatCtrl, &payload) }
// createWorkItemLinkCategorySystem defines a work item link category "test-system" func (s *workItemLinkCategorySuite) createWorkItemLinkCategorySystem() (http.ResponseWriter, *app.WorkItemLinkCategorySingle) { name := "test-system" description := "This work item link category is reserved for the core system." id := "0e671e36-871b-43a6-9166-0c4bd573e231" // Use the goa generated code to create a work item link category payload := app.CreateWorkItemLinkCategoryPayload{ Data: &app.WorkItemLinkCategoryData{ ID: &id, Type: link.EndpointWorkItemLinkCategories, Attributes: &app.WorkItemLinkCategoryAttributes{ Name: &name, Description: &description, }, }, } return test.CreateWorkItemLinkCategoryCreated(s.T(), nil, nil, s.linkCatCtrl, &payload) }
// TestListSourceAndTargetLinkTypes tests if we can find the work item link // types for a given WIT. func (s *workItemTypeSuite) TestListSourceAndTargetLinkTypes() { defer cleaner.DeleteCreatedEntities(s.DB)() // Create the work item type first and try to read it back in _, witAnimal := s.createWorkItemTypeAnimal() require.NotNil(s.T(), witAnimal) _, witPerson := s.createWorkItemTypePerson() require.NotNil(s.T(), witPerson) // Create work item link category linkCatPayload := CreateWorkItemLinkCategory("some-link-category") _, linkCat := test.CreateWorkItemLinkCategoryCreated(s.T(), nil, nil, s.linkCatCtrl, linkCatPayload) require.NotNil(s.T(), linkCat) // Create work item link type animalLinksToBugStr := "animal-links-to-bug" linkTypePayload := CreateWorkItemLinkType(animalLinksToBugStr, "animal", workitem.SystemBug, *linkCat.Data.ID) _, linkType := test.CreateWorkItemLinkTypeCreated(s.T(), nil, nil, s.linkTypeCtrl, linkTypePayload) require.NotNil(s.T(), linkType) // Create another work item link type bugLinksToAnimalStr := "bug-links-to-animal" linkTypePayload = CreateWorkItemLinkType(bugLinksToAnimalStr, workitem.SystemBug, "animal", *linkCat.Data.ID) _, linkType = test.CreateWorkItemLinkTypeCreated(s.T(), nil, nil, s.linkTypeCtrl, linkTypePayload) require.NotNil(s.T(), linkType) // Fetch source link types _, wiltCollection := test.ListSourceLinkTypesWorkitemtypeOK(s.T(), nil, nil, s.typeCtrl, "animal") require.NotNil(s.T(), wiltCollection) assert.Nil(s.T(), wiltCollection.Validate()) // Check the number of found work item link types require.Len(s.T(), wiltCollection.Data, 1) require.Equal(s.T(), animalLinksToBugStr, *wiltCollection.Data[0].Attributes.Name) // Fetch target link types _, wiltCollection = test.ListTargetLinkTypesWorkitemtypeOK(s.T(), nil, nil, s.typeCtrl, "animal") require.NotNil(s.T(), wiltCollection) require.Nil(s.T(), wiltCollection.Validate()) // Check the number of found work item link types require.Len(s.T(), wiltCollection.Data, 1) require.Equal(s.T(), bugLinksToAnimalStr, *wiltCollection.Data[0].Attributes.Name) }