MCPcopy
hub / github.com/ent/ent / TestOrderByNeighborsCount

Function TestOrderByNeighborsCount

dialect/sql/sqlgraph/graph_test.go:914–988  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

912}
913
914func TestOrderByNeighborsCount(t *testing.T) {
915 build := sql.Dialect(dialect.Postgres)
916 t1 := build.Table("users")
917 s := build.Select(t1.C("name")).
918 From(t1)
919 t.Run("O2M", func(t *testing.T) {
920 s := s.Clone()
921 OrderByNeighborsCount(s,
922 NewStep(
923 From("users", "id"),
924 To("pets", "owner_id"),
925 Edge(O2M, false, "pets", "owner_id"),
926 ),
927 sql.OrderDesc(),
928 sql.OrderAs("count_pets"),
929 )
930 query, args := s.Query()
931 require.Empty(t, args)
932 require.Equal(t, `SELECT "users"."name" FROM "users" LEFT JOIN (SELECT "pets"."owner_id", COUNT(*) AS "count_pets" FROM "pets" GROUP BY "pets"."owner_id") AS "t1" ON "users"."id" = "t1"."owner_id" ORDER BY "t1"."count_pets" DESC NULLS LAST`, query)
933 })
934 t.Run("O2M/Selected", func(t *testing.T) {
935 s := s.Clone()
936 OrderByNeighborsCount(s,
937 NewStep(
938 From("users", "id"),
939 To("pets", "owner_id"),
940 Edge(O2M, false, "pets", "owner_id"),
941 ),
942 sql.OrderDesc(),
943 sql.OrderSelectAs("count_pets"),
944 )
945 query, args := s.Query()
946 require.Empty(t, args)
947 require.Equal(t, `SELECT "users"."name", "t1"."count_pets" FROM "users" LEFT JOIN (SELECT "pets"."owner_id", COUNT(*) AS "count_pets" FROM "pets" GROUP BY "pets"."owner_id") AS "t1" ON "users"."id" = "t1"."owner_id" ORDER BY "t1"."count_pets" DESC NULLS LAST`, query)
948 })
949 t.Run("M2M", func(t *testing.T) {
950 s := s.Clone()
951 OrderByNeighborsCount(s,
952 NewStep(
953 From("users", "id"),
954 To("groups", "id"),
955 Edge(M2M, false, "user_groups", "user_id", "group_id"),
956 ),
957 )
958 query, args := s.Query()
959 require.Empty(t, args)
960 require.Equal(t, `SELECT "users"."name" FROM "users" LEFT JOIN (SELECT "user_groups"."user_id", COUNT(*) AS "count_groups" FROM "user_groups" GROUP BY "user_groups"."user_id") AS "t1" ON "users"."id" = "t1"."user_id" ORDER BY "t1"."count_groups" NULLS FIRST`, query)
961 })
962 // Zero or one.
963 t.Run("M2O", func(t *testing.T) {
964 s1, s2 := s.Clone(), s.Clone()
965 OrderByNeighborsCount(s1,
966 NewStep(
967 From("pets", "owner_id"),
968 To("users", "id"),
969 Edge(M2O, true, "pets", "owner_id"),
970 ),
971 )

Callers

nothing calls this directly

Calls 15

DialectFunction · 0.92
OrderDescFunction · 0.92
OrderAsFunction · 0.92
OrderSelectAsFunction · 0.92
OrderByNeighborsCountFunction · 0.85
NewStepFunction · 0.85
RunMethod · 0.80
EmptyMethod · 0.80
FromFunction · 0.70
ToFunction · 0.70
EdgeFunction · 0.70
CMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…