github.com/tilt-dev/wat@v0.0.2-0.20180626175338-9349b638e250/cli/analytics/opt_test.go (about)

     1  package analytics_test
     2  
     3  import (
     4  	"os"
     5  	"testing"
     6  
     7  	"github.com/windmilleng/wat/cli/analytics"
     8  	"github.com/windmilleng/wat/os/temp"
     9  )
    10  
    11  func TestSetOptStr(t *testing.T) {
    12  	oldWindmillDir := os.Getenv("WINDMILL_DIR")
    13  	defer os.Setenv("WINDMILL_DIR", oldWindmillDir)
    14  	tmpdir, err := temp.NewDir("TestOpt")
    15  	if err != nil {
    16  		t.Fatalf("Error making temp dir: %v", err)
    17  	}
    18  
    19  	f := setup(t)
    20  
    21  	os.Setenv("WINDMILL_DIR", tmpdir.Path())
    22  
    23  	f.assertOptStatus(analytics.OptDefault)
    24  
    25  	analytics.SetOptStr("opt-in")
    26  	f.assertOptStatus(analytics.OptIn)
    27  
    28  	analytics.SetOptStr("opt-out")
    29  	f.assertOptStatus(analytics.OptOut)
    30  
    31  	analytics.SetOptStr("in")
    32  	f.assertOptStatus(analytics.OptIn)
    33  
    34  	analytics.SetOptStr("out")
    35  	f.assertOptStatus(analytics.OptOut)
    36  
    37  	analytics.SetOptStr("foo")
    38  	f.assertOptStatus(analytics.OptDefault)
    39  }
    40  
    41  func TestSetOpt(t *testing.T) {
    42  	oldWindmillDir := os.Getenv("WINDMILL_DIR")
    43  	defer os.Setenv("WINDMILL_DIR", oldWindmillDir)
    44  	tmpdir, err := temp.NewDir("TestOpt")
    45  	if err != nil {
    46  		t.Fatalf("Error making temp dir: %v", err)
    47  	}
    48  
    49  	f := setup(t)
    50  
    51  	os.Setenv("WINDMILL_DIR", tmpdir.Path())
    52  
    53  	f.assertOptStatus(analytics.OptDefault)
    54  
    55  	analytics.SetOpt(analytics.OptIn)
    56  	f.assertOptStatus(analytics.OptIn)
    57  
    58  	analytics.SetOpt(analytics.OptOut)
    59  	f.assertOptStatus(analytics.OptOut)
    60  
    61  	analytics.SetOpt(99999)
    62  	f.assertOptStatus(analytics.OptDefault)
    63  }
    64  
    65  type fixture struct {
    66  	t *testing.T
    67  }
    68  
    69  func setup(t *testing.T) *fixture {
    70  	return &fixture{t: t}
    71  }
    72  
    73  func (f *fixture) assertOptStatus(expected analytics.Opt) {
    74  	actual, err := analytics.OptStatus()
    75  	if err != nil {
    76  		f.t.Fatal(err)
    77  	}
    78  	if actual != expected {
    79  		f.t.Errorf("got opt status %v, expected %v", actual, expected)
    80  	}
    81  }