|
|
@@ -1,222 +1,222 @@
|
|
|
-# Client = require "./helpers/Client"
|
|
|
-# request = require "request"
|
|
|
-# require("chai").should()
|
|
|
-# sinon = require "sinon"
|
|
|
-# ClsiApp = require "./helpers/ClsiApp"
|
|
|
-
|
|
|
-# host = "localhost"
|
|
|
-
|
|
|
-# Server =
|
|
|
-# run: () ->
|
|
|
-# express = require "express"
|
|
|
-# app = express()
|
|
|
-
|
|
|
-# staticServer = express.static __dirname + "/../fixtures/"
|
|
|
-# app.get "/:random_id/*", (req, res, next) =>
|
|
|
-# @getFile(req.url)
|
|
|
-# req.url = "/" + req.params[0]
|
|
|
-# staticServer(req, res, next)
|
|
|
-
|
|
|
-# app.listen 31415, host
|
|
|
-
|
|
|
-# getFile: () ->
|
|
|
-
|
|
|
-# randomId: () ->
|
|
|
-# Math.random().toString(16).slice(2)
|
|
|
-
|
|
|
-# Server.run()
|
|
|
-
|
|
|
-# describe "Url Caching", ->
|
|
|
-# describe "Downloading an image for the first time", ->
|
|
|
-# before (done) ->
|
|
|
-# @project_id = Client.randomId()
|
|
|
-# @file = "#{Server.randomId()}/lion.png"
|
|
|
-# @request =
|
|
|
-# resources: [{
|
|
|
-# path: "main.tex"
|
|
|
-# content: '''
|
|
|
-# \\documentclass{article}
|
|
|
-# \\usepackage{graphicx}
|
|
|
-# \\begin{document}
|
|
|
-# \\includegraphics{lion.png}
|
|
|
-# \\end{document}
|
|
|
-# '''
|
|
|
-# }, {
|
|
|
-# path: "lion.png"
|
|
|
-# url: "http://#{host}:31415/#{@file}"
|
|
|
-# }]
|
|
|
-
|
|
|
-# sinon.spy Server, "getFile"
|
|
|
-# ClsiApp.ensureRunning =>
|
|
|
-# Client.compile @project_id, @request, (@error, @res, @body) => done()
|
|
|
-
|
|
|
-# afterEach ->
|
|
|
-# Server.getFile.restore()
|
|
|
-
|
|
|
-# it "should download the image", ->
|
|
|
-# Server.getFile
|
|
|
-# .calledWith("/" + @file)
|
|
|
-# .should.equal true
|
|
|
+Client = require "./helpers/Client"
|
|
|
+request = require "request"
|
|
|
+require("chai").should()
|
|
|
+sinon = require "sinon"
|
|
|
+ClsiApp = require "./helpers/ClsiApp"
|
|
|
+
|
|
|
+host = "localhost"
|
|
|
+
|
|
|
+Server =
|
|
|
+ run: () ->
|
|
|
+ express = require "express"
|
|
|
+ app = express()
|
|
|
+
|
|
|
+ staticServer = express.static __dirname + "/../fixtures/"
|
|
|
+ app.get "/:random_id/*", (req, res, next) =>
|
|
|
+ @getFile(req.url)
|
|
|
+ req.url = "/" + req.params[0]
|
|
|
+ staticServer(req, res, next)
|
|
|
+
|
|
|
+ app.listen 31415, host
|
|
|
+
|
|
|
+ getFile: () ->
|
|
|
+
|
|
|
+ randomId: () ->
|
|
|
+ Math.random().toString(16).slice(2)
|
|
|
+
|
|
|
+Server.run()
|
|
|
+
|
|
|
+describe "Url Caching", ->
|
|
|
+ describe "Downloading an image for the first time", ->
|
|
|
+ before (done) ->
|
|
|
+ @project_id = Client.randomId()
|
|
|
+ @file = "#{Server.randomId()}/lion.png"
|
|
|
+ @request =
|
|
|
+ resources: [{
|
|
|
+ path: "main.tex"
|
|
|
+ content: '''
|
|
|
+ \\documentclass{article}
|
|
|
+ \\usepackage{graphicx}
|
|
|
+ \\begin{document}
|
|
|
+ \\includegraphics{lion.png}
|
|
|
+ \\end{document}
|
|
|
+ '''
|
|
|
+ }, {
|
|
|
+ path: "lion.png"
|
|
|
+ url: "http://#{host}:31415/#{@file}"
|
|
|
+ }]
|
|
|
+
|
|
|
+ sinon.spy Server, "getFile"
|
|
|
+ ClsiApp.ensureRunning =>
|
|
|
+ Client.compile @project_id, @request, (@error, @res, @body) => done()
|
|
|
+
|
|
|
+ afterEach ->
|
|
|
+ Server.getFile.restore()
|
|
|
+
|
|
|
+ it "should download the image", ->
|
|
|
+ Server.getFile
|
|
|
+ .calledWith("/" + @file)
|
|
|
+ .should.equal true
|
|
|
|
|
|
-# describe "When an image is in the cache and the last modified date is unchanged", ->
|
|
|
-# before (done) ->
|
|
|
-# @project_id = Client.randomId()
|
|
|
-# @file = "#{Server.randomId()}/lion.png"
|
|
|
-# @request =
|
|
|
-# resources: [{
|
|
|
-# path: "main.tex"
|
|
|
-# content: '''
|
|
|
-# \\documentclass{article}
|
|
|
-# \\usepackage{graphicx}
|
|
|
-# \\begin{document}
|
|
|
-# \\includegraphics{lion.png}
|
|
|
-# \\end{document}
|
|
|
-# '''
|
|
|
-# }, @image_resource = {
|
|
|
-# path: "lion.png"
|
|
|
-# url: "http://#{host}:31415/#{@file}"
|
|
|
-# modified: Date.now()
|
|
|
-# }]
|
|
|
-
|
|
|
-# Client.compile @project_id, @request, (@error, @res, @body) =>
|
|
|
-# sinon.spy Server, "getFile"
|
|
|
-# Client.compile @project_id, @request, (@error, @res, @body) =>
|
|
|
-# done()
|
|
|
-
|
|
|
-# after ->
|
|
|
-# Server.getFile.restore()
|
|
|
-
|
|
|
-# it "should not download the image again", ->
|
|
|
-# Server.getFile.called.should.equal false
|
|
|
-
|
|
|
-# describe "When an image is in the cache and the last modified date is advanced", ->
|
|
|
-# before (done) ->
|
|
|
-# @project_id = Client.randomId()
|
|
|
-# @file = "#{Server.randomId()}/lion.png"
|
|
|
-# @request =
|
|
|
-# resources: [{
|
|
|
-# path: "main.tex"
|
|
|
-# content: '''
|
|
|
-# \\documentclass{article}
|
|
|
-# \\usepackage{graphicx}
|
|
|
-# \\begin{document}
|
|
|
-# \\includegraphics{lion.png}
|
|
|
-# \\end{document}
|
|
|
-# '''
|
|
|
-# }, @image_resource = {
|
|
|
-# path: "lion.png"
|
|
|
-# url: "http://#{host}:31415/#{@file}"
|
|
|
-# modified: @last_modified = Date.now()
|
|
|
-# }]
|
|
|
-
|
|
|
-# Client.compile @project_id, @request, (@error, @res, @body) =>
|
|
|
-# sinon.spy Server, "getFile"
|
|
|
-# @image_resource.modified = new Date(@last_modified + 3000)
|
|
|
-# Client.compile @project_id, @request, (@error, @res, @body) =>
|
|
|
-# done()
|
|
|
-
|
|
|
-# afterEach ->
|
|
|
-# Server.getFile.restore()
|
|
|
-
|
|
|
-# it "should download the image again", ->
|
|
|
-# Server.getFile.called.should.equal true
|
|
|
-
|
|
|
-# describe "When an image is in the cache and the last modified date is further in the past", ->
|
|
|
-# before (done) ->
|
|
|
-# @project_id = Client.randomId()
|
|
|
-# @file = "#{Server.randomId()}/lion.png"
|
|
|
-# @request =
|
|
|
-# resources: [{
|
|
|
-# path: "main.tex"
|
|
|
-# content: '''
|
|
|
-# \\documentclass{article}
|
|
|
-# \\usepackage{graphicx}
|
|
|
-# \\begin{document}
|
|
|
-# \\includegraphics{lion.png}
|
|
|
-# \\end{document}
|
|
|
-# '''
|
|
|
-# }, @image_resource = {
|
|
|
-# path: "lion.png"
|
|
|
-# url: "http://#{host}:31415/#{@file}"
|
|
|
-# modified: @last_modified = Date.now()
|
|
|
-# }]
|
|
|
-
|
|
|
-# Client.compile @project_id, @request, (@error, @res, @body) =>
|
|
|
-# sinon.spy Server, "getFile"
|
|
|
-# @image_resource.modified = new Date(@last_modified - 3000)
|
|
|
-# Client.compile @project_id, @request, (@error, @res, @body) =>
|
|
|
-# done()
|
|
|
-
|
|
|
-# afterEach ->
|
|
|
-# Server.getFile.restore()
|
|
|
-
|
|
|
-# it "should not download the image again", ->
|
|
|
-# Server.getFile.called.should.equal false
|
|
|
-
|
|
|
-# describe "When an image is in the cache and the last modified date is not specified", ->
|
|
|
-# before (done) ->
|
|
|
-# @project_id = Client.randomId()
|
|
|
-# @file = "#{Server.randomId()}/lion.png"
|
|
|
-# @request =
|
|
|
-# resources: [{
|
|
|
-# path: "main.tex"
|
|
|
-# content: '''
|
|
|
-# \\documentclass{article}
|
|
|
-# \\usepackage{graphicx}
|
|
|
-# \\begin{document}
|
|
|
-# \\includegraphics{lion.png}
|
|
|
-# \\end{document}
|
|
|
-# '''
|
|
|
-# }, @image_resource = {
|
|
|
-# path: "lion.png"
|
|
|
-# url: "http://#{host}:31415/#{@file}"
|
|
|
-# modified: @last_modified = Date.now()
|
|
|
-# }]
|
|
|
-
|
|
|
-# Client.compile @project_id, @request, (@error, @res, @body) =>
|
|
|
-# sinon.spy Server, "getFile"
|
|
|
-# delete @image_resource.modified
|
|
|
-# Client.compile @project_id, @request, (@error, @res, @body) =>
|
|
|
-# done()
|
|
|
-
|
|
|
-# afterEach ->
|
|
|
-# Server.getFile.restore()
|
|
|
-
|
|
|
-# it "should download the image again", ->
|
|
|
-# Server.getFile.called.should.equal true
|
|
|
+ describe "When an image is in the cache and the last modified date is unchanged", ->
|
|
|
+ before (done) ->
|
|
|
+ @project_id = Client.randomId()
|
|
|
+ @file = "#{Server.randomId()}/lion.png"
|
|
|
+ @request =
|
|
|
+ resources: [{
|
|
|
+ path: "main.tex"
|
|
|
+ content: '''
|
|
|
+ \\documentclass{article}
|
|
|
+ \\usepackage{graphicx}
|
|
|
+ \\begin{document}
|
|
|
+ \\includegraphics{lion.png}
|
|
|
+ \\end{document}
|
|
|
+ '''
|
|
|
+ }, @image_resource = {
|
|
|
+ path: "lion.png"
|
|
|
+ url: "http://#{host}:31415/#{@file}"
|
|
|
+ modified: Date.now()
|
|
|
+ }]
|
|
|
+
|
|
|
+ Client.compile @project_id, @request, (@error, @res, @body) =>
|
|
|
+ sinon.spy Server, "getFile"
|
|
|
+ Client.compile @project_id, @request, (@error, @res, @body) =>
|
|
|
+ done()
|
|
|
+
|
|
|
+ after ->
|
|
|
+ Server.getFile.restore()
|
|
|
+
|
|
|
+ it "should not download the image again", ->
|
|
|
+ Server.getFile.called.should.equal false
|
|
|
+
|
|
|
+ describe "When an image is in the cache and the last modified date is advanced", ->
|
|
|
+ before (done) ->
|
|
|
+ @project_id = Client.randomId()
|
|
|
+ @file = "#{Server.randomId()}/lion.png"
|
|
|
+ @request =
|
|
|
+ resources: [{
|
|
|
+ path: "main.tex"
|
|
|
+ content: '''
|
|
|
+ \\documentclass{article}
|
|
|
+ \\usepackage{graphicx}
|
|
|
+ \\begin{document}
|
|
|
+ \\includegraphics{lion.png}
|
|
|
+ \\end{document}
|
|
|
+ '''
|
|
|
+ }, @image_resource = {
|
|
|
+ path: "lion.png"
|
|
|
+ url: "http://#{host}:31415/#{@file}"
|
|
|
+ modified: @last_modified = Date.now()
|
|
|
+ }]
|
|
|
+
|
|
|
+ Client.compile @project_id, @request, (@error, @res, @body) =>
|
|
|
+ sinon.spy Server, "getFile"
|
|
|
+ @image_resource.modified = new Date(@last_modified + 3000)
|
|
|
+ Client.compile @project_id, @request, (@error, @res, @body) =>
|
|
|
+ done()
|
|
|
+
|
|
|
+ afterEach ->
|
|
|
+ Server.getFile.restore()
|
|
|
+
|
|
|
+ it "should download the image again", ->
|
|
|
+ Server.getFile.called.should.equal true
|
|
|
+
|
|
|
+ describe "When an image is in the cache and the last modified date is further in the past", ->
|
|
|
+ before (done) ->
|
|
|
+ @project_id = Client.randomId()
|
|
|
+ @file = "#{Server.randomId()}/lion.png"
|
|
|
+ @request =
|
|
|
+ resources: [{
|
|
|
+ path: "main.tex"
|
|
|
+ content: '''
|
|
|
+ \\documentclass{article}
|
|
|
+ \\usepackage{graphicx}
|
|
|
+ \\begin{document}
|
|
|
+ \\includegraphics{lion.png}
|
|
|
+ \\end{document}
|
|
|
+ '''
|
|
|
+ }, @image_resource = {
|
|
|
+ path: "lion.png"
|
|
|
+ url: "http://#{host}:31415/#{@file}"
|
|
|
+ modified: @last_modified = Date.now()
|
|
|
+ }]
|
|
|
+
|
|
|
+ Client.compile @project_id, @request, (@error, @res, @body) =>
|
|
|
+ sinon.spy Server, "getFile"
|
|
|
+ @image_resource.modified = new Date(@last_modified - 3000)
|
|
|
+ Client.compile @project_id, @request, (@error, @res, @body) =>
|
|
|
+ done()
|
|
|
+
|
|
|
+ afterEach ->
|
|
|
+ Server.getFile.restore()
|
|
|
+
|
|
|
+ it "should not download the image again", ->
|
|
|
+ Server.getFile.called.should.equal false
|
|
|
+
|
|
|
+ describe "When an image is in the cache and the last modified date is not specified", ->
|
|
|
+ before (done) ->
|
|
|
+ @project_id = Client.randomId()
|
|
|
+ @file = "#{Server.randomId()}/lion.png"
|
|
|
+ @request =
|
|
|
+ resources: [{
|
|
|
+ path: "main.tex"
|
|
|
+ content: '''
|
|
|
+ \\documentclass{article}
|
|
|
+ \\usepackage{graphicx}
|
|
|
+ \\begin{document}
|
|
|
+ \\includegraphics{lion.png}
|
|
|
+ \\end{document}
|
|
|
+ '''
|
|
|
+ }, @image_resource = {
|
|
|
+ path: "lion.png"
|
|
|
+ url: "http://#{host}:31415/#{@file}"
|
|
|
+ modified: @last_modified = Date.now()
|
|
|
+ }]
|
|
|
+
|
|
|
+ Client.compile @project_id, @request, (@error, @res, @body) =>
|
|
|
+ sinon.spy Server, "getFile"
|
|
|
+ delete @image_resource.modified
|
|
|
+ Client.compile @project_id, @request, (@error, @res, @body) =>
|
|
|
+ done()
|
|
|
+
|
|
|
+ afterEach ->
|
|
|
+ Server.getFile.restore()
|
|
|
+
|
|
|
+ it "should download the image again", ->
|
|
|
+ Server.getFile.called.should.equal true
|
|
|
|
|
|
-# describe "After clearing the cache", ->
|
|
|
-# before (done) ->
|
|
|
-# @project_id = Client.randomId()
|
|
|
-# @file = "#{Server.randomId()}/lion.png"
|
|
|
-# @request =
|
|
|
-# resources: [{
|
|
|
-# path: "main.tex"
|
|
|
-# content: '''
|
|
|
-# \\documentclass{article}
|
|
|
-# \\usepackage{graphicx}
|
|
|
-# \\begin{document}
|
|
|
-# \\includegraphics{lion.png}
|
|
|
-# \\end{document}
|
|
|
-# '''
|
|
|
-# }, @image_resource = {
|
|
|
-# path: "lion.png"
|
|
|
-# url: "http://#{host}:31415/#{@file}"
|
|
|
-# modified: @last_modified = Date.now()
|
|
|
-# }]
|
|
|
-
|
|
|
-# Client.compile @project_id, @request, (error) =>
|
|
|
-# throw error if error?
|
|
|
-# Client.clearCache @project_id, (error, res, body) =>
|
|
|
-# throw error if error?
|
|
|
-# sinon.spy Server, "getFile"
|
|
|
-# Client.compile @project_id, @request, (@error, @res, @body) =>
|
|
|
-# done()
|
|
|
-
|
|
|
-# afterEach ->
|
|
|
-# Server.getFile.restore()
|
|
|
-
|
|
|
-# it "should download the image again", ->
|
|
|
-# Server.getFile.called.should.equal true
|
|
|
+ describe "After clearing the cache", ->
|
|
|
+ before (done) ->
|
|
|
+ @project_id = Client.randomId()
|
|
|
+ @file = "#{Server.randomId()}/lion.png"
|
|
|
+ @request =
|
|
|
+ resources: [{
|
|
|
+ path: "main.tex"
|
|
|
+ content: '''
|
|
|
+ \\documentclass{article}
|
|
|
+ \\usepackage{graphicx}
|
|
|
+ \\begin{document}
|
|
|
+ \\includegraphics{lion.png}
|
|
|
+ \\end{document}
|
|
|
+ '''
|
|
|
+ }, @image_resource = {
|
|
|
+ path: "lion.png"
|
|
|
+ url: "http://#{host}:31415/#{@file}"
|
|
|
+ modified: @last_modified = Date.now()
|
|
|
+ }]
|
|
|
+
|
|
|
+ Client.compile @project_id, @request, (error) =>
|
|
|
+ throw error if error?
|
|
|
+ Client.clearCache @project_id, (error, res, body) =>
|
|
|
+ throw error if error?
|
|
|
+ sinon.spy Server, "getFile"
|
|
|
+ Client.compile @project_id, @request, (@error, @res, @body) =>
|
|
|
+ done()
|
|
|
+
|
|
|
+ afterEach ->
|
|
|
+ Server.getFile.restore()
|
|
|
+
|
|
|
+ it "should download the image again", ->
|
|
|
+ Server.getFile.called.should.equal true
|
|
|
|
|
|
|