summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.changeset/eleven-hotels-roll.md5
-rw-r--r--packages/astro-rss/src/schema.ts2
-rw-r--r--packages/astro-rss/test/rss.test.js13
3 files changed, 19 insertions, 1 deletions
diff --git a/.changeset/eleven-hotels-roll.md b/.changeset/eleven-hotels-roll.md
new file mode 100644
index 000000000..dc4eb3df8
--- /dev/null
+++ b/.changeset/eleven-hotels-roll.md
@@ -0,0 +1,5 @@
+---
+'@astrojs/rss': patch
+---
+
+Fix pubDate schema tranformation
diff --git a/packages/astro-rss/src/schema.ts b/packages/astro-rss/src/schema.ts
index 829a4da1e..ede4e764c 100644
--- a/packages/astro-rss/src/schema.ts
+++ b/packages/astro-rss/src/schema.ts
@@ -2,7 +2,7 @@ import { z } from 'astro/zod';
export const rssSchema = z.object({
title: z.string(),
- pubDate: z.union([z.string(), z.number(), z.date()]).transform((value) => new Date(value)),
+ pubDate: z.union([z.string(), z.number(), z.date()]).transform((value) => new Date(value)).refine((value) => !isNaN(value.getTime())),
description: z.string().optional(),
customData: z.string().optional(),
draft: z.boolean().optional(),
diff --git a/packages/astro-rss/test/rss.test.js b/packages/astro-rss/test/rss.test.js
index 2a7106c07..238408d44 100644
--- a/packages/astro-rss/test/rss.test.js
+++ b/packages/astro-rss/test/rss.test.js
@@ -1,4 +1,5 @@
import rss from '../dist/index.js';
+import { rssSchema } from '../dist/schema.js';
import chai from 'chai';
import chaiPromises from 'chai-as-promised';
import chaiXml from 'chai-xml';
@@ -195,4 +196,16 @@ describe('rss', () => {
chai.expect(body).xml.to.equal(validXmlResult);
});
+
+ it('should fail when an invalid date string is provided', async () => {
+ const res = rssSchema.safeParse({
+ title: phpFeedItem.title,
+ pubDate: 'invalid date',
+ description: phpFeedItem.description,
+ link: phpFeedItem.link,
+ })
+
+ chai.expect(res.success).to.be.false;
+ chai.expect(res.error.issues[0].path[0]).to.equal('pubDate');
+ });
});