本文整理匯總了TypeScript中@orbit/data.KeyMap類的典型用法代碼示例。如果您正苦於以下問題:TypeScript KeyMap類的具體用法?TypeScript KeyMap怎麽用?TypeScript KeyMap使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。
在下文中一共展示了KeyMap類的6個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的TypeScript代碼示例。
示例1: test
test('#serializeDocument - can serialize a resource with attributes and a null has-one relationship', function(assert) {
keyMap.pushRecord({ type: 'planet', id: 'p0', keys: { remoteId: 'p1-id' } });
keyMap.pushRecord({ type: 'moon', id: 'm1', keys: { remoteId: 'm1-id' } });
assert.deepEqual(
serializer.serializeDocument(
{
type: 'moon',
id: 'm1',
attributes: {
name: 'Io'
},
relationships: {
planet: {
data: null
}
}
}
),
{
data: {
type: 'moons',
id: 'm1-id',
attributes: {
name: 'Io'
},
relationships: {
planet: { data: null }
}
}
},
'serialized document matches'
);
});
示例2: test
test('#recordId returns a matching orbit id given a resource id', function(assert) {
keyMap.pushRecord({ type: 'planet', id: '1', keys: { remoteId: 'a' } });
keyMap.pushRecord({ type: 'planet', id: '2', keys: { remoteId: 'b' } });
assert.equal(serializer.recordId('planet', 'a'), '1');
assert.equal(serializer.recordId('planet', 'b'), '2');
});
示例3: test
test('#pull - a specific record', async function(assert) {
assert.expect(3);
let earth: Record = {
type: 'planet',
id: 'earth',
attributes: {
name: 'Earth',
classification: 'terrestrial'
}
};
let jupiter: Record = {
type: 'planet',
id: 'jupiter',
keys: {
remoteId: 'p2'
},
attributes: {
name: 'Jupiter',
classification: 'gas giant'
}
};
let io: Record = {
type: 'moon',
id: 'io',
attributes: {
name: 'Io'
}
};
await source.push(t => [
t.addRecord(earth),
t.addRecord(jupiter),
t.addRecord(io)
]);
// reset keyMap to verify that pulling records also adds keys
keyMap.reset();
let transforms = await source.pull(q => q.findRecord(jupiter));
assert.equal(transforms.length, 1, 'one transform returned');
assert.deepEqual(
transforms[0].operations.map(o => o.op),
['updateRecord'],
'operations match expectations'
);
assert.equal(
keyMap.keyToId('planet', 'remoteId', 'p2'),
'jupiter',
'key has been mapped'
);
});
示例4: test
test('#query - a specific record', async function(assert) {
assert.expect(2);
let earth: Record = {
type: 'planet',
id: 'earth',
attributes: {
name: 'Earth',
classification: 'terrestrial'
}
};
let jupiter: Record = {
type: 'planet',
id: 'jupiter',
keys: {
remoteId: 'p2'
},
attributes: {
name: 'Jupiter',
classification: 'gas giant'
}
};
let io: Record = {
type: 'moon',
id: 'io',
attributes: {
name: 'Io'
}
};
await cache.patch(t => [
t.addRecord(earth),
t.addRecord(jupiter),
t.addRecord(io)
]);
// reset keyMap to verify that pulling records also adds keys
keyMap.reset();
let record = await cache.query(q => q.findRecord(jupiter));
assert.deepEqual(record, jupiter, 'query results are expected');
assert.equal(
keyMap.keyToId('planet', 'remoteId', 'p2'),
'jupiter',
'key has been mapped'
);
});
示例5: getRecordFromIndexedDB
test('#push - addRecord', async function(assert) {
assert.expect(2);
let planet: Record = {
type: 'planet',
id: 'jupiter',
keys: {
remoteId: 'j'
},
attributes: {
name: 'Jupiter',
classification: 'gas giant'
}
};
await source.push(t => t.addRecord(planet));
assert.deepEqual(
await getRecordFromIndexedDB(source.cache, planet),
planet,
'indexeddb contains record'
);
assert.equal(
keyMap.keyToId('planet', 'remoteId', 'j'),
'jupiter',
'key has been mapped'
);
});
示例6: test
test('#patch sets data and #records retrieves it', function(assert) {
assert.expect(4);
let cache = new MemoryCache({ schema, keyMap });
const earth: Record = {
type: 'planet',
id: '1',
attributes: { name: 'Earth' },
keys: { remoteId: 'a' }
};
cache.on('patch', (operation, data) => {
assert.deepEqual(operation, {
op: 'addRecord',
record: earth
});
assert.deepEqual(data, earth);
});
cache.patch(t => t.addRecord(earth));
assert.strictEqual(
cache.getRecordSync({ type: 'planet', id: '1' }),
earth,
'objects strictly match'
);
assert.equal(
keyMap.keyToId('planet', 'remoteId', 'a'),
'1',
'key has been mapped'
);
});