/*global describe, it */
|
'use strict';
|
|
var assert = require( 'assert' );
|
var UrlHelper = require( './../lib/url' );
|
var UrlsHelper = require( './../lib/urls' );
|
var ImportHelper = require( './../lib/import' );
|
|
|
/**
|
* UrlHelper fuxtures
|
*/
|
|
var UrlRules = [
|
{
|
originalURI: 'http://google.com/logo.png',
|
originalRule: 'url( \'http://google.com/logo.png\' ) no-repeat top left',
|
originalSuffix: 'png',
|
modifiedHref: 'logo.png',
|
modifiedRule: 'url( \'logo.png\' ) no-repeat top left',
|
},
|
{
|
originalURI: 'http://google.com/logo.png',
|
originalRule: 'url( "http://google.com/logo.png" ) no-repeat top left',
|
originalSuffix: 'png',
|
modifiedHref: 'logo.png',
|
modifiedRule: 'url( "logo.png" ) no-repeat top left',
|
},
|
{
|
originalURI: 'http://google.com/logo.png',
|
originalRule: 'url( http://google.com/logo.png ) no-repeat top left',
|
originalSuffix: 'png',
|
modifiedHref: 'logo.png',
|
modifiedRule: 'url( logo.png ) no-repeat top left',
|
|
},
|
// Really UGLY fix for ?#iefix case, urijs normalized it's value
|
{
|
originalURI: 'font.eot?#iefix',
|
originalRule: 'url( font.eot?#iefix )',
|
originalSuffix: 'eot',
|
modifiedHref: 'font2.eot#iefix',
|
modifiedRule: 'url( font2.eot?#iefix )',
|
|
},
|
// Fix for blank url()
|
{
|
originalURI: '',
|
originalRule: 'url()',
|
originalSuffix: '',
|
modifiedHref: 'image.png',
|
modifiedRule: 'url(\'image.png\')',
|
|
},
|
];
|
|
/**
|
* UrlHelper tests
|
*/
|
|
UrlRules.forEach( function( v ) {
|
describe( 'For UrlHelper("' + v.originalRule + '")', function() {
|
var h = new UrlHelper( v.originalRule );
|
|
describe( '#getOriginalRule()', function() {
|
it( 'should return "' + v.originalRule, function() {
|
assert.equal( h.getOriginalRule(), v.originalRule );
|
});
|
});
|
|
describe( '#URI.suffix()', function() {
|
it( 'should return "' + v.originalSuffix, function() {
|
assert.equal( h.URI.suffix(), v.originalSuffix );
|
});
|
});
|
|
describe( '#URI.href()', function() {
|
it( 'should return "' + v.modifiedHref + '" after #URI.href(' + v.modifiedHref + ')', function() {
|
h.URI.href( v.modifiedHref );
|
assert.equal( h.URI.href(), v.modifiedHref );
|
});
|
});
|
|
describe( '#getModifiedRule()', function() {
|
it( 'should return "' + v.modifiedRule + ' after #URI.href(' + v.modifiedHref + ')', function() {
|
assert.equal( h.getModifiedRule(), v.modifiedRule );
|
});
|
});
|
|
describe( '#getOriginalURI()', function() {
|
it( 'should return "' + v.originalURI, function() {
|
assert.equal( h.getOriginalURI(), v.originalURI );
|
});
|
});
|
} );
|
} );
|
|
/**
|
* UrlsHelper fuxtures
|
*/
|
|
var UrlsRules = [
|
{
|
originalURIS: [ '1.jpg', '2.png' ],
|
originalRule: 'url( \'1.jpg\' ) no-repeat top left, url( \'2.png\' )',
|
modifiedHref: '3.svg',
|
modifiedRule: 'url( \'3.svg\' ) no-repeat top left, url( \'3.svg\' )',
|
},
|
{
|
originalURIS: [ '1.jpg', '2.png' ],
|
originalRule: 'url( "1.jpg" ) no-repeat top left, url( "2.png" )',
|
modifiedHref: '3.svg',
|
modifiedRule: 'url( "3.svg" ) no-repeat top left, url( "3.svg" )',
|
},
|
{
|
originalURIS: [ '1.jpg', '2.png' ],
|
originalRule: 'url( 1.jpg ) no-repeat top left, url( 2.png )',
|
modifiedHref: '3.svg',
|
modifiedRule: 'url( 3.svg ) no-repeat top left, url( 3.svg )',
|
},
|
];
|
|
|
/**
|
* UrlsHelper tests
|
*/
|
|
UrlsRules.forEach( function( v ) {
|
describe( 'For UrlsHelper("' + v.originalRule + '")', function() {
|
var h = new UrlsHelper( v.originalRule );
|
|
describe( '#URIS array', function() {
|
it( 'should contain "' + v.originalURIS[0] + '" and "' + v.originalURIS[ 1 ] + '"' , function() {
|
assert.deepEqual( [ h.URIS[ 0 ].href(), h.URIS[ 1 ].href() ], v.originalURIS );
|
});
|
});
|
|
describe( '#getOriginalRule()', function() {
|
it( 'should return "' + v.originalRule, function() {
|
assert.equal( h.getOriginalRule(), v.originalRule );
|
});
|
});
|
|
describe( '#getModifiedRule()', function() {
|
it( 'should return "' + v.modifiedRule + ' after setting #URI.href(' + v.modifiedHref + ') to each object in URIS.', function() {
|
h.URIS.forEach( function( uri ) { uri.href( v.modifiedHref ); } );
|
assert.equal( h.getModifiedRule(), v.modifiedRule );
|
});
|
});
|
} );
|
} );
|
|
/**
|
* ImportHelper fuxtures
|
*/
|
|
var ImportRules = [
|
{
|
originalQuery: 'print',
|
query: false,
|
originalURI: 'fineprint.css',
|
originalRule: 'url("fineprint.css") print',
|
modifiedHref: 'style.css',
|
modifiedRule: 'url("style.css")'
|
},
|
{
|
originalQuery: 'projection, tv',
|
query: 'projection, tv',
|
originalURI: 'bluish.css',
|
originalRule: 'url( bluish.css ) projection, tv',
|
modifiedHref: 'style.css',
|
modifiedRule: 'url( style.css ) projection, tv',
|
},
|
{
|
originalQuery: false,
|
query: false,
|
originalURI: 'custom.css',
|
originalRule: '\'custom.css\'',
|
modifiedHref: 'style.css',
|
modifiedRule: '\'style.css\''
|
|
},
|
{
|
originalQuery: false,
|
query: 'projection, tv',
|
originalURI: 'chrome://communicator/skin/',
|
originalRule: 'url("chrome://communicator/skin/")',
|
modifiedHref: 'style.css',
|
modifiedRule: 'url("style.css") projection, tv'
|
|
},
|
{
|
originalQuery: 'screen, projection',
|
query: 'screen and (orientation:landscape)',
|
originalURI: 'common.css',
|
originalRule: '"common.css" screen, projection',
|
modifiedHref: 'style.css',
|
modifiedRule: '"style.css" screen and (orientation:landscape)'
|
},
|
{
|
originalQuery: 'screen and (orientation:landscape)',
|
query: 'screen, projection',
|
originalURI: 'landscape.css',
|
originalRule: 'url(\'landscape.css\') screen and (orientation:landscape)',
|
modifiedHref: 'style.css',
|
modifiedRule: 'url(\'style.css\') screen, projection'
|
}
|
];
|
|
/**
|
* ImportHelper tests
|
*/
|
|
ImportRules.forEach( function( v ) {
|
describe( 'For ImportHelper("' + v.originalRule + '")', function() {
|
var h = new ImportHelper( v.originalRule );
|
|
describe( '#getOriginalRule()', function() {
|
it( 'should return "' + v.originalRule, function() {
|
assert.equal( h.getOriginalRule(), v.originalRule );
|
});
|
});
|
|
describe( '#URI.href()', function() {
|
it( 'should return "' + v.modifiedHref + '" after #URI.href( "' + v.modifiedHref + '" )', function() {
|
h.URI.href( v.modifiedHref );
|
assert.equal( h.URI.href(), v.modifiedHref );
|
});
|
});
|
|
describe( '#getOriginalURI()', function() {
|
it( 'should return "' + v.originalURI + '"', function() {
|
assert.equal( h.getOriginalURI(), v.originalURI );
|
});
|
});
|
|
describe( '#getOriginalMediaQuery()', function() {
|
it( 'should return "' + v.originalQuery + '"', function() {
|
assert.equal( h.getOriginalMediaQuery(), v.originalQuery );
|
});
|
});
|
|
describe( '#getMediaQuery()', function() {
|
it( 'should return "' + v.query + '" after #setMediaQuery( "' + v.query + '" )', function() {
|
h.setMediaQuery( v.query );
|
assert.equal( h.getMediaQuery(), v.query );
|
});
|
});
|
|
describe( '#getModifiedRule()', function() {
|
it( 'should return "' + v.modifiedRule + ' after #URI.href(' + v.modifiedHref + ')', function() {
|
assert.equal( h.getModifiedRule(), v.modifiedRule );
|
});
|
});
|
} );
|
} );
|