mirror of
https://github.com/versia-pub/server.git
synced 2026-03-13 05:49:16 +01:00
refactor: 🚨 Make more class methods static
This commit is contained in:
parent
5ec19f037a
commit
2537e3cd48
8 changed files with 40 additions and 44 deletions
|
|
@ -15,13 +15,13 @@ import {
|
|||
import { rm } from "node:fs/promises";
|
||||
import { join } from "node:path";
|
||||
import type { Config } from "~/packages/config-manager/config.type";
|
||||
import type { MediaHasher } from "../media-hasher";
|
||||
import type { getMediaHash } from "../media-hasher";
|
||||
import { DiskMediaDriver } from "./disk";
|
||||
|
||||
describe("DiskMediaDriver", () => {
|
||||
let diskDriver: DiskMediaDriver;
|
||||
let mockConfig: Config;
|
||||
let mockMediaHasher: MediaHasher;
|
||||
let mockMediaHasher: Mock<typeof getMediaHash>;
|
||||
let bunWriteSpy: Mock<typeof Bun.write>;
|
||||
|
||||
beforeEach(() => {
|
||||
|
|
@ -31,9 +31,11 @@ describe("DiskMediaDriver", () => {
|
|||
},
|
||||
} as Config;
|
||||
|
||||
mockMediaHasher = mock(() => ({
|
||||
getMediaHash: mock(() => Promise.resolve("testhash")),
|
||||
}))();
|
||||
mockMediaHasher = mock(() => Promise.resolve("testhash"));
|
||||
|
||||
mock.module("../media-hasher", () => ({
|
||||
getMediaHash: mockMediaHasher,
|
||||
}));
|
||||
|
||||
diskDriver = new DiskMediaDriver(mockConfig);
|
||||
// @ts-expect-error: Replacing private property for testing
|
||||
|
|
@ -65,7 +67,7 @@ describe("DiskMediaDriver", () => {
|
|||
const file = new File(["test"], "test.webp", { type: "image/webp" });
|
||||
const result = await diskDriver.addFile(file);
|
||||
|
||||
expect(mockMediaHasher.getMediaHash).toHaveBeenCalledWith(file);
|
||||
expect(mockMediaHasher).toHaveBeenCalledWith(file);
|
||||
expect(bunWriteSpy).toHaveBeenCalledWith(
|
||||
join("/test/uploads", "testhash", "test.webp"),
|
||||
expect.any(ArrayBuffer),
|
||||
|
|
@ -81,7 +83,7 @@ describe("DiskMediaDriver", () => {
|
|||
const file = new Blob(["test"], { type: "image/webp" });
|
||||
const result = await diskDriver.addFile(file as File);
|
||||
|
||||
expect(mockMediaHasher.getMediaHash).toHaveBeenCalledWith(file);
|
||||
expect(mockMediaHasher).toHaveBeenCalledWith(file);
|
||||
expect(bunWriteSpy).toHaveBeenCalledWith(
|
||||
expect.stringContaining("testhash"),
|
||||
expect.any(ArrayBuffer),
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
import { rm } from "node:fs/promises";
|
||||
import { join } from "node:path";
|
||||
import type { Config } from "~/packages/config-manager/config.type";
|
||||
import { MediaHasher } from "../media-hasher";
|
||||
import { getMediaHash } from "../media-hasher";
|
||||
import type { UploadedFileMetadata } from "../media-manager";
|
||||
import type { MediaDriver } from "./media-driver";
|
||||
|
||||
|
|
@ -14,15 +14,11 @@ import type { MediaDriver } from "./media-driver";
|
|||
* Implements the MediaDriver interface for disk storage.
|
||||
*/
|
||||
export class DiskMediaDriver implements MediaDriver {
|
||||
private mediaHasher: MediaHasher;
|
||||
|
||||
/**
|
||||
* Creates a new DiskMediaDriver instance.
|
||||
* @param config - The configuration object.
|
||||
*/
|
||||
constructor(private config: Config) {
|
||||
this.mediaHasher = new MediaHasher();
|
||||
}
|
||||
constructor(private config: Config) {}
|
||||
|
||||
/**
|
||||
* @inheritdoc
|
||||
|
|
@ -33,7 +29,7 @@ export class DiskMediaDriver implements MediaDriver {
|
|||
// Sometimes the file name is not available, so we generate a random name
|
||||
const fileName = file.name ?? crypto.randomUUID();
|
||||
|
||||
const hash = await this.mediaHasher.getMediaHash(file);
|
||||
const hash = await getMediaHash(file);
|
||||
const path = join(hash, fileName);
|
||||
const fullPath = join(this.config.media.local_uploads_folder, path);
|
||||
|
||||
|
|
|
|||
|
|
@ -3,17 +3,17 @@
|
|||
* @module Tests/S3MediaDriver
|
||||
*/
|
||||
|
||||
import { beforeEach, describe, expect, it, mock } from "bun:test";
|
||||
import { type Mock, beforeEach, describe, expect, it, mock } from "bun:test";
|
||||
import type { S3Client } from "@bradenmacdonald/s3-lite-client";
|
||||
import type { Config } from "~/packages/config-manager/config.type";
|
||||
import type { MediaHasher } from "../media-hasher";
|
||||
import type { getMediaHash } from "../media-hasher";
|
||||
import { S3MediaDriver } from "./s3";
|
||||
|
||||
describe("S3MediaDriver", () => {
|
||||
let s3Driver: S3MediaDriver;
|
||||
let mockConfig: Config;
|
||||
let mockS3Client: S3Client;
|
||||
let mockMediaHasher: MediaHasher;
|
||||
let mockMediaHasher: Mock<typeof getMediaHash>;
|
||||
|
||||
beforeEach(() => {
|
||||
mockConfig = {
|
||||
|
|
@ -38,9 +38,11 @@ describe("S3MediaDriver", () => {
|
|||
deleteObject: mock(() => Promise.resolve()),
|
||||
}))() as unknown as S3Client;
|
||||
|
||||
mockMediaHasher = mock(() => ({
|
||||
getMediaHash: mock(() => Promise.resolve("testhash")),
|
||||
}))();
|
||||
mockMediaHasher = mock(() => Promise.resolve("testhash"));
|
||||
|
||||
mock.module("../media-hasher", () => ({
|
||||
getMediaHash: mockMediaHasher,
|
||||
}));
|
||||
|
||||
s3Driver = new S3MediaDriver(mockConfig);
|
||||
// @ts-expect-error: Replacing private property for testing
|
||||
|
|
@ -53,7 +55,7 @@ describe("S3MediaDriver", () => {
|
|||
const file = new File(["test"], "test.webp", { type: "image/webp" });
|
||||
const result = await s3Driver.addFile(file);
|
||||
|
||||
expect(mockMediaHasher.getMediaHash).toHaveBeenCalledWith(file);
|
||||
expect(mockMediaHasher).toHaveBeenCalledWith(file);
|
||||
expect(mockS3Client.putObject).toHaveBeenCalledWith(
|
||||
"testhash/test.webp",
|
||||
expect.any(ReadableStream),
|
||||
|
|
@ -70,7 +72,7 @@ describe("S3MediaDriver", () => {
|
|||
const file = new Blob(["test"], { type: "image/webp" });
|
||||
const result = await s3Driver.addFile(file as File);
|
||||
|
||||
expect(mockMediaHasher.getMediaHash).toHaveBeenCalledWith(file);
|
||||
expect(mockMediaHasher).toHaveBeenCalledWith(file);
|
||||
expect(mockS3Client.putObject).toHaveBeenCalledWith(
|
||||
expect.stringContaining("testhash"),
|
||||
expect.any(ReadableStream),
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
import { S3Client } from "@bradenmacdonald/s3-lite-client";
|
||||
import type { Config } from "~/packages/config-manager/config.type";
|
||||
import { MediaHasher } from "../media-hasher";
|
||||
import { getMediaHash } from "../media-hasher";
|
||||
import type { UploadedFileMetadata } from "../media-manager";
|
||||
import type { MediaDriver } from "./media-driver";
|
||||
|
||||
|
|
@ -14,7 +14,6 @@ import type { MediaDriver } from "./media-driver";
|
|||
*/
|
||||
export class S3MediaDriver implements MediaDriver {
|
||||
private s3Client: S3Client;
|
||||
private mediaHasher: MediaHasher;
|
||||
|
||||
/**
|
||||
* Creates a new S3MediaDriver instance.
|
||||
|
|
@ -29,7 +28,6 @@ export class S3MediaDriver implements MediaDriver {
|
|||
accessKey: config.s3.access_key,
|
||||
secretKey: config.s3.secret_access_key,
|
||||
});
|
||||
this.mediaHasher = new MediaHasher();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -41,7 +39,7 @@ export class S3MediaDriver implements MediaDriver {
|
|||
// Sometimes the file name is not available, so we generate a random name
|
||||
const fileName = file.name ?? crypto.randomUUID();
|
||||
|
||||
const hash = await this.mediaHasher.getMediaHash(file);
|
||||
const hash = await getMediaHash(file);
|
||||
const path = `${hash}/${fileName}`;
|
||||
|
||||
await this.s3Client.putObject(path, file.stream(), {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue