@girin/framework
Version:
Core modules for Girin: GraphQL server framework
65 lines • 3.44 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
function testFrameworkDatastoreSpec(datastore, TypeA, TypeB) {
return __awaiter(this, void 0, void 0, function* () {
// inserting
const typeAObject = new TypeA();
typeAObject.foo = 'foo';
const typeBObject = new TypeB();
typeBObject.bar = 'bar';
let savedTypeAObject = yield datastore.save(typeAObject);
let savedTypeBObject = yield datastore.save(typeBObject);
if (savedTypeAObject instanceof TypeA && savedTypeBObject instanceof TypeB) { }
else {
throw new Error('Object returned by `save()` method should have same type of its first argument');
}
if (savedTypeAObject.id && savedTypeBObject.id) { }
else {
console.log(savedTypeAObject, savedTypeBObject);
throw new Error('Saved record should have `id` property');
}
// getting by id
let fetchedTypeAObject = yield datastore.get(TypeA, savedTypeAObject.id);
let fetchedTypeBObject = yield datastore.get(TypeB, savedTypeBObject.id);
if (fetchedTypeAObject instanceof TypeA && fetchedTypeBObject instanceof TypeB) { }
else {
throw new Error('Object returned by `getById()` method should be an instance of its first argument');
}
// finding by predicate
const typeAObjectWithFooField = yield datastore.find(TypeA, { foo: 'foo' });
if (typeAObjectWithFooField && typeAObjectWithFooField.foo === 'foo') { }
else {
throw new Error('Datastore should retrieve saved value by get query');
}
if (typeAObjectWithFooField instanceof TypeA) { }
else {
throw new Error('Object returned by `get()` method should be an instance of its first argument');
}
// update
typeAObject.foo = 'foo2';
const updatedTypeAObject = yield datastore.save(typeAObject);
if (updatedTypeAObject.foo === 'foo2') { }
else {
throw new Error(`Saved object should haved updated value "foo2" but got "${updatedTypeAObject.foo}"`);
}
let shouldBeNull = yield datastore.find(TypeA, { foo: 'bar' });
if (shouldBeNull !== null) {
throw new Error(`Datastore should return null when no record matched: but got ${shouldBeNull}`);
}
yield datastore.delete(TypeA, typeAObjectWithFooField.id);
shouldBeNull = yield datastore.get(TypeA, typeAObjectWithFooField.id);
if (shouldBeNull !== null) {
throw new Error('Datastore `deleteById` method should delete the record corresponding to the given id');
}
});
}
exports.testFrameworkDatastoreSpec = testFrameworkDatastoreSpec;
//# sourceMappingURL=FrameworkDatastore.spec.js.map