fix: address final widget review findings
This commit is contained in:
1 parent
44b55a401c
commit
c09ed96978
8 files changed
+149
-37
No files matched your search
@@ -65,6 +65,26 @@ describe("rssFeedRouter", () => {
|
||||
expect(logged).not.toContain("token");
|
||||
expect(logged).not.toContain("secret");
|
||||
});
|
||||
|
||||
test("returns successful entries and only a failure count when some feeds fail", async () => {
|
||||
const failedUrl = "https://user:password@example.com/feed?token=secret";
|
||||
mocks.getFeed.mockImplementation(async (input: { url: string }) => {
|
||||
if (input.url === failedUrl) throw new Error(`Failed to fetch ${failedUrl}`);
|
||||
return { data: { entries: [{ id: "entry" }] } };
|
||||
});
|
||||
const caller = rssFeedRouter.createCaller({
|
||||
db: createDb(),
|
||||
deviceType: undefined,
|
||||
session: createSession(["board-create"]),
|
||||
});
|
||||
|
||||
const result = await caller.getFeeds({ urls: ["https://example.com/feed", failedUrl], maximumAmountPosts: 5 });
|
||||
|
||||
expect(result).toEqual({ entries: [{ id: "entry" }], failedFeedCount: 1 });
|
||||
expect(JSON.stringify(result)).not.toContain("password");
|
||||
expect(JSON.stringify(result)).not.toContain("token");
|
||||
expect(JSON.stringify(result)).not.toContain("secret");
|
||||
});
|
||||
});
|
||||
|
||||
describe("canAccessAllFeedsAsync", () => {
|
||||
|
||||
@@ -65,17 +65,20 @@ export const rssFeedRouter = createTRPCRouter({
|
||||
});
|
||||
}
|
||||
|
||||
return settled
|
||||
.flatMap((result) => {
|
||||
if (result.status === "fulfilled") return result.value.data.entries;
|
||||
return [];
|
||||
})
|
||||
.toSorted((entryA, entryB) => {
|
||||
return entryA.published && entryB.published
|
||||
? new Date(entryB.published).getTime() - new Date(entryA.published).getTime()
|
||||
: 0;
|
||||
})
|
||||
.slice(0, input.maximumAmountPosts);
|
||||
return {
|
||||
entries: settled
|
||||
.flatMap((result) => {
|
||||
if (result.status === "fulfilled") return result.value.data.entries;
|
||||
return [];
|
||||
})
|
||||
.toSorted((entryA, entryB) => {
|
||||
return entryA.published && entryB.published
|
||||
? new Date(entryB.published).getTime() - new Date(entryA.published).getTime()
|
||||
: 0;
|
||||
})
|
||||
.slice(0, input.maximumAmountPosts),
|
||||
failedFeedCount: failures.length,
|
||||
};
|
||||
}),
|
||||
});
|
||||
|
||||
|
||||
Reference in new issue
Block a user