github.com/joey-fossa/fossa-cli@v0.7.34-0.20190708193710-569f1e8679f0/buildtools/dotnet/project_json_test.go (about)

     1  package dotnet_test
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/assert"
     8  
     9  	"github.com/fossas/fossa-cli/buildtools/dotnet"
    10  	"github.com/fossas/fossa-cli/pkg"
    11  )
    12  
    13  func TestProjectJSON(t *testing.T) {
    14  	testGraph, err := dotnet.ProjectGraph("testdata/project.json")
    15  	assert.NoError(t, err)
    16  
    17  	assert.Len(t, testGraph.Direct, 3)
    18  	assertImport(t, testGraph.Direct, "one", "1.0.0")
    19  	assertImport(t, testGraph.Direct, "two", "2.0.0")
    20  	assertImport(t, testGraph.Direct, "three", "3.0.0")
    21  
    22  	assert.Len(t, testGraph.Transitive, 3)
    23  	depOne := findPackage(testGraph.Transitive, "one", "1.0.0")
    24  	assert.NotEmpty(t, depOne)
    25  	assert.Empty(t, depOne.Imports)
    26  	depTwo := findPackage(testGraph.Transitive, "two", "2.0.0")
    27  	assert.NotEmpty(t, depTwo)
    28  	assert.Empty(t, depTwo.Imports)
    29  	depThree := findPackage(testGraph.Transitive, "three", "3.0.0")
    30  	assert.NotEmpty(t, depThree)
    31  	assert.Empty(t, depThree.Imports)
    32  }
    33  
    34  func findPackage(packages map[pkg.ID]pkg.Package, name, revision string) pkg.Package {
    35  	for id := range packages {
    36  		if id.Name == name && id.Revision == revision {
    37  			return packages[id]
    38  		}
    39  	}
    40  	return pkg.Package{}
    41  }
    42  
    43  func assertImport(t *testing.T, dependencies []pkg.Import, name, version string) {
    44  	for _, dependency := range dependencies {
    45  		if dependency.Resolved.Name == name && dependency.Resolved.Revision == version {
    46  			return
    47  		}
    48  	}
    49  	assert.Fail(t, fmt.Sprintf("Imports list: %+v\nDoes not contain\nDependency: %s", dependencies, name))
    50  }