chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
package issues
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/pocketbase/pocketbase/core"
|
||||
"github.com/pocketbase/pocketbase/tests"
|
||||
)
|
||||
|
||||
// https://github.com/fondoger/pocketbase/issues/35
|
||||
func TestIssue35_DateTimeFieldWithEmptyValue(t *testing.T) {
|
||||
app, _ := tests.NewTestApp()
|
||||
defer app.Cleanup()
|
||||
|
||||
collection := core.NewBaseCollection("test_issue_35")
|
||||
collection.Fields.Add(&core.DateField{
|
||||
Name: "updated",
|
||||
})
|
||||
|
||||
err := app.Save(collection)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
record := core.NewRecord(collection)
|
||||
record.Set("updated", "2025-09-01")
|
||||
err = app.Save(record)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
record = core.NewRecord(collection)
|
||||
err = app.Save(record)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
package issues
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/pocketbase/pocketbase/core"
|
||||
"github.com/pocketbase/pocketbase/tests"
|
||||
"github.com/pocketbase/pocketbase/tools/search"
|
||||
)
|
||||
|
||||
// https://github.com/fondoger/pocketbase/issues/49
|
||||
func TestIssue49_DateTimeFieldComparison(t *testing.T) {
|
||||
app, _ := tests.NewTestApp()
|
||||
defer app.Cleanup()
|
||||
|
||||
// Create a collection with a DateTime field `updated`
|
||||
collection := core.NewBaseCollection("test_issue_49")
|
||||
collection.Fields.Add(&core.DateField{
|
||||
Name: "updated",
|
||||
})
|
||||
err := app.Save(collection)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
resolver := core.NewRecordFieldResolver(app, collection, nil, false)
|
||||
|
||||
// Insert a record with a specific date
|
||||
record := core.NewRecord(collection)
|
||||
record.Set("updated", "2025-09-01")
|
||||
err = app.Save(record)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
record2 := core.NewRecord(collection)
|
||||
record2.Set("updated", "2025-08-01")
|
||||
err = app.Save(record2)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
// Test filtering records where `updated` > "2025-08-31"
|
||||
whereExpr, _ := search.FilterData(`updated > "2025-08-31"`).BuildExpr(resolver)
|
||||
query := app.RecordQuery(collection).Select("COUNT(*) as count")
|
||||
_ = resolver.UpdateQuery(query)
|
||||
|
||||
var count int
|
||||
err = query.AndWhere(whereExpr).Row(&count)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
if count != 1 {
|
||||
t.Fatalf("Expected 1 record, got %d", count)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
#!/usr/bin/env python3
|
||||
# pip install psycopg[binary]
|
||||
|
||||
import psycopg
|
||||
|
||||
dsn = "postgresql://user:pass@127.0.0.1/pb-data"
|
||||
|
||||
|
||||
# cur.execute("PREPARE q AS SELECT $1::int + 1")
|
||||
# cur.execute("EXECUTE q(41)")
|
||||
# print(cur.fetchone()[0]) # 42
|
||||
# cur.execute("DEALLOCATE q")
|
||||
|
||||
def expect_error(callback, substr):
|
||||
try:
|
||||
callback()
|
||||
assert False, "Expected exception, but none was raised"
|
||||
except Exception as e:
|
||||
assert substr in str(e), f"Expected exception message to contain '{substr}', got '{str(e)}'"
|
||||
|
||||
def expect_good(callback):
|
||||
try:
|
||||
callback()
|
||||
except Exception as e:
|
||||
assert False, f"Expected no exception, but got: {str(e)}"
|
||||
|
||||
cur = psycopg.connect(dsn).cursor()
|
||||
expect_good(
|
||||
lambda: cur.execute("PREPARE q AS select $1 is distinct from $2")
|
||||
)
|
||||
|
||||
cur = psycopg.connect(dsn).cursor()
|
||||
expect_good(
|
||||
lambda: cur.execute("PREPARE q AS select null is distinct from null")
|
||||
)
|
||||
|
||||
cur = psycopg.connect(dsn).cursor()
|
||||
expect_error(
|
||||
lambda: cur.execute("PREPARE q AS select null is distinct from $1"),
|
||||
"could not determine data type of parameter $1",
|
||||
)
|
||||
|
||||
|
||||
cur = psycopg.connect(dsn).cursor()
|
||||
expect_good(
|
||||
lambda: cur.execute("PREPARE q AS select 1 as res where $1 = $2")
|
||||
)
|
||||
cur.execute("SELECT 1 AS res WHERE %s = %s", (5, 5))
|
||||
res = cur.fetchone()[0]
|
||||
assert res == 1
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user