/* 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: � ' + 'More info: � � 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 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...' ); 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 img ' + "element, and point to a specific image's URL using the " + 'src attribute.An example of this would be:' + '<img src="https://www.your-image-source.com/your-image.jpg"' + '>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:<img src="https://www.your-image-source.com/your-' + 'image.jpg" alt="Author standing on a beach with two thumbs up. ' + '">Note that in most cases, img elements ' + 'are self-closing.Try it with this image:https://bit.ly/fcc-' + 'relaxing-cat' ); // 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); }); }); });