geninq
Version:
A JavaScript version of the Linq library for Generators
82 lines (79 loc) • 2.36 kB
text/typescript
import { It } from "../test-utils";
import "./join";
import "./async";
It(
"Performs a basic join",
(s) =>
s
.join(
[
{ name: "Test Pet 1", owner: "Test1" },
{ name: "Test Pet 2", owner: "Test2" },
{ name: "Test Pet 3", owner: "Paul Popat" },
{ name: "Test Pet 4", owner: "Test1" },
{ name: "Test Pet 5", owner: "Test2" },
{ name: "Test Pet 6", owner: "Paul Popat" },
{ name: "Test Pet 7", owner: "Test1" },
].geninq(),
(i) => i.name,
(i) => i.owner,
(owner, pet) => ({
name: pet.name,
owner: owner.name,
type: owner.type,
})
)
.array(),
[
{ owner: "Test1", type: 2, name: "Test Pet 1" },
{ owner: "Test1", type: 2, name: "Test Pet 4" },
{ owner: "Test1", type: 2, name: "Test Pet 7" },
{ owner: "Test2", type: 1, name: "Test Pet 2" },
{ owner: "Test2", type: 1, name: "Test Pet 5" },
{ owner: "Paul Popat", type: 2, name: "Test Pet 3" },
{ owner: "Paul Popat", type: 2, name: "Test Pet 6" },
],
[
{ name: "Test1", type: 2 },
{ name: "Test2", type: 1 },
{ name: "Paul Popat", type: 2 },
]
);
It(
"Performs a basic join on an array",
(s) =>
s
.join(
[
{ name: "Test Pet 1", owner: "Test1" },
{ name: "Test Pet 2", owner: "Test2" },
{ name: "Test Pet 3", owner: "Paul Popat" },
{ name: "Test Pet 4", owner: "Test1" },
{ name: "Test Pet 5", owner: "Test2" },
{ name: "Test Pet 6", owner: "Paul Popat" },
{ name: "Test Pet 7", owner: "Test1" },
],
(i) => i.name,
(i) => i.owner,
(owner, pet) => ({
name: pet.name,
owner: owner.name,
type: owner.type,
})
)
.array(),
[
{ owner: "Test1", type: 2, name: "Test Pet 1" },
{ owner: "Test1", type: 2, name: "Test Pet 4" },
{ owner: "Test1", type: 2, name: "Test Pet 7" },
{ owner: "Test2", type: 1, name: "Test Pet 2" },
{ owner: "Test2", type: 1, name: "Test Pet 5" },
{ owner: "Paul Popat", type: 2, name: "Test Pet 3" },
{ owner: "Paul Popat", type: 2, name: "Test Pet 6" },
],
[
{ name: "Test1", type: 2 },
{ name: "Test2", type: 1 },
{ name: "Paul Popat", type: 2 },
]
);