gitea源码

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. // Copyright 2018 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package issues_test
  4. import (
  5. "testing"
  6. issues_model "code.gitea.io/gitea/models/issues"
  7. "code.gitea.io/gitea/models/unittest"
  8. user_model "code.gitea.io/gitea/models/user"
  9. "github.com/stretchr/testify/assert"
  10. )
  11. func TestCreateIssueDependency(t *testing.T) {
  12. // Prepare
  13. assert.NoError(t, unittest.PrepareTestDatabase())
  14. user1, err := user_model.GetUserByID(t.Context(), 1)
  15. assert.NoError(t, err)
  16. issue1, err := issues_model.GetIssueByID(t.Context(), 1)
  17. assert.NoError(t, err)
  18. issue2, err := issues_model.GetIssueByID(t.Context(), 2)
  19. assert.NoError(t, err)
  20. // Create a dependency and check if it was successful
  21. err = issues_model.CreateIssueDependency(t.Context(), user1, issue1, issue2)
  22. assert.NoError(t, err)
  23. // Do it again to see if it will check if the dependency already exists
  24. err = issues_model.CreateIssueDependency(t.Context(), user1, issue1, issue2)
  25. assert.Error(t, err)
  26. assert.True(t, issues_model.IsErrDependencyExists(err))
  27. // Check for circular dependencies
  28. err = issues_model.CreateIssueDependency(t.Context(), user1, issue2, issue1)
  29. assert.Error(t, err)
  30. assert.True(t, issues_model.IsErrCircularDependency(err))
  31. _ = unittest.AssertExistsAndLoadBean(t, &issues_model.Comment{Type: issues_model.CommentTypeAddDependency, PosterID: user1.ID, IssueID: issue1.ID})
  32. // Check if dependencies left is correct
  33. left, err := issues_model.IssueNoDependenciesLeft(t.Context(), issue1)
  34. assert.NoError(t, err)
  35. assert.False(t, left)
  36. // Close #2 and check again
  37. _, err = issues_model.CloseIssue(t.Context(), issue2, user1)
  38. assert.NoError(t, err)
  39. issue2Closed, err := issues_model.GetIssueByID(t.Context(), 2)
  40. assert.NoError(t, err)
  41. assert.True(t, issue2Closed.IsClosed)
  42. left, err = issues_model.IssueNoDependenciesLeft(t.Context(), issue1)
  43. assert.NoError(t, err)
  44. assert.True(t, left)
  45. // Test removing the dependency
  46. err = issues_model.RemoveIssueDependency(t.Context(), user1, issue1, issue2, issues_model.DependencyTypeBlockedBy)
  47. assert.NoError(t, err)
  48. _, err = issues_model.ReopenIssue(t.Context(), issue2, user1)
  49. assert.NoError(t, err)
  50. issue2Reopened, err := issues_model.GetIssueByID(t.Context(), 2)
  51. assert.NoError(t, err)
  52. assert.False(t, issue2Reopened.IsClosed)
  53. }