Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/twbs/bootstrap-rubygem.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorEugeny Vlasenko <mahnunchik@gmail.com>2014-03-14 23:23:29 +0400
committerEugeny Vlasenko <mahnunchik@gmail.com>2014-03-14 23:23:29 +0400
commitedc3b0f669401717663f42c5e6ce0fe565ead988 (patch)
tree0ba64d4a78a9e31e8c1924e9daab6da5517f1a39 /test
parentfe708c824139f14ecbf8e359127ac5293009a664 (diff)
added tests for mincer font/image helpers
Diffstat (limited to 'test')
-rw-r--r--test/dummy_node_mincer/apple-touch-icon-144-precomposed.pngbin0 -> 3549 bytes
-rw-r--r--test/dummy_node_mincer/application.css4
-rw-r--r--test/dummy_node_mincer/manifest.js86
-rw-r--r--test/dummy_node_mincer/require_all.css.ejs.scss8
-rw-r--r--test/node_mincer_test.rb35
5 files changed, 133 insertions, 0 deletions
diff --git a/test/dummy_node_mincer/apple-touch-icon-144-precomposed.png b/test/dummy_node_mincer/apple-touch-icon-144-precomposed.png
new file mode 100644
index 0000000..622a865
--- /dev/null
+++ b/test/dummy_node_mincer/apple-touch-icon-144-precomposed.png
Binary files differ
diff --git a/test/dummy_node_mincer/application.css b/test/dummy_node_mincer/application.css
new file mode 100644
index 0000000..a7bc37f
--- /dev/null
+++ b/test/dummy_node_mincer/application.css
@@ -0,0 +1,4 @@
+
+/*
+ *= require require_all
+ */ \ No newline at end of file
diff --git a/test/dummy_node_mincer/manifest.js b/test/dummy_node_mincer/manifest.js
new file mode 100644
index 0000000..5c96886
--- /dev/null
+++ b/test/dummy_node_mincer/manifest.js
@@ -0,0 +1,86 @@
+'use strict';
+
+
+// Build script from https://github.com/nodeca/mincer/tree/master/examples
+
+//
+// Require module
+//
+
+
+var Mincer = require('mincer');
+
+
+//
+// Get Mincer environment
+//
+
+
+//
+// Configure Mincers logger, by default, all
+// messages are going to the middle of nowhere
+//
+
+
+Mincer.logger.use(console);
+
+
+//
+// Create and export environment
+//
+
+
+var environment = new Mincer.Environment(process.cwd());
+
+
+//
+// Configure environment load paths (where to find ssets)
+//
+
+// Include bootstrap scss load path
+environment.appendPath('../../vendor/assets/stylesheets');
+
+// Include fonts load path
+environment.appendPath('../../vendor/assets/fonts');
+
+// Include dir with assets, root just for test
+environment.appendPath('./');
+
+
+//
+// Define environment essential *_path helper that will be available in the
+// processed assets. See `assets/stylesheets/app.css.ejs` for example.
+//
+
+
+environment.ContextClass.defineAssetPath(function (pathname, options) {
+ var asset = this.environment.findAsset(pathname, options);
+
+ if (!asset) {
+ throw new Error("File " + pathname + " not found");
+ }
+
+ return '/assets/' + asset.digestPath;
+});
+
+
+//
+// Create and compile Manifest
+//
+
+var manifest_path = process.argv[2] || __dirname + '/assets';
+
+var manifest = new Mincer.Manifest(environment, manifest_path);
+
+
+manifest.compile(['application.css'], function (err, assetsData) {
+ if (err) {
+ console.error("Failed compile assets: " + (err.message || err.toString()));
+ process.exit(128);
+ }
+
+ console.info('\n\nAssets were successfully compiled.\n' +
+ 'Manifest data (a proper JSON) was written to:\n' +
+ manifest.path + '\n\n');
+ console.dir(assetsData);
+});
diff --git a/test/dummy_node_mincer/require_all.css.ejs.scss b/test/dummy_node_mincer/require_all.css.ejs.scss
new file mode 100644
index 0000000..458fa55
--- /dev/null
+++ b/test/dummy_node_mincer/require_all.css.ejs.scss
@@ -0,0 +1,8 @@
+
+
+@import "bootstrap/bootstrap-mincer";
+@import "bootstrap";
+
+#image-retina {
+ @include img-retina("apple-touch-icon-144-precomposed.png", "apple-touch-icon-144-precomposed.png", 72px, 72px);
+} \ No newline at end of file
diff --git a/test/node_mincer_test.rb b/test/node_mincer_test.rb
new file mode 100644
index 0000000..ad9697a
--- /dev/null
+++ b/test/node_mincer_test.rb
@@ -0,0 +1,35 @@
+require 'test_helper'
+require 'json'
+
+class NodeMincerTest < Test::Unit::TestCase
+ DUMMY_PATH = 'test/dummy_node_mincer'
+
+ def test_font_helper_without_suffix
+ assert_match %r(url\(['"]?/assets/.*eot['"]?\)), @css
+ end
+
+ def test_font_helper_with_suffix_sharp
+ assert_match %r(url\(['"]?/assets/.*svg#.+['"]?\)), @css
+ end
+
+ def test_font_helper_with_suffix_question
+ assert_match %r(url\(['"]?/assets/.*eot\?.*['"]?\)), @css
+ end
+
+ def test_image_helper
+ assert_match %r(url\(['"]?/assets/apple-touch-icon-144-precomposed.*png['"]?\)), @css
+ end
+
+ def setup
+ tmp_dir = File.join Bootstrap.gem_path, 'tmp/node-mincer'
+ command = "node manifest.js #{tmp_dir}"
+ Dir.chdir DUMMY_PATH do
+ assert silence_stream(STDOUT) {
+ system(command)
+ }, 'Node.js Mincer compilation failed'
+ end
+ manifest = JSON.parse(File.read("#{tmp_dir}/manifest.json"))
+ css_name = manifest["assets"]["application.css"]
+ @css = File.read("#{tmp_dir}/#{css_name}")
+ end
+end