func (s *workItemLinkSuite) validateSomeLinks(linkCollection *app.WorkItemLinkList, workItemLink1, workItemLink2 *app.WorkItemLinkSingle) {
	require.NotNil(s.T(), linkCollection)
	require.Nil(s.T(), linkCollection.Validate())
	// Check the number of found work item links
	require.NotNil(s.T(), linkCollection.Data)
	require.Condition(s.T(), func() bool {
		return (len(linkCollection.Data) >= 2)
	}, "At least two work item links must exist (%s and %s), but only %d exist.", *workItemLink1.Data.ID, *workItemLink2.Data.ID, len(linkCollection.Data))
	// Search for the work item types that must exist at minimum
	toBeFound := 2
	for i := 0; i < len(linkCollection.Data) && toBeFound > 0; i++ {
		actualLink := *linkCollection.Data[i]
		var expectedLink *app.WorkItemLinkData

		switch *actualLink.ID {
		case *workItemLink1.Data.ID:
			expectedLink = workItemLink1.Data
		case *workItemLink2.Data.ID:
			expectedLink = workItemLink2.Data
		}

		if expectedLink != nil {
			s.T().Log("Found work item link in collection: ", *expectedLink.ID)
			toBeFound--

			// Check JSONAPI "type"" field (should be "workitemlinks")
			require.Equal(s.T(), expectedLink.Type, actualLink.Type)

			// Check work item link type
			require.Equal(s.T(), expectedLink.Relationships.LinkType.Data.ID, actualLink.Relationships.LinkType.Data.ID)
			require.Equal(s.T(), expectedLink.Relationships.LinkType.Data.Type, actualLink.Relationships.LinkType.Data.Type)

			// Check source type
			require.Equal(s.T(), expectedLink.Relationships.Source.Data.ID, actualLink.Relationships.Source.Data.ID, "Wrong source ID for the link")
			require.Equal(s.T(), expectedLink.Relationships.Source.Data.Type, actualLink.Relationships.Source.Data.Type, "Wrong source JSONAPI type for the link")

			// Check target type
			require.Equal(s.T(), expectedLink.Relationships.Target.Data.ID, actualLink.Relationships.Target.Data.ID, "Wrong target ID for the link")
			require.Equal(s.T(), expectedLink.Relationships.Target.Data.Type, actualLink.Relationships.Target.Data.Type, "Wrong target JSONAPI type for the link")
		}
	}
	require.Exactly(s.T(), 0, toBeFound, "Not all required work item links (%s and %s) where found.", *workItemLink1.Data.ID, *workItemLink2.Data.ID)

	toBeFound = 5 // 1 x link category, 1 x link type, 3 x work items
	for i := 0; i < len(linkCollection.Included) && toBeFound > 0; i++ {
		switch v := linkCollection.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.Space:
			if *v.ID == s.userSpaceID {
				s.T().Log("Found work item link space 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--
			}
		case *app.WorkItem:
			wid, err := strconv.ParseUint(*v.ID, 10, 64)
			require.Nil(s.T(), err)
			if wid == s.bug1ID || wid == s.bug2ID || wid == s.bug3ID {
				s.T().Log("Found work item in \"included\" element: ", *v.ID)
				toBeFound--
			}
		// 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", linkCollection.Included[i])
		}
	}
	require.Exactly(s.T(), 0, toBeFound, "Not all required included elements where found.")
}
// validateSomeLinks validates that workItemLink1 and workItemLink2 are in the
// linkCollection and that all resources are included
validateSomeLinks validates that workItemLink1 and workItemLink2 are in the
linkCollection and that all resources are included
// validateSomeLinks validates that workItemLink1 and workItemLink2 are in the // linkCollection and that all resources are included
func (s *workItemLinkSuite) validateSomeLinks(linkCollection *app.WorkItemLinkList, workItemLink1, workItemLink2 *app.WorkItemLinkSingle) {
	require.NotNil(s.T(), linkCollection)
	require.Nil(s.T(), linkCollection.Validate())
	require.NotNil(s.T(), linkCollection.Data)
	require.Condition(s.T(), func() bool {
		return (len(linkCollection.Data) >= 2)
	}, "At least two work item links must exist (%s and %s), but only %d exist.", *workItemLink1.Data.ID, *workItemLink2.Data.ID, len(linkCollection.Data))
	toBeFound := 2
	for i := 0; i < len(linkCollection.Data) && toBeFound > 0; i++ {
		actualLink := *linkCollection.Data[i]
		var expectedLink *app.WorkItemLinkData
		switch *actualLink.ID {
		case *workItemLink1.Data.ID:
			expectedLink = workItemLink1.Data
		case *workItemLink2.Data.ID:
			expectedLink = workItemLink2.Data
		}
		if expectedLink != nil {
			s.T().Log("Found work item link in collection: ", *expectedLink.ID)
			toBeFound--
			require.Equal(s.T(), expectedLink.Type, actualLink.Type)
			require.Equal(s.T(), expectedLink.Relationships.LinkType.Data.ID, actualLink.Relationships.LinkType.Data.ID)
			require.Equal(s.T(), expectedLink.Relationships.LinkType.Data.Type, actualLink.Relationships.LinkType.Data.Type)
			require.Equal(s.T(), expectedLink.Relationships.Source.Data.ID, actualLink.Relationships.Source.Data.ID, "Wrong source ID for the link")
			require.Equal(s.T(), expectedLink.Relationships.Source.Data.Type, actualLink.Relationships.Source.Data.Type, "Wrong source JSONAPI type for the link")
			require.Equal(s.T(), expectedLink.Relationships.Target.Data.ID, actualLink.Relationships.Target.Data.ID, "Wrong target ID for the link")
			require.Equal(s.T(), expectedLink.Relationships.Target.Data.Type, actualLink.Relationships.Target.Data.Type, "Wrong target JSONAPI type for the link")
		}
	}
	require.Exactly(s.T(), 0, toBeFound, "Not all required work item links (%s and %s) where found.", *workItemLink1.Data.ID, *workItemLink2.Data.ID)
	toBeFound = 5 
	for i := 0; i < len(linkCollection.Included) && toBeFound > 0; i++ {
		switch v := linkCollection.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.Space:
			if *v.ID == s.userSpaceID {
				s.T().Log("Found work item link space 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--
			}
		case *app.WorkItem:
			wid, err := strconv.ParseUint(*v.ID, 10, 64)
			require.Nil(s.T(), err)
			if wid == s.bug1ID || wid == s.bug2ID || wid == s.bug3ID {
				s.T().Log("Found work item in \"included\" element: ", *v.ID)
				toBeFound--
			}
		default:
			s.T().Errorf("Object of unknown type included in work item link list response: %T", linkCollection.Included[i])
		}
	}
	require.Exactly(s.T(), 0, toBeFound, "Not all required included elements where found.")
}
func ( s * workItemLinkSuite ) validateSomeLinks ( linkCollection * app . WorkItemLinkList , workItemLink1 , workItemLink2 * app . WorkItemLinkSingle ) { require . NotNil ( s . T ( ) , linkCollection ) require . Nil ( s . T ( ) , linkCollection . Validate ( ) ) require . NotNil ( s . T ( ) , linkCollection . Data ) require . Condition ( s . T ( ) , func ( ) bool { return ( len ( linkCollection . Data ) >= 2 ) } , " " , * workItemLink1 . Data . ID , * workItemLink2 . Data . ID , len ( linkCollection . Data ) ) toBeFound := 2 for i := 0 ; i < len ( linkCollection . Data ) && toBeFound > 0 ; i ++ { actualLink := * linkCollection . Data [ i ] var expectedLink * app . WorkItemLinkData switch * actualLink . ID { case * workItemLink1 . Data . ID : expectedLink = workItemLink1 . Data case * workItemLink2 . Data . ID : expectedLink = workItemLink2 . Data } if expectedLink != nil { s . T ( ) . Log ( " " , * expectedLink . ID ) toBeFound -- require . Equal ( s . T ( ) , expectedLink . Type , actualLink . Type ) require . Equal ( s . T ( ) , expectedLink . Relationships . LinkType . Data . ID , actualLink . Relationships . LinkType . Data . ID ) require . Equal ( s . T ( ) , expectedLink . Relationships . LinkType . Data . Type , actualLink . Relationships . LinkType . Data . Type ) require . Equal ( s . T ( ) , expectedLink . Relationships . Source . Data . ID , actualLink . Relationships . Source . Data . ID , " " ) require . Equal ( s . T ( ) , expectedLink . Relationships . Source . Data . Type , actualLink . Relationships . Source . Data . Type , " " ) require . Equal ( s . T ( ) , expectedLink . Relationships . Target . Data . ID , actualLink . Relationships . Target . Data . ID , " " ) require . Equal ( s . T ( ) , expectedLink . Relationships . Target . Data . Type , actualLink . Relationships . Target . Data . Type , " " ) } } require . Exactly ( s . T ( ) , 0 , toBeFound , " " , * workItemLink1 . Data . ID , * workItemLink2 . Data . ID ) toBeFound = 5 for i := 0 ; i < len ( linkCollection . Included ) && toBeFound > 0 ; i ++ { switch v := linkCollection . Included [ i ] . ( type ) { case * app . WorkItemLinkCategoryData : if * v . ID == s . userLinkCategoryID { s . T ( ) . Log ( " \" \" " , * v . ID ) toBeFound -- } case * app . Space : if * v . ID == s . userSpaceID { s . T ( ) . Log ( " \" \" " , * v . ID ) toBeFound -- } case * app . WorkItemLinkTypeData : if * v . ID == s . bugBlockerLinkTypeID { s . T ( ) . Log ( " \" \" " , * v . ID ) toBeFound -- } case * app . WorkItem : wid , err := strconv . ParseUint ( * v . ID , 10 , 64 ) require . Nil ( s . T ( ) , err ) if wid == s . bug1ID || wid == s . bug2ID || wid == s . bug3ID { s . T ( ) . Log ( " \" \" " , * v . ID ) toBeFound -- } default : s . T ( ) . Errorf ( " " , linkCollection . Included [ i ] ) } } require . Exactly ( s . T ( ) , 0 , toBeFound , " " ) }
validateSomeLinks validates that workItemLink1 and workItemLink2 are in the
linkCollection and that all resources are included
validateSomeLinks validates that workItemLink1 and workItemLink2 are in the linkCollection and that all resources are included
// Check the number of found work item links // Search for the work item types that must exist at minimum // Check JSONAPI "type"" field (should be "workitemlinks") // Check work item link type // Check source type // Check target type // 1 x link category, 1 x link type, 3 x work items // TODO(kwk): Check for WITs (once #559 is merged) // case *app.WorkItemTypeData: