model-layer
Version:
150 lines (119 loc) • 4.1 kB
text/typescript
import {Collection, Model, Types} from "../../../lib/index";
import assert from "assert";
describe("Collection.splice", () => {
it("splice(start, deleteCount)", () => {
class User extends Model<User> {
structure() {
return {
name: Types.String
};
}
}
class Users extends Collection<User> {
Model() {
return User;
}
}
const users = new Users([
{name: "Alice"},
{name: "Oliver"},
{name: "Steve"}
]);
assert.strictEqual( users.length, 3 );
assert.strictEqual( users.first().get("name"), "Alice" );
users.splice(0, 1);
assert.strictEqual( users.length, 2 );
assert.strictEqual( users.first().get("name"), "Oliver" );
users.splice(0, 0);
assert.strictEqual( users.length, 2 );
assert.strictEqual( users.first().get("name"), "Oliver" );
assert.strictEqual( users.last().get("name"), "Steve" );
users.splice(1, 1);
assert.strictEqual( users.length, 1 );
assert.strictEqual( users.first().get("name"), "Oliver" );
});
it("splice(start, deleteCount, row)", () => {
class User extends Model<User> {
structure() {
return {
name: Types.String
};
}
}
class Users extends Collection<User> {
Model() {
return User;
}
}
const users = new Users([
{name: "Alice"},
{name: "Steve"}
]);
assert.strictEqual( users.length, 2 );
assert.strictEqual( users.first().get("name"), "Alice" );
assert.strictEqual( users.last().get("name"), "Steve" );
users.splice(1, 0, {
name: "Oliver"
});
assert.strictEqual( users.length, 3 );
assert.strictEqual( users.at(0)!.get("name"), "Alice" );
assert.strictEqual( users.at(1)!.get("name"), "Oliver" );
assert.strictEqual( users.at(2)!.get("name"), "Steve" );
});
it("splice(start, deleteCount, row1, row2)", () => {
class User extends Model<User> {
structure() {
return {
name: Types.String
};
}
}
class Users extends Collection<User> {
Model() {
return User;
}
}
const users = new Users([
{name: "Steve"}
]);
assert.strictEqual( users.length, 1 );
assert.strictEqual( users.first().get("name"), "Steve" );
users.splice(
0, 0,
{name: "Alice"},
{name: "Oliver"}
);
assert.strictEqual( users.length, 3 );
assert.strictEqual( users.at(0)!.get("name"), "Alice" );
assert.strictEqual( users.at(1)!.get("name"), "Oliver" );
assert.strictEqual( users.at(2)!.get("name"), "Steve" );
});
it("splice(start, deleteCount, model)", () => {
class User extends Model<User> {
structure() {
return {
name: Types.String
};
}
}
class Users extends Collection<User> {
Model() {
return User;
}
}
const users = new Users([
{name: "Alice"},
{name: "Steve"}
]);
assert.strictEqual( users.length, 2 );
assert.strictEqual( users.first().get("name"), "Alice" );
assert.strictEqual( users.last().get("name"), "Steve" );
users.splice(1, 0, new User({
name: "Oliver"
}));
assert.strictEqual( users.length, 3 );
assert.strictEqual( users.at(0)!.get("name"), "Alice" );
assert.strictEqual( users.at(1)!.get("name"), "Oliver" );
assert.strictEqual( users.at(2)!.get("name"), "Steve" );
});
});