129 lines
6.5 KiB
JavaScript
129 lines
6.5 KiB
JavaScript
/* global expect */
|
||
const _ = require('lodash');
|
||
|
||
const { stripURLs, stripHTML } = require('../');
|
||
|
||
describe('utils', () => {
|
||
describe('stripURLs', () => {
|
||
it('should return a string', () => {
|
||
const value = stripURLs('some string');
|
||
|
||
expect(_.isString(value)).toBe(true);
|
||
});
|
||
|
||
it('should remove a url from the input', () => {
|
||
const value = stripURLs('https://freecodecamp.org/en/challenges');
|
||
expect(value).toEqual('');
|
||
});
|
||
|
||
it('should leave non-urls intact', () => {
|
||
const value = stripURLs(
|
||
'Some text before https://freecodecamp.org/en/challenges some text ' +
|
||
'after'
|
||
);
|
||
const expected = 'Some text before some text after';
|
||
expect(value).toEqual(expected);
|
||
});
|
||
|
||
it('should preserve punctuation, but remove new line chars', () => {
|
||
const value = stripURLs(
|
||
"http://search.freecodecamp.org\nI'm inclined to say, is just amazing!"
|
||
);
|
||
const expected = "I'm inclined to say, is just amazing!";
|
||
expect(value).toEqual(expected);
|
||
});
|
||
|
||
it('should remove urls from a block of text', () => {
|
||
const value = stripURLs(
|
||
'Learn how Symbols work in JavaScript ES6!\n\nCode:\n<> ' +
|
||
'http://codepen.io/beaucarnes/pen/ZLQEWx?editors=0011\n\nMore ' +
|
||
'info:\n<> http://www.2ality.com/2014/12/es6-symbols.html\n<> ' +
|
||
'http://exploringjs.com/es6/ch_symbols.html\n\nBeau Carnes on ' +
|
||
'Twitter: https://twitter.com/carnesbeau\n\n⭐JavaScript Playlists⭐' +
|
||
'\n▶JavaScript Basics: https://www.youtube.com/playlist?list=' +
|
||
'PLWKjhJtqVAbk2qRZtWSzCIN38JC_NdhW5\n▶ES6: https://www.youtube.com' +
|
||
'/playlist?list=PLWKjhJtqVAbljtmmeS0c-CEl2LdE-eR_F\n▶Design ' +
|
||
'Patterns: https://www.youtube.com/playlist?list=PLWKjhJtqVAbnZtkA' +
|
||
'I3BqcYxKnfWn_C704\n▶Data Structures and Algorithms: https://www.' +
|
||
'youtube.com/playlist?list=PLWKjhJtqVAbkso-IbgiiP48n-O-JQA9PJ\n▶' +
|
||
'Clean Code: https://www.youtube.com/playlist?list=PLWKjhJtqVAbkK2' +
|
||
"4EaPurzMq0-kw5U9pJh\n\n-\nWe're busy people who learn to code, " +
|
||
'then practice by building projects for nonprofits. Learn ' +
|
||
'Full-stack JavaScript, build a portfolio, and get great ' +
|
||
'references with our open source community.\n\nJoin our community ' +
|
||
'at https://freecodecamp.com\nFollow us on twitter: ' +
|
||
'https://twitter.com/freecodecamp\nLike us on Facebook: https://' +
|
||
'www.facebook.com/freecodecamp\nFollow Quincy on Quora: https://' +
|
||
'www.quora.com/Quincy-Larson'
|
||
);
|
||
const expected =
|
||
'Learn how Symbols work in JavaScript ES6! Code: <20> ' +
|
||
'More info: <20> <20> Beau Carnes on Twitter: ⭐JavaScript Playlists⭐ ▶' +
|
||
'JavaScript Basics: ▶ES6: ▶Design Patterns: ▶Data Structures and ' +
|
||
"Algorithms: ▶Clean Code: - We're busy people who learn to code, " +
|
||
'then practice by building projects for nonprofits. Learn Full-stack ' +
|
||
'JavaScript, build a portfolio, and get great references with our ' +
|
||
'open source community. Join our community at Follow us on twitter: ' +
|
||
'Like us on Facebook: Follow Quincy on Quora:';
|
||
expect(value).toEqual(expected);
|
||
});
|
||
});
|
||
|
||
describe('stripHTML', () => {
|
||
it('should remove simple html tags from a block of text', () => {
|
||
const value = stripHTML(
|
||
"Now we've proven that every HTML page has a <code>body</code> " +
|
||
'element, and that its <code>body</code> element can also be ' +
|
||
'styled with CSS.Remember, you can style your <code>body</code> ' +
|
||
'element just like any other HTML element, and all your other ' +
|
||
"elements will inherit your <code>body</code> element's styles." +
|
||
'First, create a <code>h1</code> element with the text <code>' +
|
||
"Hello World</code>Then, let's give all elements on your page the " +
|
||
'color of <code>green</code> by adding <code>color: green;</code> ' +
|
||
'to...'
|
||
);
|
||
const expected =
|
||
"Now we've proven that every HTML page has a body " +
|
||
'element, and that its body element can also be styled with CSS.' +
|
||
'Remember, you can style your body element just like any other HTML ' +
|
||
'element, and all your other elements will inherit your body ' +
|
||
"element's styles.First, create a h1 element with the text Hello " +
|
||
"WorldThen, let's give all elements on your page the color of green " +
|
||
'by adding color: green; to...';
|
||
expect(value).toEqual(expected);
|
||
});
|
||
|
||
it('should remove escaped tags from a block of text', () => {
|
||
const value = stripHTML(
|
||
'You can add images to your website by using the <code>img</code> ' +
|
||
"element, and point to a specific image's URL using the " +
|
||
'<code>src</code> attribute.An example of this would be:<code>' +
|
||
'<img src="https://www.your-image-source.com/your-image.jpg"' +
|
||
'></code>All <code>img</code> elements <strong>must</strong> ' +
|
||
'have an <code>alt</code> attribute. The text inside an ' +
|
||
'<code>alt</code> attribute is used for screen readers to improve ' +
|
||
"accessibility and is displayed if the image fails to load.Let's " +
|
||
'add an <code>alt</code> attribute to our <code>img</code> example ' +
|
||
'above:<code><img src="https://www.your-image-source.com/your-' +
|
||
'image.jpg" alt="Author standing on a beach with two thumbs up. ' +
|
||
'"></code>Note that in most cases, <code>img</code> elements ' +
|
||
'are self-closing.Try it with this image:<code>https://bit.ly/fcc-' +
|
||
'relaxing-cat</code>'
|
||
);
|
||
// the best I could do here is allow things like
|
||
// image:https://bit.ly/fcc-relaxing-cat
|
||
// trying to strip this further could invalidate other entries
|
||
const expected =
|
||
'You can add images to your website by using the img ' +
|
||
"element, and point to a specific image's URL using the src " +
|
||
'attribute.An example of this would be:All img elements must have ' +
|
||
'an alt attribute. The text inside an alt attribute is used for ' +
|
||
'screen readers to improve accessibility and is displayed if the ' +
|
||
"image fails to load.Let's add an alt attribute to our img example " +
|
||
'above:Note that in most cases, img elements are self-closing.Try ' +
|
||
'it with this image:https://bit.ly/fcc-relaxing-cat';
|
||
expect(value).toEqual(expected);
|
||
});
|
||
});
|
||
});
|