Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-03-12 00:09:19 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2020-03-12 00:09:19 +0300
commitfca89bb73ff5b1d14c98c72481f9268fee107ea0 (patch)
treee1c8a2c4fe5df7f054fd09e49f53bcfb51e51c84 /spec/frontend/ide/utils_spec.js
parent76e9fc7b29c1ce716c26932e9fbec0f3c99f53f4 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/frontend/ide/utils_spec.js')
-rw-r--r--spec/frontend/ide/utils_spec.js60
1 files changed, 59 insertions, 1 deletions
diff --git a/spec/frontend/ide/utils_spec.js b/spec/frontend/ide/utils_spec.js
index 9d7926a4d06..44eae7eacbe 100644
--- a/spec/frontend/ide/utils_spec.js
+++ b/spec/frontend/ide/utils_spec.js
@@ -1,8 +1,66 @@
import { commitItemIconMap } from '~/ide/constants';
-import { getCommitIconMap } from '~/ide/utils';
+import { getCommitIconMap, isTextFile } from '~/ide/utils';
import { decorateData } from '~/ide/stores/utils';
describe('WebIDE utils', () => {
+ describe('isTextFile', () => {
+ it('returns false for known binary types', () => {
+ expect(isTextFile('file content', 'image/png', 'my.png')).toBeFalsy();
+ // mime types are case insensitive
+ expect(isTextFile('file content', 'IMAGE/PNG', 'my.png')).toBeFalsy();
+ });
+
+ it('returns true for known text types', () => {
+ expect(isTextFile('file content', 'text/plain', 'my.txt')).toBeTruthy();
+ // mime types are case insensitive
+ expect(isTextFile('file content', 'TEXT/PLAIN', 'my.txt')).toBeTruthy();
+ });
+
+ it('returns true for file extensions that Monaco supports syntax highlighting for', () => {
+ // test based on both MIME and extension
+ expect(isTextFile('{"éêė":"value"}', 'application/json', 'my.json')).toBeTruthy();
+ expect(isTextFile('{"éêė":"value"}', 'application/json', '.tsconfig')).toBeTruthy();
+ expect(isTextFile('SELECT "éêė" from tablename', 'application/sql', 'my.sql')).toBeTruthy();
+ });
+
+ it('returns true even irrespective of whether the mimes, extensions or file names are lowercase or upper case', () => {
+ expect(isTextFile('{"éêė":"value"}', 'application/json', 'MY.JSON')).toBeTruthy();
+ expect(isTextFile('SELECT "éêė" from tablename', 'application/sql', 'MY.SQL')).toBeTruthy();
+ expect(
+ isTextFile('var code = "something"', 'application/javascript', 'Gruntfile'),
+ ).toBeTruthy();
+ expect(
+ isTextFile(
+ 'MAINTAINER Александр "alexander11354322283@me.com"',
+ 'application/octet-stream',
+ 'dockerfile',
+ ),
+ ).toBeTruthy();
+ });
+
+ it('returns false if filename is same as the expected extension', () => {
+ expect(isTextFile('SELECT "éêė" from tablename', 'application/sql', 'sql')).toBeFalsy();
+ });
+
+ it('returns true for ASCII only content for unknown types', () => {
+ expect(isTextFile('plain text', 'application/x-new-type', 'hello.mytype')).toBeTruthy();
+ });
+
+ it('returns true for relevant filenames', () => {
+ expect(
+ isTextFile(
+ 'MAINTAINER Александр "alexander11354322283@me.com"',
+ 'application/octet-stream',
+ 'Dockerfile',
+ ),
+ ).toBeTruthy();
+ });
+
+ it('returns false for non-ASCII content for unknown types', () => {
+ expect(isTextFile('{"éêė":"value"}', 'application/octet-stream', 'my.random')).toBeFalsy();
+ });
+ });
+
const createFile = (name = 'name', id = name, type = '', parent = null) =>
decorateData({
id,