UNPKG

eff

Version:

An extensible effect monad based on the freer monad

87 lines (75 loc) 9.57 kB
"use strict"; var _ava = _interopRequireDefault(require("ava")); var _fs = _interopRequireDefault(require("fs")); var _path = _interopRequireDefault(require("path")); var _eff = require("./eff"); var _fileSystem = require("./fileSystem"); var _testUtils = require("./testUtils.js"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } _ava.default.cb("Local File System – Read file", function (t) { var a = "Hello, World! I'm reading!"; var fileName = "./helloWorldReading.txt"; var application = (0, _fileSystem.readFile)(fileName); (0, _testUtils.tempDirectory)(function (err, directory) { t.is(null, err); _fs.default.writeFile(_path.default.resolve(directory, fileName), a, {}, function (err) { t.is(null, err); (0, _eff.run)([(0, _fileSystem.interpretLocalFileSystem)(directory)])(function (b) { t.is(a, b); t.end(); })(application); }); }); }); _ava.default.cb("Local File System – Write file", function (t) { var a = "Hello, World! I'm writing!"; var fileName = "./helloWorldWriting.txt"; var application = (0, _fileSystem.writeFile)(fileName)(a); (0, _testUtils.tempDirectory)(function (err, directory) { t.is(null, err); (0, _eff.run)([(0, _fileSystem.interpretLocalFileSystem)(directory)])(function () { _fs.default.readFile(_path.default.resolve(directory, fileName), "utf8", function (err, b) { t.is(null, err); t.is(b, a); t.end(); }); })(application); }); }); _ava.default.cb("Mock File System – Read file", function (t) { var a = "Hello, World! I'm writing!"; var fileName = "./helloWorldWriting.txt"; var directory = "/directory"; var application = (0, _fileSystem.readFile)(fileName); var fileSystem = { "/directory/helloWorldWriting.txt": a }; (0, _eff.run)([(0, _fileSystem.interpretMockFileSystem)({ fileSystemRoot: directory, startingFileSystem: fileSystem, onUpdate: function onUpdate(newFileSystem) { fileSystem = newFileSystem; } })])(function (b) { t.is(b, a); t.end(); })(application); }); _ava.default.cb("Mock File System – Write file", function (t) { var a = "Hello, World! I'm writing!"; var fileName = "./helloWorldWriting.txt"; var directory = "/directory"; var application = (0, _fileSystem.writeFile)(fileName)(a); var fileSystem = {}; (0, _eff.run)([(0, _fileSystem.interpretMockFileSystem)({ fileSystemRoot: directory, startingFileSystem: fileSystem, onUpdate: function onUpdate(newFileSystem) { fileSystem = newFileSystem; } })])(function () { t.is(fileSystem["/directory/helloWorldWriting.txt"], a); t.end(); })(application); }); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NvdXJjZXMvZmlsZVN5c3RlbS50ZXN0LmpzIl0sIm5hbWVzIjpbInRlc3QiLCJjYiIsInQiLCJhIiwiZmlsZU5hbWUiLCJhcHBsaWNhdGlvbiIsImVyciIsImRpcmVjdG9yeSIsImlzIiwiZnMiLCJ3cml0ZUZpbGUiLCJwYXRoIiwicmVzb2x2ZSIsImIiLCJlbmQiLCJyZWFkRmlsZSIsImZpbGVTeXN0ZW0iLCJmaWxlU3lzdGVtUm9vdCIsInN0YXJ0aW5nRmlsZVN5c3RlbSIsIm9uVXBkYXRlIiwibmV3RmlsZVN5c3RlbSJdLCJtYXBwaW5ncyI6Ijs7QUFFQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFNQTs7OztBQUVBQSxhQUFLQyxFQUFMLENBQVEsK0JBQVIsRUFBeUMsVUFBQUMsQ0FBQyxFQUFJO0FBQzdDLE1BQU1DLENBQUMsR0FBRyw0QkFBVjtBQUNBLE1BQU1DLFFBQVEsR0FBRyx5QkFBakI7QUFFQSxNQUFNQyxXQUFXLEdBQUcsMEJBQVNELFFBQVQsQ0FBcEI7QUFFQSxnQ0FBYyxVQUFDRSxHQUFELEVBQU1DLFNBQU4sRUFBb0I7QUFDakNMLElBQUFBLENBQUMsQ0FBQ00sRUFBRixDQUFLLElBQUwsRUFBV0YsR0FBWDs7QUFFQUcsZ0JBQUdDLFNBQUgsQ0FBYUMsY0FBS0MsT0FBTCxDQUFhTCxTQUFiLEVBQXdCSCxRQUF4QixDQUFiLEVBQWdERCxDQUFoRCxFQUFtRCxFQUFuRCxFQUF1RCxVQUFBRyxHQUFHLEVBQUk7QUFDN0RKLE1BQUFBLENBQUMsQ0FBQ00sRUFBRixDQUFLLElBQUwsRUFBV0YsR0FBWDtBQUVBLG9CQUFJLENBQUMsMENBQXlCQyxTQUF6QixDQUFELENBQUosRUFBMkMsVUFBQU0sQ0FBQyxFQUFJO0FBQy9DWCxRQUFBQSxDQUFDLENBQUNNLEVBQUYsQ0FBS0wsQ0FBTCxFQUFRVSxDQUFSO0FBQ0FYLFFBQUFBLENBQUMsQ0FBQ1ksR0FBRjtBQUNBLE9BSEQsRUFHR1QsV0FISDtBQUlBLEtBUEQ7QUFRQSxHQVhEO0FBWUEsQ0FsQkQ7O0FBb0JBTCxhQUFLQyxFQUFMLENBQVEsZ0NBQVIsRUFBMEMsVUFBQUMsQ0FBQyxFQUFJO0FBQzlDLE1BQU1DLENBQUMsR0FBRyw0QkFBVjtBQUNBLE1BQU1DLFFBQVEsR0FBRyx5QkFBakI7QUFFQSxNQUFNQyxXQUFXLEdBQUcsMkJBQVVELFFBQVYsRUFBb0JELENBQXBCLENBQXBCO0FBRUEsZ0NBQWMsVUFBQ0csR0FBRCxFQUFNQyxTQUFOLEVBQW9CO0FBQ2pDTCxJQUFBQSxDQUFDLENBQUNNLEVBQUYsQ0FBSyxJQUFMLEVBQVdGLEdBQVg7QUFFQSxrQkFBSSxDQUFDLDBDQUF5QkMsU0FBekIsQ0FBRCxDQUFKLEVBQTJDLFlBQU07QUFDaERFLGtCQUFHTSxRQUFILENBQVlKLGNBQUtDLE9BQUwsQ0FBYUwsU0FBYixFQUF3QkgsUUFBeEIsQ0FBWixFQUErQyxNQUEvQyxFQUF1RCxVQUFDRSxHQUFELEVBQU1PLENBQU4sRUFBWTtBQUNsRVgsUUFBQUEsQ0FBQyxDQUFDTSxFQUFGLENBQUssSUFBTCxFQUFXRixHQUFYO0FBRUFKLFFBQUFBLENBQUMsQ0FBQ00sRUFBRixDQUFLSyxDQUFMLEVBQVFWLENBQVI7QUFDQUQsUUFBQUEsQ0FBQyxDQUFDWSxHQUFGO0FBQ0EsT0FMRDtBQU1BLEtBUEQsRUFPR1QsV0FQSDtBQVFBLEdBWEQ7QUFZQSxDQWxCRDs7QUFvQkFMLGFBQUtDLEVBQUwsQ0FBUSw4QkFBUixFQUF3QyxVQUFBQyxDQUFDLEVBQUk7QUFDNUMsTUFBTUMsQ0FBQyxHQUFHLDRCQUFWO0FBQ0EsTUFBTUMsUUFBUSxHQUFHLHlCQUFqQjtBQUNBLE1BQU1HLFNBQVMsR0FBRyxZQUFsQjtBQUVBLE1BQU1GLFdBQVcsR0FBRywwQkFBU0QsUUFBVCxDQUFwQjtBQUVBLE1BQUlZLFVBQVUsR0FBRztBQUFFLHdDQUFvQ2I7QUFBdEMsR0FBakI7QUFFQSxnQkFBSSxDQUNILHlDQUF3QjtBQUN2QmMsSUFBQUEsY0FBYyxFQUFFVixTQURPO0FBRXZCVyxJQUFBQSxrQkFBa0IsRUFBRUYsVUFGRztBQUd2QkcsSUFBQUEsUUFBUSxFQUFFLGtCQUFBQyxhQUFhLEVBQUk7QUFDMUJKLE1BQUFBLFVBQVUsR0FBR0ksYUFBYjtBQUNBO0FBTHNCLEdBQXhCLENBREcsQ0FBSixFQVFHLFVBQUFQLENBQUMsRUFBSTtBQUNQWCxJQUFBQSxDQUFDLENBQUNNLEVBQUYsQ0FBS0ssQ0FBTCxFQUFRVixDQUFSO0FBQ0FELElBQUFBLENBQUMsQ0FBQ1ksR0FBRjtBQUNBLEdBWEQsRUFXR1QsV0FYSDtBQVlBLENBckJEOztBQXVCQUwsYUFBS0MsRUFBTCxDQUFRLCtCQUFSLEVBQXlDLFVBQUFDLENBQUMsRUFBSTtBQUM3QyxNQUFNQyxDQUFDLEdBQUcsNEJBQVY7QUFDQSxNQUFNQyxRQUFRLEdBQUcseUJBQWpCO0FBQ0EsTUFBTUcsU0FBUyxHQUFHLFlBQWxCO0FBRUEsTUFBTUYsV0FBVyxHQUFHLDJCQUFVRCxRQUFWLEVBQW9CRCxDQUFwQixDQUFwQjtBQUVBLE1BQUlhLFVBQWdDLEdBQUcsRUFBdkM7QUFFQSxnQkFBSSxDQUNILHlDQUF3QjtBQUN2QkMsSUFBQUEsY0FBYyxFQUFFVixTQURPO0FBRXZCVyxJQUFBQSxrQkFBa0IsRUFBRUYsVUFGRztBQUd2QkcsSUFBQUEsUUFBUSxFQUFFLGtCQUFBQyxhQUFhLEVBQUk7QUFDMUJKLE1BQUFBLFVBQVUsR0FBR0ksYUFBYjtBQUNBO0FBTHNCLEdBQXhCLENBREcsQ0FBSixFQVFHLFlBQU07QUFDUmxCLElBQUFBLENBQUMsQ0FBQ00sRUFBRixDQUFLUSxVQUFVLENBQUMsa0NBQUQsQ0FBZixFQUFxRGIsQ0FBckQ7QUFDQUQsSUFBQUEsQ0FBQyxDQUFDWSxHQUFGO0FBQ0EsR0FYRCxFQVdHVCxXQVhIO0FBWUEsQ0FyQkQiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBAZmxvdyAqL1xuXG5pbXBvcnQgdGVzdCBmcm9tIFwiYXZhXCI7XG5pbXBvcnQgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5pbXBvcnQgeyBydW4gfSBmcm9tIFwiLi9lZmZcIjtcbmltcG9ydCB7XG5cdHJlYWRGaWxlLFxuXHR3cml0ZUZpbGUsXG5cdGludGVycHJldExvY2FsRmlsZVN5c3RlbSxcblx0aW50ZXJwcmV0TW9ja0ZpbGVTeXN0ZW0sXG59IGZyb20gXCIuL2ZpbGVTeXN0ZW1cIjtcbmltcG9ydCB7IHRlbXBEaXJlY3RvcnkgfSBmcm9tIFwiLi90ZXN0VXRpbHMuanNcIjtcblxudGVzdC5jYihcIkxvY2FsIEZpbGUgU3lzdGVtIOKAkyBSZWFkIGZpbGVcIiwgdCA9PiB7XG5cdGNvbnN0IGEgPSBcIkhlbGxvLCBXb3JsZCEgSSdtIHJlYWRpbmchXCI7XG5cdGNvbnN0IGZpbGVOYW1lID0gXCIuL2hlbGxvV29ybGRSZWFkaW5nLnR4dFwiO1xuXG5cdGNvbnN0IGFwcGxpY2F0aW9uID0gcmVhZEZpbGUoZmlsZU5hbWUpO1xuXG5cdHRlbXBEaXJlY3RvcnkoKGVyciwgZGlyZWN0b3J5KSA9PiB7XG5cdFx0dC5pcyhudWxsLCBlcnIpO1xuXG5cdFx0ZnMud3JpdGVGaWxlKHBhdGgucmVzb2x2ZShkaXJlY3RvcnksIGZpbGVOYW1lKSwgYSwge30sIGVyciA9PiB7XG5cdFx0XHR0LmlzKG51bGwsIGVycik7XG5cblx0XHRcdHJ1bihbaW50ZXJwcmV0TG9jYWxGaWxlU3lzdGVtKGRpcmVjdG9yeSldKShiID0+IHtcblx0XHRcdFx0dC5pcyhhLCBiKTtcblx0XHRcdFx0dC5lbmQoKTtcblx0XHRcdH0pKGFwcGxpY2F0aW9uKTtcblx0XHR9KTtcblx0fSk7XG59KTtcblxudGVzdC5jYihcIkxvY2FsIEZpbGUgU3lzdGVtIOKAkyBXcml0ZSBmaWxlXCIsIHQgPT4ge1xuXHRjb25zdCBhID0gXCJIZWxsbywgV29ybGQhIEknbSB3cml0aW5nIVwiO1xuXHRjb25zdCBmaWxlTmFtZSA9IFwiLi9oZWxsb1dvcmxkV3JpdGluZy50eHRcIjtcblxuXHRjb25zdCBhcHBsaWNhdGlvbiA9IHdyaXRlRmlsZShmaWxlTmFtZSkoYSk7XG5cblx0dGVtcERpcmVjdG9yeSgoZXJyLCBkaXJlY3RvcnkpID0+IHtcblx0XHR0LmlzKG51bGwsIGVycik7XG5cblx0XHRydW4oW2ludGVycHJldExvY2FsRmlsZVN5c3RlbShkaXJlY3RvcnkpXSkoKCkgPT4ge1xuXHRcdFx0ZnMucmVhZEZpbGUocGF0aC5yZXNvbHZlKGRpcmVjdG9yeSwgZmlsZU5hbWUpLCBcInV0ZjhcIiwgKGVyciwgYikgPT4ge1xuXHRcdFx0XHR0LmlzKG51bGwsIGVycik7XG5cblx0XHRcdFx0dC5pcyhiLCBhKTtcblx0XHRcdFx0dC5lbmQoKTtcblx0XHRcdH0pO1xuXHRcdH0pKGFwcGxpY2F0aW9uKTtcblx0fSk7XG59KTtcblxudGVzdC5jYihcIk1vY2sgRmlsZSBTeXN0ZW0g4oCTIFJlYWQgZmlsZVwiLCB0ID0+IHtcblx0Y29uc3QgYSA9IFwiSGVsbG8sIFdvcmxkISBJJ20gd3JpdGluZyFcIjtcblx0Y29uc3QgZmlsZU5hbWUgPSBcIi4vaGVsbG9Xb3JsZFdyaXRpbmcudHh0XCI7XG5cdGNvbnN0IGRpcmVjdG9yeSA9IFwiL2RpcmVjdG9yeVwiO1xuXG5cdGNvbnN0IGFwcGxpY2F0aW9uID0gcmVhZEZpbGUoZmlsZU5hbWUpO1xuXG5cdGxldCBmaWxlU3lzdGVtID0geyBcIi9kaXJlY3RvcnkvaGVsbG9Xb3JsZFdyaXRpbmcudHh0XCI6IGEgfTtcblxuXHRydW4oW1xuXHRcdGludGVycHJldE1vY2tGaWxlU3lzdGVtKHtcblx0XHRcdGZpbGVTeXN0ZW1Sb290OiBkaXJlY3RvcnksXG5cdFx0XHRzdGFydGluZ0ZpbGVTeXN0ZW06IGZpbGVTeXN0ZW0sXG5cdFx0XHRvblVwZGF0ZTogbmV3RmlsZVN5c3RlbSA9PiB7XG5cdFx0XHRcdGZpbGVTeXN0ZW0gPSBuZXdGaWxlU3lzdGVtO1xuXHRcdFx0fSxcblx0XHR9KSxcblx0XSkoYiA9PiB7XG5cdFx0dC5pcyhiLCBhKTtcblx0XHR0LmVuZCgpO1xuXHR9KShhcHBsaWNhdGlvbik7XG59KTtcblxudGVzdC5jYihcIk1vY2sgRmlsZSBTeXN0ZW0g4oCTIFdyaXRlIGZpbGVcIiwgdCA9PiB7XG5cdGNvbnN0IGEgPSBcIkhlbGxvLCBXb3JsZCEgSSdtIHdyaXRpbmchXCI7XG5cdGNvbnN0IGZpbGVOYW1lID0gXCIuL2hlbGxvV29ybGRXcml0aW5nLnR4dFwiO1xuXHRjb25zdCBkaXJlY3RvcnkgPSBcIi9kaXJlY3RvcnlcIjtcblxuXHRjb25zdCBhcHBsaWNhdGlvbiA9IHdyaXRlRmlsZShmaWxlTmFtZSkoYSk7XG5cblx0bGV0IGZpbGVTeXN0ZW06IHsgW3N0cmluZ106IHN0cmluZyB9ID0ge307XG5cblx0cnVuKFtcblx0XHRpbnRlcnByZXRNb2NrRmlsZVN5c3RlbSh7XG5cdFx0XHRmaWxlU3lzdGVtUm9vdDogZGlyZWN0b3J5LFxuXHRcdFx0c3RhcnRpbmdGaWxlU3lzdGVtOiBmaWxlU3lzdGVtLFxuXHRcdFx0b25VcGRhdGU6IG5ld0ZpbGVTeXN0ZW0gPT4ge1xuXHRcdFx0XHRmaWxlU3lzdGVtID0gbmV3RmlsZVN5c3RlbTtcblx0XHRcdH0sXG5cdFx0fSksXG5cdF0pKCgpID0+IHtcblx0XHR0LmlzKGZpbGVTeXN0ZW1bXCIvZGlyZWN0b3J5L2hlbGxvV29ybGRXcml0aW5nLnR4dFwiXSwgYSk7XG5cdFx0dC5lbmQoKTtcblx0fSkoYXBwbGljYXRpb24pO1xufSk7XG4iXX0=