github.com/tonkpils/cli@v1.6.2/assignment_test.go (about)

     1  package main
     2  
     3  import (
     4  	"fmt"
     5  	"io/ioutil"
     6  	"os"
     7  	"path/filepath"
     8  	"testing"
     9  
    10  	"github.com/stretchr/testify/assert"
    11  )
    12  
    13  func TestSavingAssignment(t *testing.T) {
    14  	tmpDir, err := ioutil.TempDir("", "")
    15  	assert.NoError(t, err)
    16  
    17  	prepareFixture(t, fmt.Sprintf("%s/ruby/bob/stub.rb", tmpDir), "Existing stub")
    18  
    19  	assignment := Assignment{
    20  		Track: "ruby",
    21  		Slug:  "bob",
    22  		Files: map[string]string{
    23  			"bob_test.rb":     "Tests text",
    24  			"README.md":       "Readme text",
    25  			"path/to/file.rb": "File text",
    26  			"stub.rb":         "New version of stub",
    27  		},
    28  	}
    29  
    30  	err = SaveAssignment(tmpDir, assignment)
    31  	assert.NoError(t, err)
    32  
    33  	readme, err := ioutil.ReadFile(tmpDir + "/ruby/bob/README.md")
    34  	assert.NoError(t, err)
    35  	assert.Equal(t, string(readme), "Readme text")
    36  
    37  	tests, err := ioutil.ReadFile(tmpDir + "/ruby/bob/bob_test.rb")
    38  	assert.NoError(t, err)
    39  	assert.Equal(t, string(tests), "Tests text")
    40  
    41  	fileInDir, err := ioutil.ReadFile(tmpDir + "/ruby/bob/path/to/file.rb")
    42  	assert.NoError(t, err)
    43  	assert.Equal(t, string(fileInDir), "File text")
    44  
    45  	stubFile, err := ioutil.ReadFile(tmpDir + "/ruby/bob/stub.rb")
    46  	assert.NoError(t, err)
    47  	assert.Equal(t, string(stubFile), "Existing stub")
    48  }
    49  
    50  func prepareFixture(t *testing.T, fixture, s string) {
    51  	err := os.MkdirAll(filepath.Dir(fixture), 0755)
    52  	assert.NoError(t, err)
    53  
    54  	err = ioutil.WriteFile(fixture, []byte(s), 0644)
    55  	assert.NoError(t, err)
    56  
    57  	// ensure fixture is set up correctly
    58  	fixtureContents, err := ioutil.ReadFile(fixture)
    59  	assert.NoError(t, err)
    60  	assert.Equal(t, string(fixtureContents), s)
    61  }