package lib import ( "reflect" "testing" ) func TestGetPackageInfo(t *testing.T) { tests := []struct { name string inputName string VersionCountExpected int want PackageResponse wantVersion string wantErr bool }{ { name: "testcafe-browser-provider-puppeteer", inputName: "testcafe-browser-provider-puppeteer", VersionCountExpected: 8, wantVersion: "1.0.1", want: PackageResponse{ Name: "testcafe-browser-provider-puppeteer", Versions: map[string]PackageRelease{ "1.0.1": PackageRelease{ Name: "testcafe-browser-provider-puppeteer", VersionNumber: "1.0.1", ID: "testcafe-browser-provider-puppeteer@1.0.1", Dependencies: map[string]string{ "babel-runtime": "^6.11.6", "puppeteer": "^0.10.2", }, DevDependencies: map[string]string{ "babel-eslint": "^6.1.2", "babel-plugin-add-module-exports": "^0.2.1", "babel-plugin-transform-runtime": "^6.12.0", "babel-preset-es2015": "^6.13.2", "babel-preset-es2015-loose": "^7.0.0", "babel-preset-stage-3": "^6.11.0", "del": "^2.0.0", "gulp": "^3.9.0", "gulp-babel": "^6.1.2", "gulp-eslint": "^3.0.1", "gulp-mocha": "^3.0.1", "node-version": "^1.0.0", "publish-please": "^2.1.4", }, Dist: Distribution{ Sum: "5bd7be2a401aec28fe9bef0b9aa9886bd56fd811", Tarball: "https://registry.npmjs.org/testcafe-browser-provider-puppeteer/-/testcafe-browser-provider-puppeteer-1.0.1.tgz", }, }, }, }, wantErr: false, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { got, err := GetPackageInfo(tt.inputName) if (err != nil) != tt.wantErr { t.Errorf("GetPackageInfo() error = %v, wantErr %v", err, tt.wantErr) return } if len(got.Versions) != tt.VersionCountExpected { t.Errorf("got %d, expected %d", len(got.Versions), tt.VersionCountExpected) } wantVersion := tt.want.Versions[tt.wantVersion] gotVersion, gotOk := got.Versions[tt.wantVersion] if !gotOk { t.Errorf("could not find version in response: %s", tt.wantVersion) } if !reflect.DeepEqual(gotVersion, wantVersion) { t.Errorf("-----\ngot: \t%+v\nwant:\t%+v", gotVersion, wantVersion) } }) } }