CommunitySolidServer/test/unit/http/representation/BasicRepresentation.test.ts
Joachim Van Herwegen 6248ed0938 refactor: Replace linting configurations
The previous package was outdated, preventing us from updating TS.
This one also lints YAML and JSON,
and applies many more rules to the test files,
explaining all the changes in this PR.
2023-11-02 09:49:17 +01:00

121 lines
5.6 KiB
TypeScript

import 'jest-rdf';
import { Readable } from 'stream';
import arrayifyStream from 'arrayify-stream';
import { DataFactory } from 'n3';
import { BasicRepresentation } from '../../../../src/http/representation/BasicRepresentation';
import { RepresentationMetadata } from '../../../../src/http/representation/RepresentationMetadata';
import { INTERNAL_QUADS } from '../../../../src/util/ContentTypes';
import { guardedStreamFrom } from '../../../../src/util/StreamUtil';
import { CONTENT_TYPE } from '../../../../src/util/Vocabularies';
const { namedNode } = DataFactory;
describe('BasicRepresentation', (): void => {
it('creates a representation with (data, metadata, binary).', (): void => {
const data = guardedStreamFrom([ '' ]);
const metadata = new RepresentationMetadata();
const representation = new BasicRepresentation(data, metadata, true);
expect(representation.data).toBe(data);
expect(representation.metadata).toBe(metadata);
expect(representation.binary).toBe(true);
});
it('creates a representation with (data, metadata).', (): void => {
const data = guardedStreamFrom([ '' ]);
let metadata = new RepresentationMetadata();
let representation = new BasicRepresentation(data, metadata);
expect(representation.data).toBe(data);
expect(representation.metadata).toBe(metadata);
expect(representation.binary).toBe(true);
metadata = new RepresentationMetadata(INTERNAL_QUADS);
representation = new BasicRepresentation(data, metadata);
expect(representation.data).toBe(data);
expect(representation.metadata).toBe(metadata);
expect(representation.binary).toBe(false);
});
it('creates a representation with (unguarded data, metadata).', (): void => {
const data = Readable.from([ '' ]);
const metadata = new RepresentationMetadata();
const representation = new BasicRepresentation(data, metadata);
expect(representation.data).toBe(data);
expect(representation.metadata).toBe(metadata);
expect(representation.binary).toBe(true);
});
it('creates a representation with (array data, metadata).', async(): Promise<void> => {
const data = [ 'my', 'data' ];
const metadata = new RepresentationMetadata();
const representation = new BasicRepresentation(data, metadata);
expect(await arrayifyStream(representation.data)).toEqual(data);
expect(representation.metadata).toBe(metadata);
expect(representation.binary).toBe(true);
});
it('creates a representation with (string data, metadata).', async(): Promise<void> => {
const data = 'my data';
const metadata = new RepresentationMetadata();
const representation = new BasicRepresentation(data, metadata);
expect(await arrayifyStream(representation.data)).toEqual([ data ]);
expect(representation.metadata).toBe(metadata);
expect(representation.binary).toBe(true);
});
it('creates a representation with (data, metadata record).', (): void => {
const data = guardedStreamFrom([ '' ]);
const representation = new BasicRepresentation(data, { [CONTENT_TYPE]: 'text/custom' });
expect(representation.data).toBe(data);
expect(representation.metadata.contentType).toBe('text/custom');
expect(representation.binary).toBe(true);
});
it('creates a representation with (data, content type).', (): void => {
const data = guardedStreamFrom([ '' ]);
const representation = new BasicRepresentation(data, 'text/custom');
expect(representation.data).toBe(data);
expect(representation.metadata.contentType).toBe('text/custom');
expect(representation.binary).toBe(true);
});
it('creates a representation with (data, identifier, metadata record).', (): void => {
const identifier = { path: 'http://example.org/#' };
const data = guardedStreamFrom([ '' ]);
const representation = new BasicRepresentation(data, identifier, { [CONTENT_TYPE]: 'text/custom' });
expect(representation.data).toBe(data);
expect(representation.metadata.identifier).toEqualRdfTerm(namedNode(identifier.path));
expect(representation.metadata.contentType).toBe('text/custom');
expect(representation.binary).toBe(true);
});
it('creates a representation with (data, identifier, content type).', (): void => {
const identifier = { path: 'http://example.org/#' };
const data = guardedStreamFrom([ '' ]);
const representation = new BasicRepresentation(data, identifier, 'text/custom');
expect(representation.data).toBe(data);
expect(representation.metadata.identifier).toEqualRdfTerm(namedNode(identifier.path));
expect(representation.metadata.contentType).toBe('text/custom');
expect(representation.binary).toBe(true);
});
it('creates a representation with (data, identifier term, metadata record).', (): void => {
const identifier = namedNode('http://example.org/#');
const data = guardedStreamFrom([ '' ]);
const representation = new BasicRepresentation(data, identifier, { [CONTENT_TYPE]: 'text/custom' });
expect(representation.data).toBe(data);
expect(representation.metadata.identifier).toBe(identifier);
expect(representation.metadata.contentType).toBe('text/custom');
expect(representation.binary).toBe(true);
});
it('creates a representation with (data, identifier term, content type).', (): void => {
const identifier = namedNode('http://example.org/#');
const data = guardedStreamFrom([ '' ]);
const representation = new BasicRepresentation(data, identifier, 'text/custom');
expect(representation.data).toBe(data);
expect(representation.metadata.identifier).toBe(identifier);
expect(representation.metadata.contentType).toBe('text/custom');
expect(representation.binary).toBe(true);
});
});