···11import { getImageSize } from "./image";
22+import { logger } from "../logger/logger";
2334// Mock the file system
45jest.mock("fs", () => ({
···7071 });
71727273 test("should log error when image processing fails", async () => {
7373- // Import the logger mock
7474- const { logger } = require("../logger/logger");
7575-7674 // Call the function with a path that will trigger an error
7775 const result = await getImageSize("/path/to/missing.jpg");
7876
+4-3
src/instagram-to-bluesky.test.ts
···77 uploadMediaAndEmbed,
88} from "../src/instagram-to-bluesky";
99import { BlueskyClient } from "./bluesky/bluesky";
1010+import { ImagesEmbedImpl, VideoEmbedImpl } from "./bluesky/index";
1011import { logger } from "./logger/logger";
1111-import { InstagramMediaProcessor, ImageMediaProcessResultImpl, VideoMediaProcessResultImpl } from "./media";
1212-import { ImagesEmbedImpl, VideoEmbedImpl } from "./bluesky/index";
1212+import { InstagramMediaProcessor, ImageMediaProcessResultImpl } from "./media";
1313+1314import type { InstagramExportedPost } from "./media/InstagramExportedPost";
14151516// Mock all dependencies
···581582 // Mock BlueskyClient for tracking uploads
582583 const mockBlueskyClient = {
583584 login: jest.fn().mockResolvedValue(undefined),
584584- uploadMedia: jest.fn().mockImplementation((_, __) => {
585585+ uploadMedia: jest.fn().mockImplementation(() => {
585586 return Promise.resolve({
586587 ref: `test-blob-ref-${mockBlueskyClient.uploadMedia.mock.calls.length}`,
587588 mimeType: "image/jpeg",
+1
src/media/processors/Factory.test.ts
···11import fs from "fs";
22+23import { InstagramMediaProcessor } from "../";
34import {
45 InstagramExportedPost,
+1-5
src/media/processors/InstagramImageProcessor.ts
···55import { MediaProcessResult, ImageMediaProcessResultImpl } from "../MediaProcessResult";
66import { getMediaBuffer } from "../utils";
7788-/**
99- * @link https://docs.bsky.app/docs/advanced-guides/posts#:~:text=Each%20post%20contains%20up%20to,alt%20text%20and%20aspect%20ratio.
1010- * "Each post contains up to four images, and each image can have its own alt text and aspect ratio."
1111- */
1212-const MAX_IMAGES_PER_POST = 4;
88+139const POST_TEXT_LIMIT = 300;
1410const POST_TEXT_TRUNCATE_SUFFIX = "...";
1511
···11import fs from "fs";
22+23import { InstagramMediaProcessor } from "./InstagramMediaProcessor";
34import { InstagramExportedPost, VideoMedia, ImageMedia } from "../InstagramExportedPost";
45
+4
src/media/processors/InstagramMediaProcessor.ts
···55import { MediaProcessorFactory } from "../interfaces/MediaProcessorFactory";
66import { ProcessedPost, ProcessedPostImpl } from "../ProcessedPost";
7788+/**
99+ * @link https://docs.bsky.app/docs/advanced-guides/posts#:~:text=Each%20post%20contains%20up%20to,alt%20text%20and%20aspect%20ratio.
1010+ * "Each post contains up to four images, and each image can have its own alt text and aspect ratio."
1111+ */
812const MAX_IMAGES_PER_POST = 4;
913const POST_TEXT_LIMIT = 300;
1014const POST_TEXT_TRUNCATE_SUFFIX = "...";