Skip to content

Commit

Permalink
Ugly typesafety
Browse files Browse the repository at this point in the history
  • Loading branch information
inlined committed Apr 3, 2024
1 parent 16f481e commit de36f7a
Show file tree
Hide file tree
Showing 2 changed files with 185 additions and 45 deletions.
73 changes: 73 additions & 0 deletions spec/v2/providers/firestore.spec.ts
Expand Up @@ -86,6 +86,15 @@ function makeEvent(data?: any): firestore.RawFirestoreEvent {
} as firestore.RawFirestoreEvent;
}

function makeAuthEvent(data?: any): firestore.RawFirestoreAuthEvent {
return {
...eventBase,
data,
userId: "userId",
authType: "user",
} as firestore.RawFirestoreAuthEvent;
}

const createdData = {
value: {
fields: {
Expand Down Expand Up @@ -1100,6 +1109,38 @@ describe("firestore", () => {
});
});

describe("makeFirestoreAuthEvent", () => {
it("should make event from an event without data", () => {
const event = firestore.makeFirestoreAuthEvent(
firestore.createdEventType,
makeAuthEvent(),
firestore.makeParams("foo/fGRodw71mHutZ4wGDuT8", new PathPattern("foo/{bar}"))
);

expect(event.data).to.eq(undefined);
});

it("should make event from a created event", () => {
const event = firestore.makeFirestoreAuthEvent(
firestore.createdEventType,
makeAuthEvent(makeEncodedProtobuf(createdProto)),
firestore.makeParams("foo/fGRodw71mHutZ4wGDuT8", new PathPattern("foo/{bar}"))
);

expect(event.data.data()).to.deep.eq({ hello: "create world" });
});

it("should make event from a deleted event", () => {
const event = firestore.makeFirestoreAuthEvent(
firestore.deletedEventType,
makeAuthEvent(makeEncodedProtobuf(deletedProto)),
firestore.makeParams("foo/fGRodw71mHutZ4wGDuT8", new PathPattern("foo/{bar}"))
);

expect(event.data.data()).to.deep.eq({ hello: "delete world" });
});
});

describe("makeChangedFirestoreEvent", () => {
it("should make event from an event without data", () => {
const event = firestore.makeChangedFirestoreEvent(
Expand Down Expand Up @@ -1131,6 +1172,38 @@ describe("firestore", () => {
});
});

describe("makeChangedFirestoreEvent", () => {
it("should make event from an event without data", () => {
const event = firestore.makeChangedFirestoreAuthEvent(
makeAuthEvent(),
firestore.makeParams("foo/fGRodw71mHutZ4wGDuT8", new PathPattern("foo/{bar}"))
);

expect(event.data).to.eq(undefined);
});

it("should make event from an updated event", () => {
const event = firestore.makeChangedFirestoreEvent(
makeAuthEvent(makeEncodedProtobuf(updatedProto)),
firestore.makeParams("foo/fGRodw71mHutZ4wGDuT8", new PathPattern("foo/{bar}"))
);

expect(event.data.before.data()).to.deep.eq({ hello: "old world" });
expect(event.data.after.data()).to.deep.eq({ hello: "new world" });
});

it("should make event from a written event", () => {
const event = firestore.makeChangedFirestoreEvent(
makeAuthEvent(makeEncodedProtobuf(writtenProto)),
firestore.makeParams("foo/fGRodw71mHutZ4wGDuT8", new PathPattern("foo/{bar}"))
);

expect(event.data.before.data()).to.deep.eq({});
expect(event.data.after.data()).to.deep.eq({ hello: "a new world" });
});
});


describe("makeEndpoint", () => {
it("should make an endpoint with a document path pattern", () => {
const expectedEp = makeExpectedEp(
Expand Down

0 comments on commit de36f7a

Please sign in to comment.