github.com/exercism/configlet@v3.9.3-0.20200318193232-c70be6269e71+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  }