79 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			79 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
const extractCSSComments = require('./extract-css-comments');
 | 
						|
 | 
						|
const someHTMLWithCSS = `<body>
 | 
						|
Some text
 | 
						|
<style>
 | 
						|
.body {
 | 
						|
  color: red;
 | 
						|
  /* comment 1 */
 | 
						|
}
 | 
						|
 | 
						|
.comment {
 | 
						|
  /* comment 1 */
 | 
						|
  background: green;
 | 
						|
  /* comment 2 */
 | 
						|
}
 | 
						|
 | 
						|
</style>
 | 
						|
</body>
 | 
						|
`;
 | 
						|
 | 
						|
const outsideDeclarations = `
 | 
						|
<style>
 | 
						|
.body {
 | 
						|
  color: red;
 | 
						|
  /* comment 1 */
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
/* comment 1 */
 | 
						|
/* comment 2 */
 | 
						|
}
 | 
						|
 | 
						|
</style>
 | 
						|
`;
 | 
						|
 | 
						|
const mediaQuery = `
 | 
						|
<style>
 | 
						|
.body {
 | 
						|
  color: red;
 | 
						|
  /* comment 1 */
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
@media (max-width: 350px) {
 | 
						|
  :root {
 | 
						|
    /* comment 2 */
 | 
						|
 | 
						|
    /* comment 2 */
 | 
						|
  }
 | 
						|
}
 | 
						|
</style>
 | 
						|
`;
 | 
						|
 | 
						|
// NOTE: this is a bit finicky.  If the css is, say, missing a semi-colon,
 | 
						|
// nearby comments may be missed.
 | 
						|
describe('extractCSSComments', () => {
 | 
						|
  it('should return an object with comment keys and count values', () => {
 | 
						|
    const commentCounts = {
 | 
						|
      'comment 1': 2,
 | 
						|
      'comment 2': 1
 | 
						|
    };
 | 
						|
    expect(extractCSSComments(someHTMLWithCSS)).toEqual(commentCounts);
 | 
						|
  });
 | 
						|
  it('should catch comments outside of declarations', () => {
 | 
						|
    const commentCounts = {
 | 
						|
      'comment 1': 2,
 | 
						|
      'comment 2': 1
 | 
						|
    };
 | 
						|
    expect(extractCSSComments(outsideDeclarations)).toEqual(commentCounts);
 | 
						|
  });
 | 
						|
  it('should catch comments inside of media queries', () => {
 | 
						|
    const commentCounts = {
 | 
						|
      'comment 1': 1,
 | 
						|
      'comment 2': 2
 | 
						|
    };
 | 
						|
    expect(extractCSSComments(mediaQuery)).toEqual(commentCounts);
 | 
						|
  });
 | 
						|
});
 |