Skip to content

Instantly share code, notes, and snippets.

View PCreations's full-sized avatar

Pierre Criulanscy PCreations

View GitHub Profile
import { createHandler } from "./handler";
import { domains } from "./constants/domains";
export const handler = createHandler({ domains });
import { createRecentArticlesSitemap } from "./recent-articles-sitemap";
export const createHandler = ({ domains }) => {
const recentArticlesSitemap = createRecentArticlesSitemap({
todayDate: new Date(),
});
return () =>
Promise.all(
domains.map(({ domain, language }) =>
import { createRecentArticlesSitemap } from "../recent-articles-sitemap";
import { createHandler } from "../handler";
jest.mock("../recent-articles-sitemap");
describe("handler", () => {
it("delegates the creation of the sitemap for each domain/language", async () => {
// arrange
const domains = [
{
import { createIsRecentArticle } from "./is-recent-article";
import { articleToXml } from "./article-to-xml";
import { createExecuteLatestArticlesQuery } from "./execute-latest-articles-query";
import { createS3xmlUploader } from "./s3-xml-uploader";
export const createRecentArticlesSitemap = ({
todayDate,
executeLatestArticlesQuery = createExecuteLatestArticlesQuery(),
s3xmlUploader = createS3xmlUploader({ bucketName: process.env.S3_BUCKET }),
}) => {
import { createRecentArticlesSitemap } from "../recent-articles-sitemap";
import {
createTestArticlePublishedOneDayAgo,
createTestArticlePublishedTwoDaysAgo,
createTestArticlePublishedThreeDaysAgo,
} from "./data/create-test-article";
import { createFakeExecuteLatestArticlesQuery } from "../execute-latest-articles-query";
import { createFakeS3xmlUploader } from "../s3-xml-uploader";
describe("recentArticlesSitemap", () => {
import aws from "aws-sdk";
aws.config.update({
accessKeyId: process.env.ACCESS_KEY_ID,
secretAccessKey: process.env.SECRET_ACCESS_KEY,
region: process.env.REGION,
});
export const createS3xmlUploader = ({ bucketName, s3 = new aws.S3() }) => {
let lastPutObject;
describe("s3xmlUploader", () => {
it("can be nullable", async () => {
// arrange
const xmlUploader = createFakeS3xmlUploader({ bucketName: "test-bucket" });
const xmlString =
'<?xml version="1.0" encoding="UTF-8"?><hello><to>Test</to></hello>';
const domain = "www.my-website.co.uk";
// act
await xmlUploader.upload({ domain, xmlString });
import aws from "aws-sdk";
aws.config.update({
accessKeyId: process.env.ACCESS_KEY_ID,
secretAccessKey: process.env.SECRET_ACCESS_KEY,
region: process.env.REGION,
});
export const createS3xmlUploader = ({ bucketName, s3 = new aws.S3() }) => {
let lastPutObject;
import aws from "aws-sdk";
aws.config.update({
accessKeyId: process.env.ACCESS_KEY_ID,
secretAccessKey: process.env.SECRET_ACCESS_KEY,
region: process.env.REGION,
});
export const createS3xmlUploader = ({ bucketName }) => {
const s3 = new aws.S3();
import { createS3xmlUploader } from "../../s3-xml-uploader";
describe("s3xmlUploader", () => {
it("uploads the xml to the S3 bucket", async () => {
// arrange
const xmlUploader = createS3xmlUploader({
bucketName: process.env.S3_BUCKET,
});
const xmlString =
'<?xml version="1.0" encoding="UTF-8"?><hello><to>Test</to></hello>';