Skip to content

Commit

Permalink
add queryable capability (#4794)
Browse files Browse the repository at this point in the history
  • Loading branch information
mariakleiner committed Mar 4, 2020
1 parent d032c75 commit 0f0f82a
Show file tree
Hide file tree
Showing 6 changed files with 22 additions and 2 deletions.
3 changes: 3 additions & 0 deletions src/runtime/capabilities.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ export class Capabilities {
}

get isPersistent() { return this.capabilities.has('persistent'); }
get isQueryable() { return this.capabilities.has('queryable'); }
get isTiedToRuntime() { return this.capabilities.has('tied-to-runtime'); }
get isTiedToArc() { return this.capabilities.has('tied-to-arc'); }

Expand All @@ -44,4 +45,6 @@ export class Capabilities {
static readonly tiedToArc = new Capabilities(['tied-to-arc']);
static readonly tiedToRuntime = new Capabilities(['tied-to-runtime']);
static readonly persistent = new Capabilities(['persistent']);
static readonly queryable = new Capabilities(['queryable']);
static readonly persistentQueryable = new Capabilities(['persistent', 'queryable']);
}
2 changes: 1 addition & 1 deletion src/runtime/manifest-ast-nodes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -402,7 +402,7 @@ export interface ParticleConnectionTargetComponents extends BaseNode {

export type RecipeHandleFate = string;

export type RecipeHandleCapability = 'persistent' | 'tied-to-runtime' | 'tied-to-arc';
export type RecipeHandleCapability = 'persistent' | 'queryable' | 'tied-to-runtime' | 'tied-to-arc';

export interface RecipeHandle extends BaseNode {
kind: 'handle';
Expand Down
1 change: 1 addition & 0 deletions src/runtime/manifest-parser.pegjs
Original file line number Diff line number Diff line change
Expand Up @@ -1064,6 +1064,7 @@ RecipeHandleFate

RecipeHandleCapability
= 'persistent'
/ 'queryable'
/ 'tied-to-runtime'
/ 'tied-to-arc'

Expand Down
2 changes: 1 addition & 1 deletion src/runtime/storageNG/testing/mock-firebase.ts
Original file line number Diff line number Diff line change
Expand Up @@ -355,7 +355,7 @@ export class MockFirebaseStorageDriverProvider extends FirebaseStorageDriverProv
const {projectId, domain, apiKey} = mockFirebaseStorageKeyOptions;
CapabilitiesResolver.registerKeyCreator(
'firebase',
Capabilities.persistent,
Capabilities.persistentQueryable,
(options: StorageKeyOptions) => new FirebaseStorageKey(projectId, domain, apiKey, options.location()));

}
Expand Down
2 changes: 2 additions & 0 deletions src/runtime/tests/capabilities-resolver-test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -117,5 +117,7 @@ describe('Capabilities Resolver', () => {
assert.sameMembers([...resolver2.findStorageKeyProtocols(Capabilities.tiedToArc)], ['volatile']);
assert.sameMembers([...resolver2.findStorageKeyProtocols(Capabilities.tiedToRuntime)], ['ramdisk']);
assert.sameMembers([...resolver2.findStorageKeyProtocols(Capabilities.persistent)], ['firebase']);
assert.sameMembers([...resolver2.findStorageKeyProtocols(Capabilities.queryable)], ['firebase']);
assert.sameMembers([...resolver2.findStorageKeyProtocols(Capabilities.persistentQueryable)], ['firebase']);
});
});
14 changes: 14 additions & 0 deletions src/runtime/tests/capabilities-test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,28 +13,42 @@ import {Capabilities} from '../capabilities.js';
describe('Capabilities', () => {
it('verifies same capabilities', () => {
assert.isTrue(Capabilities.persistent.isSame(Capabilities.persistent));
assert.isTrue(Capabilities.queryable.isSame(Capabilities.queryable));
assert.isTrue(Capabilities.persistentQueryable.isSame(
Capabilities.persistentQueryable));
assert.isTrue(Capabilities.tiedToRuntime.isSame(Capabilities.tiedToRuntime));
assert.isTrue(Capabilities.tiedToArc.isSame(Capabilities.tiedToArc));

assert.isFalse(Capabilities.persistent.isSame(Capabilities.tiedToRuntime));
assert.isFalse(Capabilities.tiedToRuntime.isSame(Capabilities.tiedToArc));
assert.isFalse(Capabilities.tiedToArc.isSame(Capabilities.persistent));
assert.isFalse(Capabilities.queryable.isSame(Capabilities.persistentQueryable));


assert.isTrue(new Capabilities(['persistent', 'tied-to-arc']).isSame(
new Capabilities(['persistent', 'tied-to-arc'])));
assert.isTrue(new Capabilities(['persistent', 'queryable']).isSame(
Capabilities.persistentQueryable));
assert.isFalse(new Capabilities(['persistent', 'tied-to-arc']).isSame(Capabilities.persistent));
assert.isFalse(Capabilities.persistent.isSame(
new Capabilities(['persistent', 'tied-to-arc'])));
});

it('verifies contained capabilities', () => {
assert.isTrue(Capabilities.persistent.contains(Capabilities.persistent));
assert.isTrue(Capabilities.queryable.contains(Capabilities.queryable));
assert.isTrue(Capabilities.persistentQueryable.contains(Capabilities.persistentQueryable));
assert.isTrue(Capabilities.persistentQueryable.contains(Capabilities.persistent));
assert.isTrue(Capabilities.persistentQueryable.contains(Capabilities.queryable));
assert.isTrue(Capabilities.tiedToRuntime.contains(Capabilities.tiedToRuntime));
assert.isTrue(Capabilities.tiedToArc.contains(Capabilities.tiedToArc));

assert.isFalse(Capabilities.persistent.contains(Capabilities.tiedToRuntime));
assert.isFalse(Capabilities.tiedToRuntime.contains(Capabilities.tiedToArc));
assert.isFalse(Capabilities.tiedToArc.contains(Capabilities.persistent));
assert.isFalse(Capabilities.persistent.contains(Capabilities.persistentQueryable));
assert.isFalse(Capabilities.queryable.contains(Capabilities.persistentQueryable));
assert.isFalse(Capabilities.queryable.contains(Capabilities.persistent));

assert.isTrue(new Capabilities(['persistent', 'tied-to-arc']).contains(
new Capabilities(['persistent', 'tied-to-arc'])));
Expand Down

0 comments on commit 0f0f82a

Please sign in to comment.