feat(kanban): create To-Do, Doing, Done buckets when creating a new kanban view
This commit is contained in:
parent
b19f336f9c
commit
4d41a1bd9b
|
|
@ -78,7 +78,45 @@ func TestProject_CreateOrUpdate(t *testing.T) {
|
|||
"project_view_id": kanbanView.ID,
|
||||
}, false)
|
||||
})
|
||||
t.Run("nonexistant parent project", func(t *testing.T) {
|
||||
t.Run("kanban view creates To-Do, doing, done buckets", func(t *testing.T) {
|
||||
db.LoadAndAssertFixtures(t)
|
||||
s := db.NewSession()
|
||||
project := Project{
|
||||
Title: "test kanban buckets",
|
||||
Description: "Lorem Ipsum",
|
||||
}
|
||||
err := project.Create(s, usr)
|
||||
require.NoError(t, err)
|
||||
err = s.Commit()
|
||||
require.NoError(t, err)
|
||||
|
||||
// Get the kanban view
|
||||
kanbanView := &ProjectView{}
|
||||
_, err = s.Where("project_id = ? AND view_kind = ?", project.ID, ProjectViewKindKanban).Get(kanbanView)
|
||||
require.NoError(t, err)
|
||||
|
||||
// Check that three buckets were created
|
||||
var bucketCount int64
|
||||
bucketCount, err = s.Where("project_view_id = ?", kanbanView.ID).Count(&Bucket{})
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, int64(3), bucketCount, "Should have created three buckets")
|
||||
|
||||
// Check that the buckets are named correctly
|
||||
var buckets []*Bucket
|
||||
err = s.Where("project_view_id = ?", kanbanView.ID).OrderBy("position ASC").Find(&buckets)
|
||||
require.NoError(t, err)
|
||||
require.Len(t, buckets, 3, "Should have three buckets")
|
||||
assert.Equal(t, "To-Do", buckets[0].Title)
|
||||
assert.Equal(t, "Doing", buckets[1].Title)
|
||||
assert.Equal(t, "Done", buckets[2].Title)
|
||||
|
||||
// Check that Backlog is the default bucket
|
||||
assert.Equal(t, buckets[0].ID, kanbanView.DefaultBucketID, "To-Do should be the default bucket")
|
||||
|
||||
// Check that Done is the done bucket
|
||||
assert.Equal(t, buckets[2].ID, kanbanView.DoneBucketID, "Done should be the done bucket")
|
||||
})
|
||||
t.Run("nonexistent parent", func(t *testing.T) {
|
||||
db.LoadAndAssertFixtures(t)
|
||||
s := db.NewSession()
|
||||
project := Project{
|
||||
|
|
@ -91,7 +129,7 @@ func TestProject_CreateOrUpdate(t *testing.T) {
|
|||
assert.True(t, IsErrProjectDoesNotExist(err))
|
||||
_ = s.Close()
|
||||
})
|
||||
t.Run("nonexistant owner", func(t *testing.T) {
|
||||
t.Run("nonexistent owner", func(t *testing.T) {
|
||||
db.LoadAndAssertFixtures(t)
|
||||
s := db.NewSession()
|
||||
usr := &user.User{ID: 9482385}
|
||||
|
|
@ -156,7 +194,7 @@ func TestProject_CreateOrUpdate(t *testing.T) {
|
|||
"description": project.Description,
|
||||
}, false)
|
||||
})
|
||||
t.Run("nonexistant", func(t *testing.T) {
|
||||
t.Run("nonexistent", func(t *testing.T) {
|
||||
db.LoadAndAssertFixtures(t)
|
||||
s := db.NewSession()
|
||||
project := Project{
|
||||
|
|
@ -393,7 +431,7 @@ func TestProject_ReadAll(t *testing.T) {
|
|||
assert.Equal(t, int64(-2), ls[27].ID)
|
||||
_ = s.Close()
|
||||
})
|
||||
t.Run("projects for nonexistant user", func(t *testing.T) {
|
||||
t.Run("projects for nonexistent user", func(t *testing.T) {
|
||||
db.LoadAndAssertFixtures(t)
|
||||
s := db.NewSession()
|
||||
usr := &user.User{ID: 999999}
|
||||
|
|
|
|||
|
|
@ -298,20 +298,49 @@ func createProjectView(s *xorm.Session, p *ProjectView, a web.Auth, createBacklo
|
|||
return
|
||||
}
|
||||
|
||||
if createBacklogBucket && p.BucketConfigurationMode == BucketConfigurationModeManual {
|
||||
// Create a new first bucket for this project
|
||||
b := &Bucket{
|
||||
if p.ViewKind == ProjectViewKindKanban && createBacklogBucket && p.BucketConfigurationMode == BucketConfigurationModeManual {
|
||||
// Create default buckets for kanban view
|
||||
backlog := &Bucket{
|
||||
ProjectViewID: p.ID,
|
||||
Title: "Backlog",
|
||||
Title: "To-Do",
|
||||
Position: 100,
|
||||
}
|
||||
err = b.Create(s, a)
|
||||
err = backlog.Create(s, a)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
doing := &Bucket{
|
||||
ProjectViewID: p.ID,
|
||||
Title: "Doing",
|
||||
Position: 200,
|
||||
}
|
||||
err = doing.Create(s, a)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
done := &Bucket{
|
||||
ProjectViewID: p.ID,
|
||||
Title: "Done",
|
||||
Position: 300,
|
||||
}
|
||||
err = done.Create(s, a)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
// Set Backlog as default bucket and Done as done bucket
|
||||
p.DefaultBucketID = backlog.ID
|
||||
p.DoneBucketID = done.ID
|
||||
_, err = s.ID(p.ID).Cols("default_bucket_id", "done_bucket_id").Update(p)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
// Move all tasks into the new bucket when the project already has tasks
|
||||
if addExistingTasksToView {
|
||||
err = addTasksToView(s, a, p, b)
|
||||
err = addTasksToView(s, a, p, backlog)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
|
|
|||
|
|
@ -461,7 +461,7 @@ func createProjectWithEverything(s *xorm.Session, project *models.ProjectWithTas
|
|||
buckets := bucketsIn.([]*models.Bucket)
|
||||
var newBacklogBucket *models.Bucket
|
||||
for _, b := range buckets {
|
||||
if b.Title == "Backlog" {
|
||||
if b.Title == "To-Do" {
|
||||
newBacklogBucket = b
|
||||
newBacklogBucket.ProjectID = project.ID
|
||||
break
|
||||
|
|
|
|||
Loading…
Reference in New Issue