model-layer
Version:
149 lines (104 loc) • 3.76 kB
text/typescript
import {Collection, Model, Types} from "../../../lib/index";
import assert from "assert";
class Product extends Model<Product> {
structure() {
return {
name: Types.String,
price: Types.Number
};
}
}
describe("Collection.fill", () => {
it("fill(row, start, end)", () => {
class Products extends Collection<Product> {
Model() {
return Product;
}
}
const products = new Products([
{name: "A"},
{name: "B"},
{name: "C"}
]);
assert.strictEqual( products.length, 3 );
products.fill({
name: "X"
}, 0, 3);
assert.strictEqual( products.length, 3 );
assert.strictEqual( products.at(0)!.get("name"), "X" );
assert.strictEqual( products.at(1)!.get("name"), "X" );
assert.strictEqual( products.at(2)!.get("name"), "X" );
assert.ok( products.at(0) !== products.at(1) );
assert.ok( products.at(1) !== products.at(2) );
assert.ok( products.at(2) !== products.at(0) );
products.first().set({name: "Y"});
assert.strictEqual( products.at(0)!.get("name"), "Y" );
assert.strictEqual( products.at(1)!.get("name"), "X" );
assert.strictEqual( products.at(2)!.get("name"), "X" );
});
it("fill(row, start)", () => {
class Products extends Collection<Product> {
Model() {
return Product;
}
}
const products = new Products([
{name: "A"},
{name: "B"},
{name: "C"}
]);
assert.strictEqual( products.length, 3 );
products.fill({
name: "X"
}, 1);
assert.strictEqual( products.length, 3 );
assert.strictEqual( products.at(0)!.get("name"), "A" );
assert.strictEqual( products.at(1)!.get("name"), "X" );
assert.strictEqual( products.at(2)!.get("name"), "X" );
assert.ok( products.at(1) !== products.at(2) );
products.at(1)!.set({name: "Y"});
assert.strictEqual( products.at(0)!.get("name"), "A" );
assert.strictEqual( products.at(1)!.get("name"), "Y" );
assert.strictEqual( products.at(2)!.get("name"), "X" );
});
it("fill(row, -start)", () => {
class Products extends Collection<Product> {
Model() {
return Product;
}
}
const products = new Products([
{name: "A"},
{name: "B"},
{name: "C"}
]);
assert.strictEqual( products.length, 3 );
products.fill({
name: "X"
}, -1);
assert.strictEqual( products.length, 3 );
assert.strictEqual( products.at(0)!.get("name"), "A" );
assert.strictEqual( products.at(1)!.get("name"), "B" );
assert.strictEqual( products.at(2)!.get("name"), "X" );
});
it("fill(row, -start, -end)", () => {
class Products extends Collection<Product> {
Model() {
return Product;
}
}
const products = new Products([
{name: "A"},
{name: "B"},
{name: "C"}
]);
assert.strictEqual( products.length, 3 );
products.fill({
name: "X"
}, -2, -1);
assert.strictEqual( products.length, 3 );
assert.strictEqual( products.at(0)!.get("name"), "A" );
assert.strictEqual( products.at(1)!.get("name"), "X" );
assert.strictEqual( products.at(2)!.get("name"), "C" );
});
});