code.gitea.io/gitea@v1.21.7/routers/web/user/home_test.go (about)

     1  // Copyright 2017 The Gitea Authors. All rights reserved.
     2  // SPDX-License-Identifier: MIT
     3  
     4  package user
     5  
     6  import (
     7  	"net/http"
     8  	"testing"
     9  
    10  	"code.gitea.io/gitea/models/db"
    11  	repo_model "code.gitea.io/gitea/models/repo"
    12  	"code.gitea.io/gitea/models/unittest"
    13  	"code.gitea.io/gitea/modules/contexttest"
    14  	"code.gitea.io/gitea/modules/setting"
    15  
    16  	"github.com/stretchr/testify/assert"
    17  )
    18  
    19  func TestArchivedIssues(t *testing.T) {
    20  	// Arrange
    21  	setting.UI.IssuePagingNum = 1
    22  	assert.NoError(t, unittest.LoadFixtures())
    23  
    24  	ctx, _ := contexttest.MockContext(t, "issues")
    25  	contexttest.LoadUser(t, ctx, 30)
    26  	ctx.Req.Form.Set("state", "open")
    27  
    28  	// Assume: User 30 has access to two Repos with Issues, one of the Repos being archived.
    29  	repos, _, _ := repo_model.GetUserRepositories(db.DefaultContext, &repo_model.SearchRepoOptions{Actor: ctx.Doer})
    30  	assert.Len(t, repos, 3)
    31  	IsArchived := make(map[int64]bool)
    32  	NumIssues := make(map[int64]int)
    33  	for _, repo := range repos {
    34  		IsArchived[repo.ID] = repo.IsArchived
    35  		NumIssues[repo.ID] = repo.NumIssues
    36  	}
    37  	assert.False(t, IsArchived[50])
    38  	assert.EqualValues(t, 1, NumIssues[50])
    39  	assert.True(t, IsArchived[51])
    40  	assert.EqualValues(t, 1, NumIssues[51])
    41  
    42  	// Act
    43  	Issues(ctx)
    44  
    45  	// Assert: One Issue (ID 30) from one Repo (ID 50) is retrieved, while nothing from archived Repo 51 is retrieved
    46  	assert.EqualValues(t, http.StatusOK, ctx.Resp.Status())
    47  
    48  	assert.EqualValues(t, map[int64]int64{50: 1}, ctx.Data["Counts"])
    49  	assert.Len(t, ctx.Data["Issues"], 1)
    50  	assert.Len(t, ctx.Data["Repos"], 1)
    51  }
    52  
    53  func TestIssues(t *testing.T) {
    54  	setting.UI.IssuePagingNum = 1
    55  	assert.NoError(t, unittest.LoadFixtures())
    56  
    57  	ctx, _ := contexttest.MockContext(t, "issues")
    58  	contexttest.LoadUser(t, ctx, 2)
    59  	ctx.Req.Form.Set("state", "closed")
    60  	Issues(ctx)
    61  	assert.EqualValues(t, http.StatusOK, ctx.Resp.Status())
    62  
    63  	assert.EqualValues(t, map[int64]int64{1: 1, 2: 1}, ctx.Data["Counts"])
    64  	assert.EqualValues(t, true, ctx.Data["IsShowClosed"])
    65  	assert.Len(t, ctx.Data["Issues"], 1)
    66  	assert.Len(t, ctx.Data["Repos"], 2)
    67  }
    68  
    69  func TestPulls(t *testing.T) {
    70  	setting.UI.IssuePagingNum = 20
    71  	assert.NoError(t, unittest.LoadFixtures())
    72  
    73  	ctx, _ := contexttest.MockContext(t, "pulls")
    74  	contexttest.LoadUser(t, ctx, 2)
    75  	ctx.Req.Form.Set("state", "open")
    76  	Pulls(ctx)
    77  	assert.EqualValues(t, http.StatusOK, ctx.Resp.Status())
    78  
    79  	assert.Len(t, ctx.Data["Issues"], 5)
    80  }
    81  
    82  func TestMilestones(t *testing.T) {
    83  	setting.UI.IssuePagingNum = 1
    84  	assert.NoError(t, unittest.LoadFixtures())
    85  
    86  	ctx, _ := contexttest.MockContext(t, "milestones")
    87  	contexttest.LoadUser(t, ctx, 2)
    88  	ctx.SetParams("sort", "issues")
    89  	ctx.Req.Form.Set("state", "closed")
    90  	ctx.Req.Form.Set("sort", "furthestduedate")
    91  	Milestones(ctx)
    92  	assert.EqualValues(t, http.StatusOK, ctx.Resp.Status())
    93  	assert.EqualValues(t, map[int64]int64{1: 1}, ctx.Data["Counts"])
    94  	assert.EqualValues(t, true, ctx.Data["IsShowClosed"])
    95  	assert.EqualValues(t, "furthestduedate", ctx.Data["SortType"])
    96  	assert.EqualValues(t, 1, ctx.Data["Total"])
    97  	assert.Len(t, ctx.Data["Milestones"], 1)
    98  	assert.Len(t, ctx.Data["Repos"], 2) // both repo 42 and 1 have milestones and both are owned by user 2
    99  }
   100  
   101  func TestMilestonesForSpecificRepo(t *testing.T) {
   102  	setting.UI.IssuePagingNum = 1
   103  	assert.NoError(t, unittest.LoadFixtures())
   104  
   105  	ctx, _ := contexttest.MockContext(t, "milestones")
   106  	contexttest.LoadUser(t, ctx, 2)
   107  	ctx.SetParams("sort", "issues")
   108  	ctx.SetParams("repo", "1")
   109  	ctx.Req.Form.Set("state", "closed")
   110  	ctx.Req.Form.Set("sort", "furthestduedate")
   111  	Milestones(ctx)
   112  	assert.EqualValues(t, http.StatusOK, ctx.Resp.Status())
   113  	assert.EqualValues(t, map[int64]int64{1: 1}, ctx.Data["Counts"])
   114  	assert.EqualValues(t, true, ctx.Data["IsShowClosed"])
   115  	assert.EqualValues(t, "furthestduedate", ctx.Data["SortType"])
   116  	assert.EqualValues(t, 1, ctx.Data["Total"])
   117  	assert.Len(t, ctx.Data["Milestones"], 1)
   118  	assert.Len(t, ctx.Data["Repos"], 2) // both repo 42 and 1 have milestones and both are owned by user 2
   119  }