diff --git a/models/issue_dependency_test.go b/models/issue_dependency_test.go new file mode 100644 index 000000000..5c4271def --- /dev/null +++ b/models/issue_dependency_test.go @@ -0,0 +1,53 @@ +package models + +import ( + "testing" + "github.com/stretchr/testify/assert" +) + +func TestCreateIssueDependency(t *testing.T) { + assert.NoError(t, PrepareTestDatabase()) + + user1, err := GetUserByID(1) + assert.NoError(t, err) + + issue1, err := GetIssueByID(1) + assert.NoError(t, err) + issue2, err := GetIssueByID(2) + assert.NoError(t, err) + + // Create a dependency and check if it was successfull + exists, circular, err := CreateIssueDependency(user1, issue1, issue2) + assert.NoError(t, err) + assert.False(t, exists) + assert.False(t, circular) + + // Do it again to see if it will check if the dependency already exists + exists, _, err = CreateIssueDependency(user1, issue1, issue2) + assert.NoError(t, err) + assert.True(t, exists) + + // Check for circular dependencies + _, circular, err = CreateIssueDependency(user1, issue2, issue1) + assert.NoError(t, err) + assert.True(t, exists) + + _ = AssertExistsAndLoadBean(t, &Comment{Type: CommentTypeAddDependency, PosterID: user1.ID, IssueID: issue1.ID}) + + // Check if dependencies left is correct + left, err := IssueNoDependenciesLeft(issue1) + assert.NoError(t, err) + assert.False(t, left) + + // Close #2 and check again + err = issue2.ChangeStatus(user1, issue2.Repo, true) + assert.NoError(t, err) + + left, err = IssueNoDependenciesLeft(issue1) + assert.NoError(t, err) + assert.True(t, left) + + // Test removing the depencency + err = RemoveIssueDependency(user1, issue1, issue2, DependencyTypeBlockedBy) + assert.NoError(t, err) +}