# 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 "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