issue_test.go 4.9 KB

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