func (s *workItemLinkSuite) TestCreateAndDeleteWorkItemLink() { createPayload := CreateWorkItemLink(s.bug1ID, s.bug2ID, s.bugBlockerLinkTypeID) _, workItemLink := test.CreateWorkItemLinkCreated(s.T(), nil, nil, s.workItemLinkCtrl, createPayload) require.NotNil(s.T(), workItemLink) // Test if related resources are included in the response toBeFound := 2 for i := 0; i < len(workItemLink.Included) && toBeFound > 0; i++ { switch v := workItemLink.Included[i].(type) { case *app.WorkItemLinkCategoryData: if *v.ID == s.userLinkCategoryID { s.T().Log("Found work item link category in \"included\" element: ", *v.ID) toBeFound-- } case *app.WorkItemLinkTypeData: if *v.ID == s.bugBlockerLinkTypeID { s.T().Log("Found work item link type in \"included\" element: ", *v.ID) toBeFound-- } // TODO(kwk): Check for source WI (once #559 is merged) // TODO(kwk): Check for target WI (once #559 is merged) // case *app.WorkItemData: // TODO(kwk): Check for WITs (once #559 is merged) // case *app.WorkItemTypeData: default: s.T().Errorf("Object of unknown type included in work item link list response: %T", workItemLink.Included[i]) } } require.Exactly(s.T(), 0, toBeFound, "Not all required included elements where found.") _ = test.DeleteWorkItemLinkOK(s.T(), nil, nil, s.workItemLinkCtrl, *workItemLink.Data.ID) }
// Check if #586 is fixed. func (s *workItemLinkSuite) TestCreateAndDeleteWorkItemLinkBadRequestDueToUniqueViolation() { createPayload1 := CreateWorkItemLink(s.bug1ID, s.bug2ID, s.bugBlockerLinkTypeID) _, workItemLink1 := test.CreateWorkItemLinkCreated(s.T(), nil, nil, s.workItemLinkCtrl, createPayload1) require.NotNil(s.T(), workItemLink1) s.deleteWorkItemLinks = append(s.deleteWorkItemLinks, *workItemLink1.Data.ID) createPayload2 := CreateWorkItemLink(s.bug1ID, s.bug2ID, s.bugBlockerLinkTypeID) _, _ = test.CreateWorkItemLinkBadRequest(s.T(), nil, nil, s.workItemLinkCtrl, createPayload2) }
func (s *workItemLinkSuite) createSomeLinks() (*app.WorkItemLinkSingle, *app.WorkItemLinkSingle) { createPayload1 := CreateWorkItemLink(s.bug1ID, s.bug2ID, s.bugBlockerLinkTypeID) _, workItemLink1 := test.CreateWorkItemLinkCreated(s.T(), nil, nil, s.workItemLinkCtrl, createPayload1) require.NotNil(s.T(), workItemLink1) // Delete this work item link during cleanup s.deleteWorkItemLinks = append(s.deleteWorkItemLinks, *workItemLink1.Data.ID) expected1 := link.WorkItemLink{} require.Nil(s.T(), link.ConvertLinkToModel(*workItemLink1, &expected1)) createPayload2 := CreateWorkItemLink(s.bug2ID, s.bug3ID, s.bugBlockerLinkTypeID) _, workItemLink2 := test.CreateWorkItemLinkCreated(s.T(), nil, nil, s.workItemLinkCtrl, createPayload2) require.NotNil(s.T(), workItemLink2) // Delete this work item link during cleanup s.deleteWorkItemLinks = append(s.deleteWorkItemLinks, *workItemLink2.Data.ID) expected2 := link.WorkItemLink{} require.Nil(s.T(), link.ConvertLinkToModel(*workItemLink2, &expected2)) return workItemLink1, workItemLink2 }
func (s *workItemLinkSuite) TestUpdateWorkItemLinkOK() { createPayload := CreateWorkItemLink(s.bug1ID, s.bug2ID, s.bugBlockerLinkTypeID) _, workItemLink := test.CreateWorkItemLinkCreated(s.T(), nil, nil, s.workItemLinkCtrl, createPayload) require.NotNil(s.T(), workItemLink) // Delete this work item link during cleanup s.deleteWorkItemLinks = append(s.deleteWorkItemLinks, *workItemLink.Data.ID) // Specify new description for link type that we just created // Wrap data portion in an update payload instead of a create payload updateLinkPayload := &app.UpdateWorkItemLinkPayload{ Data: workItemLink.Data, } updateLinkPayload.Data.Relationships.Target.Data.ID = strconv.FormatUint(s.bug3ID, 10) _, l := test.UpdateWorkItemLinkOK(s.T(), nil, nil, s.workItemLinkCtrl, *updateLinkPayload.Data.ID, updateLinkPayload) require.NotNil(s.T(), l.Data) require.NotNil(s.T(), l.Data.Relationships) require.NotNil(s.T(), l.Data.Relationships.Target.Data) require.Equal(s.T(), strconv.FormatUint(s.bug3ID, 10), l.Data.Relationships.Target.Data.ID) }
// TestShowWorkItemLinkOK tests if we can fetch the "system" work item link func (s *workItemLinkSuite) TestShowWorkItemLinkOK() { createPayload := CreateWorkItemLink(s.bug1ID, s.bug2ID, s.bugBlockerLinkTypeID) _, workItemLink := test.CreateWorkItemLinkCreated(s.T(), nil, nil, s.workItemLinkCtrl, createPayload) require.NotNil(s.T(), workItemLink) // Delete this work item link during cleanup s.deleteWorkItemLinks = append(s.deleteWorkItemLinks, *workItemLink.Data.ID) expected := link.WorkItemLink{} require.Nil(s.T(), link.ConvertLinkToModel(*workItemLink, &expected)) _, readIn := test.ShowWorkItemLinkOK(s.T(), nil, nil, s.workItemLinkCtrl, *workItemLink.Data.ID) require.NotNil(s.T(), readIn) // Convert to model space and use equal function actual := link.WorkItemLink{} require.Nil(s.T(), link.ConvertLinkToModel(*readIn, &actual)) require.True(s.T(), expected.Equal(actual)) require.NotNil(s.T(), readIn.Data.Links, "The link MUST include a self link") require.NotEmpty(s.T(), readIn.Data.Links.Self, "The link MUST include a self link that's not empty") }