67 lines
2 KiB
Go
67 lines
2 KiB
Go
package postgres
|
|
|
|
import (
|
|
"github.com/go-jet/jet/v2/internal/testutils"
|
|
"github.com/go-jet/jet/v2/tests/.gentestdata/jetdb/northwind/model"
|
|
. "github.com/go-jet/jet/v2/tests/.gentestdata/jetdb/northwind/table"
|
|
"github.com/stretchr/testify/require"
|
|
"testing"
|
|
)
|
|
|
|
func TestNorthwindJoinEverything(t *testing.T) {
|
|
|
|
stmt := Customers.
|
|
LEFT_JOIN(CustomerCustomerDemo, Customers.CustomerID.EQ(CustomerCustomerDemo.CustomerID)).
|
|
LEFT_JOIN(CustomerDemographics, CustomerCustomerDemo.CustomerTypeID.EQ(CustomerDemographics.CustomerTypeID)).
|
|
LEFT_JOIN(Orders, Orders.CustomerID.EQ(Customers.CustomerID)).
|
|
LEFT_JOIN(Shippers, Orders.ShipVia.EQ(Shippers.ShipperID)).
|
|
LEFT_JOIN(OrderDetails, Orders.OrderID.EQ(OrderDetails.OrderID)).
|
|
LEFT_JOIN(Products, OrderDetails.ProductID.EQ(Products.ProductID)).
|
|
LEFT_JOIN(Categories, Products.CategoryID.EQ(Categories.CategoryID)).
|
|
LEFT_JOIN(Suppliers, Products.SupplierID.EQ(Suppliers.SupplierID)).
|
|
LEFT_JOIN(Employees, Orders.EmployeeID.EQ(Employees.EmployeeID)).
|
|
LEFT_JOIN(EmployeeTerritories, EmployeeTerritories.EmployeeID.EQ(Employees.EmployeeID)).
|
|
LEFT_JOIN(Territories, EmployeeTerritories.TerritoryID.EQ(Territories.TerritoryID)).
|
|
LEFT_JOIN(Region, Territories.RegionID.EQ(Region.RegionID)).
|
|
SELECT(
|
|
Customers.AllColumns,
|
|
CustomerDemographics.AllColumns,
|
|
Orders.AllColumns,
|
|
Shippers.AllColumns,
|
|
OrderDetails.AllColumns,
|
|
Products.AllColumns,
|
|
Categories.AllColumns,
|
|
Suppliers.AllColumns,
|
|
).
|
|
ORDER_BY(Customers.CustomerID, Orders.OrderID, Products.ProductID)
|
|
|
|
var dest []struct {
|
|
model.Customers
|
|
|
|
Demographics model.CustomerDemographics
|
|
|
|
Orders []struct {
|
|
model.Orders
|
|
|
|
Shipper model.Shippers
|
|
|
|
Details struct {
|
|
model.OrderDetails
|
|
|
|
Products []struct {
|
|
model.Products
|
|
|
|
Category model.Categories
|
|
Supplier model.Suppliers
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
err := stmt.Query(db, &dest)
|
|
require.NoError(t, err)
|
|
|
|
//jsonSave("./testdata/northwind-all.json", dest)
|
|
testutils.AssertJSONFile(t, dest, "./testdata/results/postgres/northwind-all.json")
|
|
requireLogged(t, stmt)
|
|
}
|