/*global describe, it */ 'use strict'; var fs = require( 'fs' ); var assert = require( 'assert' ); var postcss = require( 'postcss' ); var urlrewrite = require( '../index.js' ); var fixture = function ( name ) { return fs.readFileSync( 'test/fixtures/' + name + '.css', 'utf8' ).trim(); }; var compareFixtures = function ( name, options ) { var actual = postcss( urlrewrite( options ) ).process( fixture( name ) ).css.trim(); var expected = fixture( name + '.out' ); return assert.equal( actual, expected ); }; describe( 'postcss-urlrewrite', function() { describe( 'paths in absolute rules', function() { it( 'should be replaced', function() { var config = { rules: [ { from: 'http://www.google.com/', 'to': 'http://yandex.ru/' }, { from: /^\//, to: 'http://mysite.com/' } ] }; compareFixtures( 'absolute', config ); }); }); describe( 'different file types', function() { it( 'should return must not affect replacement', function() { var config = { rules: [ { from: 'local', 'to': 'global' } ] }; compareFixtures( 'backgrounds', config ); }); }); describe( 'data-uris', function() { it( 'should be replaceable', function() { var config = { rules: function( uri ) { uri.href( 'image.png' ); } }; compareFixtures( 'datauri', config ); }); }); describe( 'only "content" and "cursor" properties', function() { it( 'should be updated', function() { var config = { properties: [ 'content', 'cursor' ], rules: [ { from: 'local', 'to': 'global' } ] }; compareFixtures( 'filter', config ); }); }); describe( 'fonts src with ie hacks', function() { it( 'should be replaced without errors', function() { var config = { rules: [ { from: 'local', 'to': 'global' } ] }; compareFixtures( 'fonts', config ); }); }); describe( 'only "content" and "cursor" properties', function() { it( 'should be updated', function() { var config = { imports: true, properties: false, rules: [ { from: 'local', 'to': 'global' } ] }; compareFixtures( 'imports', config ); }); }); describe( 'multiple url() in property value', function() { it( 'should be replaced without errors', function() { var config = { rules: [ { from: 'local', 'to': 'global' } ] }; compareFixtures( 'multiple', config ); }); }); describe( 'all properties from css 2.1 spec', function() { it( 'should be replaceable', function() { var config = { rules: [ { from: 'local', 'to': 'global' } ] }; compareFixtures( 'properties', config ); }); }); describe( 'if multiple rules match value', function() { it( 'only first should trigger replace', function() { var config = { rules: [ { from: /local\/test/, 'to': '$&1' }, { from: /global\/test/, 'to': '$&2' }, { from: /test/, 'to': '$&3' } ] }; compareFixtures( 'rules', config ); }); }); describe( 'if properties value is "true"', function() { it( 'it should not return error', function() { var config = { properties: true, rules: [ { from: 'local', 'to': 'global' } ] }; compareFixtures( 'properties-default', config ); }); }); describe( 'if blank url()', function() { it( 'it should not return error', function() { var config = { rules: [ { from: 'local', 'to': 'global' } ] }; compareFixtures( 'blank-url', config ); }); }); } );