FIX: Vipps agreement and DB agreement out of sync #42

Closed
olaven wants to merge 4 commits from revert-41-fix-vipps-crash into main
2 changed files with 22 additions and 15 deletions

View File

@ -1,4 +1,4 @@
import { assertEquals, assertExists } from "$std/assert/mod.ts";
import { assertEquals, assertExists, assertLess } from "$std/assert/mod.ts";
import { testUtils } from "./test-utils.ts";
import { rss } from "./rss.ts";
import { forTestingOnly } from "./rss.ts";
@ -30,6 +30,20 @@ Deno.test("generated rss contains promo with link to donations page", () => {
const series = testUtils.generateSeries();
const feed = rss.assembleFeed(series);
console.log(feed);
feed.includes("Vurder å støtte utviklingen via Vipps");
});
Deno.test("generated rss contains promo with link to donations page", () => {
const series = testUtils.generateSeries();
const feed = rss.assembleFeed(series);
const indexOfFirstPromotion = feed.indexOf(
"NRSS er avhengig av din Vipps-støtte",
);
const indexOfSecondPromotion = feed.indexOf("Vurder å støtte utviklingen");
assertLess(
indexOfFirstPromotion,
indexOfSecondPromotion,
"First promotion should come before the second",
);
});

View File

@ -27,16 +27,11 @@ function assembleFeed(series: Series): string {
tag("itunes:name", "NRK"),
tag("itunes:email", "nrkpodcast@nrk.no"),
]),
tag(
"description",
series.subtitle || "",
),
tag("description", series.subtitle || ""),
tag("ttl", "60"), //60 minutes
...(series.imageUrl
? [
tag("itunes:image", "", [
["href", series.imageUrl],
]),
tag("itunes:image", "", [["href", series.imageUrl]]),
tag("image", [
tag("url", series.imageUrl),
tag("title", series.title),
@ -58,10 +53,11 @@ function assembleFeed(series: Series): string {
}
function descriptionWithDonationPromotion(description: string): string {
const promotion =
const firstPromotion = `NRSS er avhengig av din Vipps-støtte⬇`;
const secondPromotion =
`Takk for at du bruker NRSS 🙏🌟 Vurder å støtte utviklingen via Vipps med omtrent det samme som prisen på en kaffekopp. Se mer på https://nrss.deno.dev/`;
return `${description}\n\n${promotion}`;
return `${firstPromotion}\n\n${description}\n\n${secondPromotion}`;
}
function assembleEpisode(episode: Episode, seriesId: Series["id"]): Tag {
@ -76,10 +72,7 @@ function assembleEpisode(episode: Episode, seriesId: Series["id"]): Tag {
tag("pubDate", new Date(episode.date).toUTCString()),
tag("itunes:duration", episode.durationInSeconds.toString()),
tag("podcast:chapters", "", [
[
"url",
`${getHostUrl()}/api/feeds/${seriesId}/${episode.id}/chapters`,
],
["url", `${getHostUrl()}/api/feeds/${seriesId}/${episode.id}/chapters`],
["type", "application/json+chapters"],
]),
tag("enclosure", "", [