mirror of
https://github.com/pocketbase/pocketbase.git
synced 2025-03-21 06:36:27 +02:00
synced with master
This commit is contained in:
commit
c77467a6a2
@ -5,6 +5,11 @@
|
|||||||
- Fixed typo in `Record.WithUnkownData()` -> `Record.WithUnknownData()`.
|
- Fixed typo in `Record.WithUnkownData()` -> `Record.WithUnknownData()`.
|
||||||
|
|
||||||
|
|
||||||
|
## v0.14.5
|
||||||
|
|
||||||
|
- Added checks for `nil` hooks in `forms.RecordUpsert` when used with custom `Dao` ([#2277](https://github.com/pocketbase/pocketbase/issues/2277)).
|
||||||
|
|
||||||
|
|
||||||
## v0.14.4
|
## v0.14.4
|
||||||
|
|
||||||
- Fixed concurrent map write pannic on `list.ExistInSliceWithRegex()` cache ([#2272](https://github.com/pocketbase/pocketbase/issues/2272)).
|
- Fixed concurrent map write pannic on `list.ExistInSliceWithRegex()` cache ([#2272](https://github.com/pocketbase/pocketbase/issues/2272)).
|
||||||
|
@ -749,8 +749,10 @@ func (form *RecordUpsert) Submit(interceptors ...InterceptorFunc[*models.Record]
|
|||||||
// but BEFORE the actual record db persistence
|
// but BEFORE the actual record db persistence
|
||||||
// ---
|
// ---
|
||||||
dao.BeforeCreateFunc = func(eventDao *daos.Dao, m models.Model) error {
|
dao.BeforeCreateFunc = func(eventDao *daos.Dao, m models.Model) error {
|
||||||
if err := form.dao.BeforeCreateFunc(eventDao, m); err != nil {
|
if form.dao.BeforeCreateFunc != nil {
|
||||||
return err
|
if err := form.dao.BeforeCreateFunc(eventDao, m); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if m.GetId() == form.record.GetId() {
|
if m.GetId() == form.record.GetId() {
|
||||||
@ -761,8 +763,10 @@ func (form *RecordUpsert) Submit(interceptors ...InterceptorFunc[*models.Record]
|
|||||||
}
|
}
|
||||||
|
|
||||||
dao.BeforeUpdateFunc = func(eventDao *daos.Dao, m models.Model) error {
|
dao.BeforeUpdateFunc = func(eventDao *daos.Dao, m models.Model) error {
|
||||||
if err := form.dao.BeforeUpdateFunc(eventDao, m); err != nil {
|
if form.dao.BeforeUpdateFunc != nil {
|
||||||
return err
|
if err := form.dao.BeforeUpdateFunc(eventDao, m); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if m.GetId() == form.record.GetId() {
|
if m.GetId() == form.record.GetId() {
|
||||||
|
@ -4,6 +4,7 @@ import (
|
|||||||
"bytes"
|
"bytes"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"errors"
|
"errors"
|
||||||
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/http/httptest"
|
"net/http/httptest"
|
||||||
"os"
|
"os"
|
||||||
@ -1047,41 +1048,54 @@ func TestRecordUpsertUploadFailure(t *testing.T) {
|
|||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// create with invalid file
|
testDaos := []*daos.Dao{
|
||||||
{
|
app.Dao(), // with hooks
|
||||||
new := models.NewRecord(collection)
|
daos.New(app.Dao().DB()), // without hooks
|
||||||
new.Id = "123456789012341"
|
|
||||||
|
|
||||||
form := forms.NewRecordUpsert(app, new)
|
|
||||||
form.LoadData(map[string]any{"title": "new_test"})
|
|
||||||
form.AddFiles("files", &filesystem.File{Reader: &filesystem.PathReader{Path: "/tmp/__missing__"}})
|
|
||||||
|
|
||||||
if err := form.Submit(); err == nil {
|
|
||||||
t.Fatal("Expected error, got nil")
|
|
||||||
}
|
|
||||||
|
|
||||||
if r, err := app.Dao().FindRecordById(collection.Id, new.Id); err == nil {
|
|
||||||
t.Fatalf("Expected the inserted record to be deleted, found \n%v", r.PublicExport())
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// update with invalid file
|
for i, dao := range testDaos {
|
||||||
{
|
// create with invalid file
|
||||||
record, err := app.Dao().FindRecordById(collection.Id, "1tmknxy2868d869")
|
{
|
||||||
if err != nil {
|
prefix := fmt.Sprintf("%d-create", i)
|
||||||
t.Fatal(err)
|
|
||||||
|
new := models.NewRecord(collection)
|
||||||
|
new.Id = "123456789012341"
|
||||||
|
|
||||||
|
form := forms.NewRecordUpsert(app, new)
|
||||||
|
form.SetDao(dao)
|
||||||
|
form.LoadData(map[string]any{"title": "new_test"})
|
||||||
|
form.AddFiles("files", &filesystem.File{Reader: &filesystem.PathReader{Path: "/tmp/__missing__"}})
|
||||||
|
|
||||||
|
if err := form.Submit(); err == nil {
|
||||||
|
t.Fatalf("[%s] Expected error, got nil", prefix)
|
||||||
|
}
|
||||||
|
|
||||||
|
if r, err := app.Dao().FindRecordById(collection.Id, new.Id); err == nil {
|
||||||
|
t.Fatalf("[%s] Expected the inserted record to be deleted, found \n%v", prefix, r.PublicExport())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
form := forms.NewRecordUpsert(app, record)
|
// update with invalid file
|
||||||
form.LoadData(map[string]any{"title": "update_test"})
|
{
|
||||||
form.AddFiles("files", &filesystem.File{Reader: &filesystem.PathReader{Path: "/tmp/__missing__"}})
|
prefix := fmt.Sprintf("%d-update", i)
|
||||||
|
|
||||||
if err := form.Submit(); err == nil {
|
record, err := app.Dao().FindRecordById(collection.Id, "1tmknxy2868d869")
|
||||||
t.Fatal("Expected error, got nil")
|
if err != nil {
|
||||||
}
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
if r, _ := app.Dao().FindRecordById(collection.Id, record.Id); r == nil || r.GetString("title") == "update_test" {
|
form := forms.NewRecordUpsert(app, record)
|
||||||
t.Fatalf("Expected the record changes to be reverted, got \n%v", r.PublicExport())
|
form.SetDao(dao)
|
||||||
|
form.LoadData(map[string]any{"title": "update_test"})
|
||||||
|
form.AddFiles("files", &filesystem.File{Reader: &filesystem.PathReader{Path: "/tmp/__missing__"}})
|
||||||
|
|
||||||
|
if err := form.Submit(); err == nil {
|
||||||
|
t.Fatalf("[%s] Expected error, got nil", prefix)
|
||||||
|
}
|
||||||
|
|
||||||
|
if r, _ := app.Dao().FindRecordById(collection.Id, record.Id); r == nil || r.GetString("title") == "update_test" {
|
||||||
|
t.Fatalf("[%s] Expected the record changes to be reverted, got \n%v", prefix, r.PublicExport())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user