func gettask(c *gin.Context) (*todo.Todo, *todolist.TodoList, bool) { u, ok := user.FromContext(c) if !ok { ctl.Render403(c) return nil, nil, false } id, err := strconv.Atoi(c.Param("id")) if err != nil { ctl.Render404(c) return nil, nil, false } td, ok := todo.Find(uint(id)) if !ok { ctl.Render404(c) return nil, nil, false } l, ok := todolist.Find(td.TodoListID) if !ok { ctl.Render500(c) return nil, nil, false } if u.ID != l.UserID { ctl.Render403(c) return nil, nil, false } return td, l, true }
func TestTodoList_Destroy(t *testing.T) { title1 := "First todolist" title2 := "Second todolist" list1 := New(title1) list2 := New(title2) unsaved := New("Unsaved") if list1 == nil || list2 == nil || unsaved == nil { t.FailNow() } if err := list1.Save(); err != nil { t.FailNow() } if err := list2.Save(); err != nil { t.FailNow() } id1 := list1.ID id2 := list2.ID list1.Add("First") list1.Add("Second") todos1 := list1.Todos list1.Destroy() if _, ok := Find(id1); ok { t.Error("Структура уничтоженная с помощью Destroy(), не должна быть найдена в базе") } for _, t1 := range todos1 { if _, ok := todo.Find(t1.ID); ok { t.Error("Destroy() должно уничтожать все todo списка.") break } } if _, ok := Find(id2); !ok { t.Error("Destroy() не должно затрагивать другие структуры в базе и их ID") } if t.Failed() { t.FailNow() } t.Log("Destroy() должно без паники обрабатывать несохраненные структуры") unsaved.Destroy() if _, ok := Find(id1); ok { t.Error("Destroy() на несохраненной структуре не должно затрагивать другие структуры в базе") } if _, ok := Find(id2); !ok { t.Error("Destroy() на несохраненной структуре не должно затрагивать другие структуры в базе") } }