_G.spy = spy local mock_env = require("spec.env_mock") describe("smr cacheing",function() setup(mock_env.setup) teardown(mock_env.teardown) it("caches a page if the page is requested twice #working",function() local read_get = require("endpoints.read_get") local cache = require("cache") renderspy = spy.on(cache,"render") configure() local req = { method = "GET", path = "/a", args = {}, host = "test.host" } assert.spy(renderspy).called(0) read_get(req) assert.spy(renderspy).called(1) read_get(req) assert.spy(renderspy).called(2) for row in cache.cache:rows("SELECT COUNT(*) FROM cache") do assert(row[1] == 1, string.format( "Exepected only one cache entry after" .. "calling test.host/a 2 times " .. ", but got %d rows.", row[1] )) end end) it("does not cache the page if the user is logged in", function() local read_get = require("endpoints.read_get") local cache = require("cache") renderspy = spy.on(cache,"render") configure() error("TODO: complete") end) it("caches one page for domain/id and author.domain/id",function() local read_get = require("endpoints.read_get") local cache = require("cache") configure() local req_m = {__index = { method = "GET", path = "/a", args = {} }} local base_host = {host="test.host"} local base_req = setmetatable({host="test.host"},req_m) read_get(base_req) local user_req = setmetatable({host="admin.test.host"},req_m) read_get(user_req) for row in cache.cache:rows("SELECT COUNT(*) FROM cache") do assert(row[1] == 1, string.format( "Exepected only one cache entry for" .. "'test.host/a' and 'admin.test.host/a'" .. ", but got %d rows.", row[1] )) end end) it("detours configure",function() local s = {} local c = false local oldconfigure = configure --local index_get = require("endpoints.index_get") --configure(s) --assert(c) end) describe("author home page",function() it("lists all stories by that author",function() error("TODO") end) end) end)