burndown_test.go 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. package hercules
  2. import (
  3. "testing"
  4. "github.com/stretchr/testify/assert"
  5. "gopkg.in/src-d/go-git.v4/plumbing/object"
  6. "gopkg.in/src-d/go-git.v4/plumbing"
  7. )
  8. func TestBurndownMeta(t *testing.T) {
  9. burndown := BurndownAnalysis{}
  10. assert.Equal(t, burndown.Name(), "Burndown")
  11. assert.Equal(t, len(burndown.Provides()), 0)
  12. required := [...]string{"renamed_changes", "blob_cache", "day", "author"}
  13. for _, name := range required {
  14. assert.Contains(t, burndown.Requires(), name)
  15. }
  16. }
  17. func TestBurndownConsume(t *testing.T) {
  18. burndown := BurndownAnalysis{
  19. Granularity: 30,
  20. Sampling: 30,
  21. PeopleNumber: 1,
  22. }
  23. burndown.Initialize(testRepository)
  24. deps := map[string]interface{}{}
  25. deps["author"] = 0
  26. deps["day"] = 0
  27. cache := map[plumbing.Hash]*object.Blob{}
  28. hash := plumbing.NewHash("291286b4ac41952cbd1389fda66420ec03c1a9fe")
  29. cache[hash], _ = testRepository.BlobObject(hash)
  30. hash = plumbing.NewHash("334cde09da4afcb74f8d2b3e6fd6cce61228b485")
  31. cache[hash], _ = testRepository.BlobObject(hash)
  32. hash = plumbing.NewHash("dc248ba2b22048cc730c571a748e8ffcf7085ab9")
  33. cache[hash], _ = testRepository.BlobObject(hash)
  34. deps["blob_cache"] = cache
  35. changes := make(object.Changes, 2)
  36. treeFrom, _ := testRepository.TreeObject(plumbing.NewHash(
  37. "a1eb2ea76eb7f9bfbde9b243861474421000eb96"))
  38. treeTo, _ := testRepository.TreeObject(plumbing.NewHash(
  39. "4d3f9500c2b9dc10925ad1705926b67f0f9101ca"))
  40. changes[0] = &object.Change{From: object.ChangeEntry{
  41. Name: "analyser.go",
  42. Tree: treeFrom,
  43. TreeEntry: object.TreeEntry{
  44. Name: "analyser.go",
  45. Mode: 0100644,
  46. Hash: plumbing.NewHash("dc248ba2b22048cc730c571a748e8ffcf7085ab9"),
  47. },
  48. }, To: object.ChangeEntry{
  49. Name: "analyser.go",
  50. Tree: treeTo,
  51. TreeEntry: object.TreeEntry{
  52. Name: "analyser.go",
  53. Mode: 0100644,
  54. Hash: plumbing.NewHash("334cde09da4afcb74f8d2b3e6fd6cce61228b485"),
  55. },
  56. }}
  57. changes[1] = &object.Change{From: object.ChangeEntry{}, To: object.ChangeEntry{
  58. Name: ".travis.yml",
  59. Tree: treeTo,
  60. TreeEntry: object.TreeEntry{
  61. Name: ".travis.yml",
  62. Mode: 0100644,
  63. Hash: plumbing.NewHash("291286b4ac41952cbd1389fda66420ec03c1a9fe"),
  64. },
  65. },
  66. }
  67. deps["renamed_changes"] = changes
  68. result, err := burndown.Consume(deps)
  69. assert.Nil(t, result)
  70. assert.Nil(t, err)
  71. assert.Equal(t, burndown.previousDay, 0)
  72. assert.Equal(t, len(burndown.files), 2)
  73. assert.Equal(t, burndown.files[".travis.yml"].Len(), 12)
  74. assert.Equal(t, burndown.files["analyser.go"].Len(), 309)
  75. assert.Equal(t, len(burndown.people), 1)
  76. assert.Equal(t, burndown.people[0][0], int64(12 + 309))
  77. assert.Equal(t, len(burndown.globalStatus), 1)
  78. assert.Equal(t, burndown.globalStatus[0], int64(12 + 309))
  79. assert.Equal(t, len(burndown.globalHistory), 0)
  80. assert.Equal(t, len(burndown.fileHistories), 0)
  81. burndown = BurndownAnalysis{
  82. Granularity: 30,
  83. Sampling: 0,
  84. PeopleNumber: 0,
  85. }
  86. burndown.Initialize(testRepository)
  87. _, err = burndown.Consume(deps)
  88. assert.Nil(t, err)
  89. assert.Equal(t, len(burndown.people), 0)
  90. }