package issues import ( "os" "testing" "github.com/stretchr/testify/assert" ) func Test_readPath_throws_not_found(t *testing.T) { _, err := readPath("doesntexist") assert.Error(t, err, "should never exist!") _, err2 := readPath("tests/asdfasdf") assert.Error(t, err2, "should never exist!") } func Test_readPath_succeeds(t *testing.T) { data, err := readPath("tests/bugs/test-1/description") if err != nil { assert.Fail(t, "function threw error, does tests/bugs/test-1 exist?") } assert.Equal(t, data, "test description\n") } func Test_IsIssue_success(t *testing.T) { val := IsIssue("tests/bugs/test-1") assert.True(t, val) } func Test_IsIssue_fail(t *testing.T) { val := IsIssue("tests/isnotabug") assert.False(t, val) } func Test_IsIssue_returns_false_on_error(t *testing.T) { val := IsIssue("willneverexist") assert.False(t, val) } func Test_IsIssueCollection_success(t *testing.T) { val := IsIssueCollection("tests/bugs/") assert.True(t, val) } func Test_IsIssueCollection_fail(t *testing.T) { val := IsIssueCollection("tests/") assert.False(t, val) } func Test_IsIssueCollection_returns_false_on_error(t *testing.T) { val := IsIssueCollection("willneverexist") assert.False(t, val) } func Test_WriteIssue_fails_on_existing(t *testing.T) { testIssue := Issue{ Title: "", Path: "tests/bugs/test-1", } _, err := WriteIssue(testIssue, false) assert.Error(t, err) } func Test_WriteIssue_fails_on_bad_path(t *testing.T) { testIssue := Issue{ Title: "", Path: "tests/cantexist/test", } _, err := WriteIssue(testIssue, true) assert.Error(t, err) } func Test_WriteIssue_creates_base_path(t *testing.T) { testIssue := Issue{Path: "tests/bugs/test-write1"} // clean up path err := os.RemoveAll(testIssue.Path) assert.Nil(t, err) // run test result, err := WriteIssue(testIssue, false) assert.Nil(t, err) assert.True(t, result) // clean up path err = os.RemoveAll(testIssue.Path) assert.Nil(t, err) } func Test_WriteIssue_creates_fields(t *testing.T) { testIssue := Issue{ Path: "tests/bugs/test-write2", Status: Field{Path: "/status", Data: "test"}, Description: Field{Path: "/description", Data: "test"}, } // clean up path err := os.RemoveAll(testIssue.Path) assert.Nil(t, err) // run test result, err := WriteIssue(testIssue, false) assert.Nil(t, err) assert.True(t, result) // clean up path err = os.RemoveAll(testIssue.Path) assert.Nil(t, err) } func Test_WriteIssue_creates_variadic_fields(t *testing.T) { testIssue := Issue{ Path: "tests/bugs/test-write3", Tags: VariadicField{ Path: "/tags", Fields: []Field{ {Path: "test1"}, {Path: "test2"}, }, }, Blockedby: VariadicField{ Path: "/blockedby", Fields: []Field{ {Path: "test1"}, {Path: "test2"}, }, }, } // clean up path err := os.RemoveAll(testIssue.Path) assert.Nil(t, err) // run test result, err := WriteIssue(testIssue, false) assert.Nil(t, err) assert.True(t, result) // clean up path err = os.RemoveAll(testIssue.Path) assert.Nil(t, err) }