69 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			69 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
/*
 | 
						|
 * SPDX-FileCopyrightText: syuilo and misskey-project
 | 
						|
 * SPDX-License-Identifier: AGPL-3.0-only
 | 
						|
 */
 | 
						|
 | 
						|
import { afterEach, assert, describe, test } from 'vitest';
 | 
						|
import { cleanup, render, type RenderResult } from '@testing-library/vue';
 | 
						|
import './init';
 | 
						|
import type * as Misskey from 'misskey-js';
 | 
						|
import { directives } from '@/directives/index.js';
 | 
						|
import { components } from '@/components/index.js';
 | 
						|
import XHome from '@/pages/user/home.vue';
 | 
						|
import 'intersection-observer';
 | 
						|
 | 
						|
describe('XHome', () => {
 | 
						|
	const renderHome = (user: Partial<Misskey.entities.UserDetailed>): RenderResult => {
 | 
						|
		return render(XHome, {
 | 
						|
			props: { user, disableNotes: true },
 | 
						|
			global: { directives, components },
 | 
						|
		});
 | 
						|
	};
 | 
						|
 | 
						|
	afterEach(() => {
 | 
						|
		cleanup();
 | 
						|
	});
 | 
						|
 | 
						|
	test('Should render the remote caution when user.host exists', async () => {
 | 
						|
		const home = renderHome({
 | 
						|
			id: 'blobcat',
 | 
						|
			name: 'blobcat',
 | 
						|
			host: 'example.com',
 | 
						|
			uri: 'https://example.com/@user',
 | 
						|
			url: 'https://example.com/@user/profile',
 | 
						|
			roles: [],
 | 
						|
			createdAt: '1970-01-01T00:00:00.000Z',
 | 
						|
			fields: [],
 | 
						|
			pinnedNotes: [],
 | 
						|
			avatarUrl: 'https://example.com',
 | 
						|
			avatarDecorations: [],
 | 
						|
		});
 | 
						|
 | 
						|
		const anchor = home.container.querySelector<HTMLAnchorElement>('a[href^="https://example.com/"]');
 | 
						|
		assert.exists(anchor, 'anchor to the remote exists');
 | 
						|
		assert.strictEqual(anchor?.href, 'https://example.com/@user/profile');
 | 
						|
 | 
						|
		assert.ok(anchor?.parentElement?.classList.contains('warn'), 'the parent is a warning');
 | 
						|
	});
 | 
						|
 | 
						|
	test('The remote caution should fall back to uri if url is null', async () => {
 | 
						|
		const home = renderHome({
 | 
						|
			id: 'blobcat',
 | 
						|
			name: 'blobcat',
 | 
						|
			host: 'example.com',
 | 
						|
			uri: 'https://example.com/@user',
 | 
						|
			url: null,
 | 
						|
			roles: [],
 | 
						|
			createdAt: '1970-01-01T00:00:00.000Z',
 | 
						|
			fields: [],
 | 
						|
			pinnedNotes: [],
 | 
						|
			avatarUrl: 'https://example.com',
 | 
						|
			avatarDecorations: [],
 | 
						|
		});
 | 
						|
 | 
						|
		const anchor = home.container.querySelector<HTMLAnchorElement>('a[href^="https://example.com/"]');
 | 
						|
		assert.exists(anchor, 'anchor to the remote exists');
 | 
						|
		assert.strictEqual(anchor?.href, 'https://example.com/@user');
 | 
						|
	});
 | 
						|
});
 |