github.com/exercism/v2-configlet@v3.9.2+incompatible/track/track_test.go (about) 1 package track 2 3 import ( 4 "os" 5 "testing" 6 7 "github.com/stretchr/testify/assert" 8 ) 9 10 func TestNewTrack(t *testing.T) { 11 track, err := New("../fixtures/numbers") 12 assert.NoError(t, err) 13 14 assert.Equal(t, "numbers", track.ID) 15 assert.Equal(t, "Numbers", track.Config.Language) 16 17 slugs := map[string]bool{ 18 "zero": false, 19 "one": false, 20 "two": false, 21 "three": false, 22 } 23 24 assert.Equal(t, len(slugs), len(track.Exercises)) 25 26 for _, exercise := range track.Exercises { 27 slugs[exercise.Slug] = true 28 } 29 30 for slug, ok := range slugs { 31 if !ok { 32 t.Errorf("Expected to find exercise %s", slug) 33 } 34 } 35 } 36 37 func TestTrackID(t *testing.T) { 38 39 tests := []struct { 40 root string 41 path string 42 expected string 43 }{ 44 {"../fixtures", "numbers", "numbers"}, 45 {"../fixtures/numbers", ".", "numbers"}, 46 } 47 48 cwd, _ := os.Getwd() 49 defer func() { os.Chdir(cwd) }() 50 for _, test := range tests { 51 err := os.Chdir(test.root) 52 assert.NoError(t, err) 53 54 track, err := New(test.path) 55 assert.NoError(t, err) 56 57 assert.Equal(t, test.expected, track.ID) 58 59 // reset working directory for each test 60 os.Chdir(cwd) 61 } 62 } 63 64 func TestInvalidExerciseName(t *testing.T) { 65 track, err := New("../fixtures/unsupported-exercise-names") 66 assert.NoError(t, err) 67 68 assert.Equal(t, "unsupported-exercise-names", track.ID) 69 70 assert.Equal(t, 0, len(track.Exercises), "Expected to find no exercises.") 71 }