2018-07-18 00:23:58 +03:00
// Copyright 2018 The Gitea Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
package models
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestCreateIssueDependency ( t * testing . T ) {
// Prepare
assert . NoError ( t , PrepareTestDatabase ( ) )
user1 , err := GetUserByID ( 1 )
assert . NoError ( t , err )
issue1 , err := GetIssueByID ( 1 )
assert . NoError ( t , err )
2018-12-13 18:55:43 +03:00
2018-07-18 00:23:58 +03:00
issue2 , err := GetIssueByID ( 2 )
assert . NoError ( t , err )
// Create a dependency and check if it was successful
err = CreateIssueDependency ( user1 , issue1 , issue2 )
assert . NoError ( t , err )
// Do it again to see if it will check if the dependency already exists
err = CreateIssueDependency ( user1 , issue1 , issue2 )
assert . Error ( t , err )
assert . True ( t , IsErrDependencyExists ( err ) )
// Check for circular dependencies
err = CreateIssueDependency ( user1 , issue2 , issue1 )
assert . Error ( t , err )
assert . True ( t , IsErrCircularDependency ( err ) )
_ = 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
2018-12-13 18:55:43 +03:00
err = issue2 . ChangeStatus ( user1 , true )
2018-07-18 00:23:58 +03:00
assert . NoError ( t , err )
left , err = IssueNoDependenciesLeft ( issue1 )
assert . NoError ( t , err )
assert . True ( t , left )
// Test removing the dependency
err = RemoveIssueDependency ( user1 , issue1 , issue2 , DependencyTypeBlockedBy )
assert . NoError ( t , err )
}