From 0912f695a38fb1853ffd605640ee69634955d16e Mon Sep 17 00:00:00 2001 From: Christian Volmering Date: Thu, 6 Aug 2015 21:19:32 +0200 Subject: [PATCH] Added test case for image cache updates Added express to the devDependencies since it's used in the test cases. Added a modified image for testing the image cache update. Added test case to see if the cached version of a modified file is recreated. Added a missing return to the library. --- lib/quickthumb.js | 4 ++ package.json | 3 ++ public/images/cape cod modified.jpg | Bin 0 -> 77435 bytes test/express-test.js | 59 ++++++++++++++++++++++++---- 4 files changed, 59 insertions(+), 7 deletions(-) create mode 100644 public/images/cape cod modified.jpg diff --git a/lib/quickthumb.js b/lib/quickthumb.js index 1ef5490..ceb6a54 100644 --- a/lib/quickthumb.js +++ b/lib/quickthumb.js @@ -85,7 +85,11 @@ qt.static = function(root, options){ return sendfile(res, file); }); + + // Either callback or sendfile has been called so we are done. + return; } + callback(); }); }); diff --git a/package.json b/package.json index 71c0b17..ef989c3 100644 --- a/package.json +++ b/package.json @@ -33,5 +33,8 @@ "dependencies": { "imagemagick": "git://github.com/rsms/node-imagemagick.git", "mkdirp": "~0.3.3" + }, + "devDependencies": { + "express": "^4.13.3" } } diff --git a/public/images/cape cod modified.jpg b/public/images/cape cod modified.jpg new file mode 100644 index 0000000000000000000000000000000000000000..83c0f55a40176afb01fd17eafe5d584f4090bcb0 GIT binary patch literal 77435 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
I+|U(2f75@@xJK}#-`vlHV;=j@F` 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 VhZmTQp*CmJjI$dm2%&$U{|80T{d52T literal 0 HcmV?d00001 diff --git a/test/express-test.js b/test/express-test.js index 547134f..9cde681 100644 --- a/test/express-test.js +++ b/test/express-test.js @@ -1,16 +1,23 @@ var express = require('express'), - app = express(), - qt = require('../'), - filename = 'cape cod.jpg'; + app = express(), + qt = require('../'), + os = require('os'), + path = require('path'), + fs = require('fs'), + + filename = 'cape cod.jpg', + publicDir = path.join(__dirname, '../public'), + imageDir = path.join(publicDir, 'images') + cacheDir = path.join(os.tmpdir(), 'quickthumb/cache'); // Crop -app.use('/public/crop', qt.static(__dirname + '/../public', { - cacheDir : '/tmp/cache', +app.use('/public/crop', qt.static(publicDir, { + cacheDir : cacheDir, quality : .95 })); // Resize -app.use('/public/resize', qt.static(__dirname + '/../public', { +app.use('/public/resize', qt.static(publicDir, { type : 'resize', })); @@ -31,10 +38,48 @@ app.get('/', function(req, res){ }); h += '
' + img(type, '?dim=800x100') + '
'; }); - h += '
original
' + img('crop','') + ''; + h += '
original
' + img('crop','') + '
'; + + // --- Image cache test + h += '
cache test

' + + '
' + + ''; + + h += ''; + res.send(h); }); +// --- Image cache test +var cacheTestImage = 'cache_test.jpg'; +var modifiedImage = 'cape cod modified.jpg'; +var redirectPath = '/public/crop/images/' + cacheTestImage + + '?dim=x200&' + new Date().getTime(); + +app.get('/test/:step', function(req, res) { + switch (req.params.step) { + case '1': // Step 1: No cache, image has to be generated + + // Create image for cache test + fs.createReadStream(path.join(imageDir, filename)).pipe( + fs.createWriteStream(path.join(imageDir, cacheTestImage))); + + // Cached version is deleted so that it has to be generated + fs.unlink(path.join(cacheDir, 'crop/x200/images', cacheTestImage), + function(){/* ignore errors */}); + break; + + case '2': // Step 2: Image has to be regenerated since it was modified + + // File is modifed so the cached version should be updated + fs.createReadStream(path.join(imageDir, modifiedImage)).pipe( + fs.createWriteStream(path.join(imageDir, cacheTestImage))); + break; + + } + + res.redirect(redirectPath); +}); app.listen(3000); console.log("running on http://127.0.0.1:3000");