github.com/knoebber/dotfile@v1.0.6/local/config_test.go (about)

     1  package local
     2  
     3  import (
     4  	"os"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/assert"
     8  )
     9  
    10  func TestDefaultConfigPath(t *testing.T) {
    11  	path, err := DefaultConfigPath()
    12  	assert.NoError(t, err)
    13  	assert.NotEmpty(t, path)
    14  }
    15  
    16  func TestReadConfig(t *testing.T) {
    17  	_ = os.Mkdir(testDir, 0755)
    18  
    19  	t.Run("error when path is invalid", func(t *testing.T) {
    20  		_, err := ReadConfig("does/not/exist")
    21  		assert.Error(t, err)
    22  	})
    23  
    24  	t.Run("error when json is invalid", func(t *testing.T) {
    25  		_ = os.Remove(testConfigPath)
    26  		if err := os.WriteFile(testConfigPath, []byte("bad json"), 0644); err != nil {
    27  			t.Fatalf("setting up %s: %v", testTrackedFile, err)
    28  		}
    29  
    30  		_, err := ReadConfig(testConfigPath)
    31  		assert.Error(t, err)
    32  	})
    33  
    34  	t.Run("ok", func(t *testing.T) {
    35  		_ = os.Remove(testConfigPath)
    36  		assert.NoError(t, SetConfig(testConfigPath, "username", "test"))
    37  
    38  		config, err := ReadConfig(testConfigPath)
    39  		assert.NoError(t, err)
    40  		assert.NotEmpty(t, config.String())
    41  		assert.Equal(t, config.Username, "test")
    42  	})
    43  }
    44  
    45  func TestSetConfig(t *testing.T) {
    46  	_ = os.Mkdir(testDir, 0755)
    47  
    48  	t.Run("error when path doesn't exist", func(t *testing.T) {
    49  		assert.Error(t, SetConfig("no/path", "", ""))
    50  	})
    51  
    52  	t.Run("error when json is invalid", func(t *testing.T) {
    53  		if err := os.WriteFile(testConfigPath, []byte("bad json"), 0644); err != nil {
    54  			t.Fatalf("setting up %s: %v", testTrackedFile, err)
    55  		}
    56  
    57  		assert.Error(t, SetConfig(testConfigPath, "username", "new"))
    58  	})
    59  
    60  	t.Run("error when key is invalid", func(t *testing.T) {
    61  		_ = os.Remove(testConfigPath)
    62  		assert.Error(t, SetConfig(testConfigPath, "nokey", ""))
    63  	})
    64  }