2020-01-29 09:36:32 +03:00
// Copyright 2020 The Gitea Authors. All rights reserved.
2022-11-27 21:20:29 +03:00
// SPDX-License-Identifier: MIT
2020-01-29 09:36:32 +03:00
2022-09-02 22:18:23 +03:00
package integration
2020-01-29 09:36:32 +03:00
import (
"fmt"
"net/http"
"testing"
2022-04-08 12:11:15 +03:00
issues_model "code.gitea.io/gitea/models/issues"
2021-12-10 04:27:50 +03:00
repo_model "code.gitea.io/gitea/models/repo"
2021-11-16 11:53:21 +03:00
"code.gitea.io/gitea/models/unittest"
2021-11-24 12:49:20 +03:00
user_model "code.gitea.io/gitea/models/user"
2020-01-29 09:36:32 +03:00
"code.gitea.io/gitea/modules/structs"
2022-09-02 22:18:23 +03:00
"code.gitea.io/gitea/tests"
2020-01-29 09:36:32 +03:00
"github.com/stretchr/testify/assert"
)
func TestAPIIssuesMilestone ( t * testing . T ) {
2022-09-02 22:18:23 +03:00
defer tests . PrepareTestEnv ( t ) ( )
2020-01-29 09:36:32 +03:00
2022-08-16 05:22:25 +03:00
milestone := unittest . AssertExistsAndLoadBean ( t , & issues_model . Milestone { ID : 1 } )
repo := unittest . AssertExistsAndLoadBean ( t , & repo_model . Repository { ID : milestone . RepoID } )
owner := unittest . AssertExistsAndLoadBean ( t , & user_model . User { ID : repo . OwnerID } )
2020-01-29 09:36:32 +03:00
assert . Equal ( t , int64 ( 1 ) , int64 ( milestone . NumIssues ) )
assert . Equal ( t , structs . StateOpen , milestone . State ( ) )
session := loginUser ( t , owner . Name )
token := getTokenForLoggedInUser ( t , session )
// update values of issue
milestoneState := "closed"
urlStr := fmt . Sprintf ( "/api/v1/repos/%s/%s/milestones/%d?token=%s" , owner . Name , repo . Name , milestone . ID , token )
req := NewRequestWithJSON ( t , "PATCH" , urlStr , structs . EditMilestoneOption {
State : & milestoneState ,
} )
2022-12-02 06:39:42 +03:00
resp := MakeRequest ( t , req , http . StatusOK )
2020-01-29 09:36:32 +03:00
var apiMilestone structs . Milestone
DecodeJSON ( t , resp , & apiMilestone )
assert . EqualValues ( t , "closed" , apiMilestone . State )
req = NewRequest ( t , "GET" , urlStr )
2022-12-02 06:39:42 +03:00
resp = MakeRequest ( t , req , http . StatusOK )
2020-01-29 09:36:32 +03:00
var apiMilestone2 structs . Milestone
DecodeJSON ( t , resp , & apiMilestone2 )
assert . EqualValues ( t , "closed" , apiMilestone2 . State )
2020-06-10 01:01:36 +03:00
req = NewRequestWithJSON ( t , "POST" , fmt . Sprintf ( "/api/v1/repos/%s/%s/milestones?token=%s" , owner . Name , repo . Name , token ) , structs . CreateMilestoneOption {
Title : "wow" ,
Description : "closed one" ,
State : "closed" ,
} )
2022-12-02 06:39:42 +03:00
resp = MakeRequest ( t , req , http . StatusCreated )
2020-06-10 01:01:36 +03:00
DecodeJSON ( t , resp , & apiMilestone )
assert . Equal ( t , "wow" , apiMilestone . Title )
assert . Equal ( t , structs . StateClosed , apiMilestone . State )
2020-07-28 14:30:40 +03:00
var apiMilestones [ ] structs . Milestone
req = NewRequest ( t , "GET" , fmt . Sprintf ( "/api/v1/repos/%s/%s/milestones?state=%s&token=%s" , owner . Name , repo . Name , "all" , token ) )
2022-12-02 06:39:42 +03:00
resp = MakeRequest ( t , req , http . StatusOK )
2020-07-28 14:30:40 +03:00
DecodeJSON ( t , resp , & apiMilestones )
assert . Len ( t , apiMilestones , 4 )
2020-09-14 14:48:03 +03:00
req = NewRequest ( t , "GET" , fmt . Sprintf ( "/api/v1/repos/%s/%s/milestones/%s?token=%s" , owner . Name , repo . Name , apiMilestones [ 2 ] . Title , token ) )
2022-12-02 06:39:42 +03:00
resp = MakeRequest ( t , req , http . StatusOK )
2020-09-14 14:48:03 +03:00
DecodeJSON ( t , resp , & apiMilestone )
assert . EqualValues ( t , apiMilestones [ 2 ] , apiMilestone )
2020-07-28 14:30:40 +03:00
req = NewRequest ( t , "GET" , fmt . Sprintf ( "/api/v1/repos/%s/%s/milestones?state=%s&name=%s&token=%s" , owner . Name , repo . Name , "all" , "milestone2" , token ) )
2022-12-02 06:39:42 +03:00
resp = MakeRequest ( t , req , http . StatusOK )
2020-07-28 14:30:40 +03:00
DecodeJSON ( t , resp , & apiMilestones )
assert . Len ( t , apiMilestones , 1 )
assert . Equal ( t , int64 ( 2 ) , apiMilestones [ 0 ] . ID )
2020-06-10 01:01:36 +03:00
req = NewRequest ( t , "DELETE" , fmt . Sprintf ( "/api/v1/repos/%s/%s/milestones/%d?token=%s" , owner . Name , repo . Name , apiMilestone . ID , token ) )
2022-12-02 06:39:42 +03:00
MakeRequest ( t , req , http . StatusNoContent )
2020-01-29 09:36:32 +03:00
}