summaryrefslogtreecommitdiff
path: root/packages/backend/test/unit/NoteCreateService.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/backend/test/unit/NoteCreateService.ts')
-rw-r--r--packages/backend/test/unit/NoteCreateService.ts144
1 files changed, 144 insertions, 0 deletions
diff --git a/packages/backend/test/unit/NoteCreateService.ts b/packages/backend/test/unit/NoteCreateService.ts
new file mode 100644
index 0000000000..f2d4c8ffbb
--- /dev/null
+++ b/packages/backend/test/unit/NoteCreateService.ts
@@ -0,0 +1,144 @@
+/*
+ * SPDX-FileCopyrightText: syuilo and misskey-project
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+
+import { Test } from '@nestjs/testing';
+
+import { CoreModule } from '@/core/CoreModule.js';
+import { NoteCreateService } from '@/core/NoteCreateService.js';
+import { GlobalModule } from '@/GlobalModule.js';
+import { MiNote } from '@/models/Note.js';
+import { IPoll } from '@/models/Poll.js';
+import { MiDriveFile } from '@/models/DriveFile.js';
+
+describe('NoteCreateService', () => {
+ let noteCreateService: NoteCreateService;
+
+ beforeAll(async () => {
+ const app = await Test.createTestingModule({
+ imports: [GlobalModule, CoreModule],
+ }).compile();
+ noteCreateService = app.get<NoteCreateService>(NoteCreateService);
+ });
+
+ describe('is-renote', () => {
+ const base: MiNote = {
+ id: 'some-note-id',
+ replyId: null,
+ reply: null,
+ renoteId: null,
+ renote: null,
+ threadId: null,
+ text: null,
+ name: null,
+ cw: null,
+ userId: 'some-user-id',
+ user: null,
+ localOnly: false,
+ reactionAcceptance: null,
+ renoteCount: 0,
+ repliesCount: 0,
+ clippedCount: 0,
+ reactions: {},
+ visibility: 'public',
+ uri: null,
+ url: null,
+ fileIds: [],
+ attachedFileTypes: [],
+ visibleUserIds: [],
+ mentions: [],
+ mentionedRemoteUsers: '',
+ reactionAndUserPairCache: [],
+ emojis: [],
+ tags: [],
+ hasPoll: false,
+ channelId: null,
+ channel: null,
+ userHost: null,
+ replyUserId: null,
+ replyUserHost: null,
+ renoteUserId: null,
+ renoteUserHost: null,
+ };
+
+ const poll: IPoll = {
+ choices: ['kinoko', 'takenoko'],
+ multiple: false,
+ expiresAt: null,
+ };
+
+ const file: MiDriveFile = {
+ id: 'some-file-id',
+ userId: null,
+ user: null,
+ userHost: null,
+ md5: '',
+ name: '',
+ type: '',
+ size: 0,
+ comment: null,
+ blurhash: null,
+ properties: {},
+ storedInternal: false,
+ url: '',
+ thumbnailUrl: null,
+ webpublicUrl: null,
+ webpublicType: null,
+ accessKey: null,
+ thumbnailAccessKey: null,
+ webpublicAccessKey: null,
+ uri: null,
+ src: null,
+ folderId: null,
+ folder: null,
+ isSensitive: false,
+ maybeSensitive: false,
+ maybePorn: false,
+ isLink: false,
+ requestHeaders: null,
+ requestIp: null,
+ };
+
+ test('note without renote should not be Renote', () => {
+ const note = { renote: null };
+ expect(noteCreateService['isRenote'](note)).toBe(false);
+ });
+
+ test('note with renote should be Renote and not be Quote', () => {
+ const note = { renote: base };
+ expect(noteCreateService['isRenote'](note)).toBe(true);
+ expect(noteCreateService['isQuote'](note)).toBe(false);
+ });
+
+ test('note with renote and text should be Quote', () => {
+ const note = { renote: base, text: 'some-text' };
+ expect(noteCreateService['isRenote'](note)).toBe(true);
+ expect(noteCreateService['isQuote'](note)).toBe(true);
+ });
+
+ test('note with renote and cw should be Quote', () => {
+ const note = { renote: base, cw: 'some-cw' };
+ expect(noteCreateService['isRenote'](note)).toBe(true);
+ expect(noteCreateService['isQuote'](note)).toBe(true);
+ });
+
+ test('note with renote and reply should be Quote', () => {
+ const note = { renote: base, reply: { ...base, id: 'another-note-id' } };
+ expect(noteCreateService['isRenote'](note)).toBe(true);
+ expect(noteCreateService['isQuote'](note)).toBe(true);
+ });
+
+ test('note with renote and poll should be Quote', () => {
+ const note = { renote: base, poll };
+ expect(noteCreateService['isRenote'](note)).toBe(true);
+ expect(noteCreateService['isQuote'](note)).toBe(true);
+ });
+
+ test('note with renote and non-empty files should be Quote', () => {
+ const note = { renote: base, files: [file] };
+ expect(noteCreateService['isRenote'](note)).toBe(true);
+ expect(noteCreateService['isQuote'](note)).toBe(true);
+ });
+ });
+});