mirror of
https://github.com/react/react-native-devtools-frontend.git
synced 2026-10-30 01:43:36 +08:00
This removes the pattern
```js
const {assert} = chai;
```
from our unit test suite, which is fundamentally incompatible with
TypeScript `asserts`, which we intend to put onto Chai assert
functions. And this is also unnecessary, since `karma-chai` (and
also `karma-chai-sinon`) already provide `assert` as a global (with
the proper types).
Bug: 333520272
Change-Id: Id5dfd65903b5b116414709782c7923fc5523e480
Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/5439575
Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
Auto-Submit: Benedikt Meurer <bmeurer@chromium.org>
Reviewed-by: Philip Pfaffe <pfaffe@chromium.org>
217 lines
5.5 KiB
TypeScript
217 lines
5.5 KiB
TypeScript
// Copyright 2020 The Chromium Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
import * as FormatterWorker from './formatter_worker.js';
|
|
|
|
function formatCSS(text: string): string {
|
|
return FormatterWorker.FormatterWorker.format('text/css', text, ' ').content;
|
|
}
|
|
|
|
describe('CSSFormatter', () => {
|
|
it('formats simple selector correctly', () => {
|
|
const formattedCode = formatCSS('a{color:red;}');
|
|
assert.strictEqual(formattedCode, `a {
|
|
color: red;
|
|
}
|
|
`);
|
|
});
|
|
|
|
it('formats selector with quotes', () => {
|
|
const formattedCode = formatCSS('a[href=\'/\']');
|
|
assert.strictEqual(formattedCode, 'a[href=\'/\']');
|
|
});
|
|
|
|
it('formats compound selector', () => {
|
|
const formattedCode = formatCSS('#content > a:hover');
|
|
assert.strictEqual(formattedCode, '#content > a:hover');
|
|
});
|
|
|
|
it('formats color values', () => {
|
|
const formattedCode = formatCSS(
|
|
'p { color: color; red: red; color: #000; color: #FFF; color: #123AbC; color: #faebfe; color:papayawhip; }');
|
|
assert.strictEqual(formattedCode, `p {
|
|
color: color;
|
|
red: red;
|
|
color: #000;
|
|
color: #FFF;
|
|
color: #123AbC;
|
|
color: #faebfe;
|
|
color: papayawhip;
|
|
}
|
|
`);
|
|
});
|
|
|
|
it('formats important declaration', () => {
|
|
const formattedCode = formatCSS('p { margin: -10px !important; }');
|
|
assert.strictEqual(formattedCode, `p {
|
|
margin: -10px !important;
|
|
}
|
|
`);
|
|
});
|
|
|
|
it('formats with comments correctly', () => {
|
|
const formattedCode =
|
|
formatCSS('a { /* pre-comment */ color /* after name */ : /* before value */ red /* post-comment */ }');
|
|
assert.strictEqual(formattedCode, `a {
|
|
/* pre-comment */
|
|
color /* after name */ : /* before value */ red /* post-comment */
|
|
}
|
|
`);
|
|
});
|
|
|
|
it('formats media queries correctly', () => {
|
|
const formattedCode = formatCSS(
|
|
'@media screen{ html{color:green;foo-property:bar-value}} body{background-color:black;} @media screen,print{body{line-height:1.2}}span{line-height:10px}');
|
|
assert.strictEqual(formattedCode, `@media screen {
|
|
html {
|
|
color: green;
|
|
foo-property: bar-value
|
|
}
|
|
}
|
|
|
|
body {
|
|
background-color: black;
|
|
}
|
|
|
|
@media screen,print {
|
|
body {
|
|
line-height: 1.2
|
|
}
|
|
}
|
|
|
|
span {
|
|
line-height: 10px
|
|
}
|
|
`);
|
|
});
|
|
|
|
it('formats styles with prepending new lines correctly', () => {
|
|
const formattedCode = formatCSS(`
|
|
|
|
div { color: red; }`);
|
|
assert.strictEqual(formattedCode, `div {
|
|
color: red;
|
|
}
|
|
`);
|
|
});
|
|
|
|
it('formats complex selectors correctly', () => {
|
|
const formattedCode = formatCSS('a.b.c:hover,.d.e.f.g::before,h.i{color:red;}');
|
|
assert.strictEqual(formattedCode, `a.b.c:hover,.d.e.f.g::before,h.i {
|
|
color: red;
|
|
}
|
|
`);
|
|
});
|
|
|
|
it('formats font-face selectors correctly', () => {
|
|
const formattedCode = formatCSS(
|
|
'@font-face{font-family:MyHelvetica;src:local(\'Helvetica Neue Bold\'),local(\'HelveticaNeue-Bold\'),url(MgOpenModernaBold.ttf);font-weight:bold;}div{color:red}');
|
|
assert.strictEqual(formattedCode, `@font-face {
|
|
font-family: MyHelvetica;
|
|
src: local(\'Helvetica Neue Bold\'),local(\'HelveticaNeue-Bold\'),url(MgOpenModernaBold.ttf);
|
|
font-weight: bold;
|
|
}
|
|
|
|
div {
|
|
color: red
|
|
}
|
|
`);
|
|
});
|
|
|
|
it('formats charset rule correctly', () => {
|
|
const formattedCode = formatCSS('@charset \'iso-8859-15\';p{margin:0}');
|
|
assert.strictEqual(formattedCode, `@charset \'iso-8859-15\';p {
|
|
margin: 0
|
|
}
|
|
`);
|
|
});
|
|
|
|
it('formats import rule correctly', () => {
|
|
const formattedCode = formatCSS('@import url(\'bluish.css\') projection,tv;span{border:1px solid black}');
|
|
assert.strictEqual(formattedCode, `@import url(\'bluish.css\') projection,tv;span {
|
|
border: 1px solid black
|
|
}
|
|
`);
|
|
});
|
|
|
|
it('formats import rule with media query correctly', () => {
|
|
const formattedCode =
|
|
formatCSS('@import url(\'landscape.css\') screen and (orientation:landscape);article{background:yellow}');
|
|
assert.strictEqual(formattedCode, `@import url(\'landscape.css\') screen and (orientation: landscape);
|
|
article {
|
|
background: yellow
|
|
}
|
|
`);
|
|
});
|
|
|
|
it('formats import rule with media query correctly', () => {
|
|
const formattedCode = formatCSS(
|
|
'p{animation-duration:3s;}@keyframes slidein{from{margin-left:100%;width:300%;}to{margin-left:0%;width:100%;}}p{animation-name:slidein}');
|
|
assert.strictEqual(formattedCode, `p {
|
|
animation-duration: 3s;
|
|
}
|
|
|
|
@keyframes slidein {
|
|
from {
|
|
margin-left: 100%;
|
|
width: 300%;
|
|
}
|
|
|
|
to {
|
|
margin-left: 0%;
|
|
width: 100%;
|
|
}
|
|
}
|
|
|
|
p {
|
|
animation-name: slidein
|
|
}
|
|
`);
|
|
});
|
|
|
|
it('formats namespace rule correctly', () => {
|
|
const formattedCode = formatCSS('@namespace svg url(http://www.w3.org/2000/svg);g{color:red}');
|
|
assert.strictEqual(formattedCode, `@namespace svg url(http://www.w3.org/2000/svg);g {
|
|
color: red
|
|
}
|
|
`);
|
|
});
|
|
|
|
it('formats page rule correctly', () => {
|
|
const formattedCode = formatCSS('@page :first{margin:2in 3in;}span{color:blue}');
|
|
assert.strictEqual(formattedCode, `@page :first {
|
|
margin: 2in 3in;
|
|
}
|
|
|
|
span {
|
|
color: blue
|
|
}
|
|
`);
|
|
});
|
|
|
|
it('formats supports rule correctly', () => {
|
|
const formattedCode = formatCSS('@supports(--foo:green){body{color:green;}}#content{font-size:14px}');
|
|
assert.strictEqual(formattedCode, `@supports(--foo: green) {
|
|
body {
|
|
color:green;
|
|
}
|
|
}
|
|
|
|
#content {
|
|
font-size: 14px
|
|
}
|
|
`);
|
|
});
|
|
|
|
it('formats css-variable definitions and usages correctly', () => {
|
|
const formattedCode = formatCSS('html { --foo: bar; --color: red; background-color: var(--foo); }');
|
|
assert.strictEqual(formattedCode, `html {
|
|
--foo: bar;
|
|
--color: red;
|
|
background-color: var(--foo);
|
|
}
|
|
`);
|
|
});
|
|
});
|