bug_test.go 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. package buggo
  2. import (
  3. "testing"
  4. "github.com/stretchr/testify/assert"
  5. )
  6. func Test_Bug_New(t *testing.T) {
  7. testBug := Bug{
  8. Title: "test 1",
  9. Description: Field{Data: "test description\n", Path: "/description"},
  10. Status: Field{Data: "open:test\n", Path: "/status"},
  11. Path: "tests/bugs/test-1",
  12. Tags: VariadicField{
  13. Path: "/tags", Fields: []Field{
  14. {Path: "tag1"},
  15. {Path: "tag2"},
  16. },
  17. },
  18. Blockedby: VariadicField{
  19. Path: "/blockedby", Fields: []Field{
  20. {Path: "blocker1"},
  21. {Path: "blocker2"},
  22. },
  23. },
  24. }
  25. bug, _ := Bug.New(Bug{}, testBug.Title, testBug.Status, testBug.Tags, testBug.Blockedby, testBug.Path)
  26. assert.Equal(t, testBug.Title, bug.Title)
  27. assert.Equal(t, testBug.Status, bug.Status)
  28. assert.Equal(t, testBug.Tags, bug.Tags)
  29. assert.Equal(t, testBug.Blockedby, bug.Blockedby)
  30. assert.Equal(t, testBug.Path, bug.Path)
  31. }
  32. func Test_Bug_NewFromPath_err_bad_path(t *testing.T) {
  33. testBug := Bug{}
  34. bug, err := Bug.NewFromPath(testBug, "doesntexist")
  35. assert.Error(t, err)
  36. assert.Equal(t, testBug, bug)
  37. }
  38. func Test_Bug_NewFromPath_success(t *testing.T) {
  39. testBug := Bug{
  40. Title: "test 1",
  41. Description: Field{Data: "test description\n", Path: "/description"},
  42. Status: Field{Data: "open:test\n", Path: "/status"},
  43. Path: "tests/bugs/test-1",
  44. Tags: VariadicField{
  45. Path: "/tags", Fields: []Field{
  46. {Path: "tag1"},
  47. {Path: "tag2"},
  48. },
  49. },
  50. Blockedby: VariadicField{
  51. Path: "/blockedby", Fields: []Field{
  52. {Path: "blocker1"},
  53. {Path: "blocker2"},
  54. },
  55. },
  56. }
  57. bug, err := Bug.NewFromPath(Bug{}, "tests/bugs/test-1")
  58. if err != nil {
  59. assert.Fail(t, "should not err")
  60. }
  61. assert.Equal(t, testBug.Title, bug.Title)
  62. assert.Equal(t, testBug.Description, bug.Description)
  63. assert.Equal(t, testBug.Status, bug.Status)
  64. assert.Equal(t, testBug.Tags, bug.Tags)
  65. assert.Equal(t, testBug.Blockedby, bug.Blockedby)
  66. assert.Equal(t, testBug.Path, bug.Path)
  67. }
  68. func Test_Field_New(t *testing.T) {
  69. var testF = Field{Path: "test1", Data: "test1"}
  70. f := Field.New(Field{}, testF.Path, testF.Data)
  71. assert.Equal(t, testF, f)
  72. }
  73. func Test_VariadicField_New(t *testing.T) {
  74. var testVF = VariadicField{Path: "testing", Fields: []Field{{Path: "test"}}}
  75. vf := VariadicField.New(VariadicField{}, testVF.Fields, testVF.Path)
  76. assert.Equal(t, testVF, vf)
  77. }
  78. func Test_VariadicField_NewFromPath_fails(t *testing.T) {
  79. _, err := VariadicField.NewFromPath(VariadicField{Path: "/tags"}, "dosentexist")
  80. assert.Error(t, err)
  81. }
  82. func Test_VariadicField_NewFromPath_no_tags_dir(t *testing.T) {
  83. _, err := VariadicField.NewFromPath(VariadicField{Path: "/tags"}, "tests/bugs/test-2")
  84. assert.Error(t, err, "should not find tags")
  85. }
  86. func Test_VariadicField_NewFromPath_no_tags_in_dir(t *testing.T) {
  87. vf, err := VariadicField.NewFromPath(VariadicField{Path: "/tags"}, "tests/bugs/test-3")
  88. if err != nil {
  89. assert.Fail(t, "should not throw error")
  90. }
  91. assert.Equal(t, len(vf.Fields), 0)
  92. }
  93. func Test_VariadicField_NewFromPath_skip_dotfile(t *testing.T) {
  94. vf, err := VariadicField.NewFromPath(VariadicField{Path: "/tags"}, "tests/bugs/test-4")
  95. if err != nil {
  96. assert.Fail(t, "should not throw error")
  97. }
  98. assert.Equal(t, len(vf.Fields), 2)
  99. }
  100. func Test_VariadicField_NewFromPath_success(t *testing.T) {
  101. vf, err := VariadicField.NewFromPath(VariadicField{Path: "/tags"}, "tests/bugs/test-1")
  102. if err != nil {
  103. assert.Fail(t, "should not throw error")
  104. }
  105. assert.Equal(t, len(vf.Fields), 2)
  106. }
  107. func Test_parsePathToHuman(t *testing.T) {
  108. testPath := "test-dir/test-1--content"
  109. testParse := "test 1-content"
  110. parseResult := parsePathToHuman(testPath)
  111. assert.Equal(t, testParse, parseResult)
  112. }
  113. func Test_parseHumanToPath(t *testing.T) {
  114. testHuman := "test 1-content"
  115. testParse := "test-1--content"
  116. parseResult := parseHumanToPath(testHuman)
  117. assert.Equal(t, testParse, parseResult)
  118. }