github.com/web-platform-tests/wpt.fyi@v0.0.0-20240530210107-70cf978996f1/shared/util_test.go (about)

     1  // +build small
     2  
     3  // Copyright 2018 The WPT Dashboard Project. All rights reserved.
     4  // Use of this source code is governed by a BSD-style license that can be
     5  // found in the LICENSE file.
     6  
     7  package shared
     8  
     9  import (
    10  	"testing"
    11  
    12  	"github.com/stretchr/testify/assert"
    13  )
    14  
    15  const shortSHA = "abcdef0123"
    16  const resultsURLBase = "https://storage.googleapis.com/wptd/" + shortSHA + "/"
    17  const product = "chrome-63.0-linux"
    18  const resultsURL = resultsURLBase + "/" + product + "-summary_v2.json.gz"
    19  
    20  func TestMapStringKeys(t *testing.T) {
    21  	m := map[string]int{"foo": 1}
    22  	keys, err := MapStringKeys(m)
    23  	if err != nil {
    24  		assert.FailNow(t, "Error getting map string keys")
    25  	}
    26  	assert.Equal(t, []string{"foo"}, keys)
    27  
    28  	m2 := map[string]interface{}{"bar": "baz"}
    29  	keys, err = MapStringKeys(m2)
    30  	if err != nil {
    31  		assert.FailNow(t, "Error getting map string keys")
    32  	}
    33  	assert.Equal(t, []string{"bar"}, keys)
    34  }
    35  
    36  func TestMapStringKeys_NotAMap(t *testing.T) {
    37  	one := 1
    38  	keys, err := MapStringKeys(one)
    39  	assert.Nil(t, keys)
    40  	assert.NotNil(t, err)
    41  }
    42  
    43  func TestMapStringKeys_NotAStringKeyedMap(t *testing.T) {
    44  	m := map[int]int{1: 1}
    45  	keys, err := MapStringKeys(m)
    46  	assert.Nil(t, keys)
    47  	assert.NotNil(t, err)
    48  }
    49  
    50  func TestProductChannelToLabel(t *testing.T) {
    51  	assert.Equal(t, StableLabel, ProductChannelToLabel("release"))
    52  	assert.Equal(t, StableLabel, ProductChannelToLabel("stable"))
    53  	assert.Equal(t, BetaLabel, ProductChannelToLabel("beta"))
    54  	assert.Equal(t, ExperimentalLabel, ProductChannelToLabel("dev"))
    55  	assert.Equal(t, ExperimentalLabel, ProductChannelToLabel("nightly"))
    56  	assert.Equal(t, ExperimentalLabel, ProductChannelToLabel("preview"))
    57  	assert.Equal(t, ExperimentalLabel, ProductChannelToLabel("experimental"))
    58  	assert.Equal(t, "", ProductChannelToLabel("not-a-channel"))
    59  }
    60  
    61  func TestGetResultsURL_EmptyFile(t *testing.T) {
    62  	run := TestRun{ResultsURL: resultsURL}
    63  	run.Revision = shortSHA
    64  	checkResult(t, run, "", resultsURL)
    65  }
    66  
    67  func TestGetResultsURL_TestFile(t *testing.T) {
    68  	run := TestRun{ResultsURL: resultsURL}
    69  	run.Revision = shortSHA
    70  	file := "css/vendor-imports/mozilla/mozilla-central-reftests/flexbox/flexbox-root-node-001b.html"
    71  	checkResult(t, run, file, resultsURLBase+product+"/"+file)
    72  }
    73  
    74  func TestGetResultsURL_TrailingSlash(t *testing.T) {
    75  	run := TestRun{ResultsURL: resultsURL}
    76  	run.Revision = shortSHA
    77  	checkResult(t, run, "/", resultsURL)
    78  }
    79  
    80  func checkResult(t *testing.T, testRun TestRun, testFile string, expected string) {
    81  	got := GetResultsURL(testRun, testFile)
    82  	if got != expected {
    83  		t.Errorf("\nGot:\n%q\nExpected:\n%q", got, expected)
    84  	}
    85  }
    86  
    87  func TestGetSharedPath(t *testing.T) {
    88  	assert.Equal(t, "/a/b/c.html", GetSharedPath("/a/b/c.html"))
    89  	assert.Equal(t, "/a/b/", GetSharedPath("/a/b/c.html", "/a/b/d.html"))
    90  	assert.Equal(t, "/", GetSharedPath("/a/b/c.html", "/d/e/f.html"))
    91  	assert.Equal(t, "/a/", GetSharedPath("/a/z.html", "/a/b/x.html", "/a/b/y.html"))
    92  }