should = require('chai').should() SandboxedModule = require('sandboxed-module') assert = require('assert') path = require('path') sinon = require('sinon') modulePath = path.join __dirname, "../../../../app/js/Features/User/UserPagesController" expect = require("chai").expect describe "UserPagesController", -> beforeEach -> @settings = {} @user = _id:"kwjewkl" features:{} @UserLocator = findById: sinon.stub().callsArgWith(1, null, @user) @dropboxStatus = {} @DropboxHandler = getUserRegistrationStatus : sinon.stub().callsArgWith(1, null, @dropboxStatus) @UserPagesController = SandboxedModule.require modulePath, requires: "settings-sharelatex":@settings "logger-sharelatex": log:-> "./UserLocator": @UserLocator '../Dropbox/DropboxHandler': @DropboxHandler @req = query:{} session: user:@user @res = {} describe "registerPage", -> it "should render the register page", (done)-> @res.render = (page)=> page.should.equal "user/register" done() @UserPagesController.registerPage @req, @res it "should set the redirect", (done)-> redirect = "/go/here/please" @req.query.redir = redirect @res.render = (page, opts)=> opts.redir.should.equal redirect done() @UserPagesController.registerPage @req, @res it "should set sharedProjectData", (done)-> @req.query.project_name = "myProject" @req.query.user_first_name = "user_first_name_here" @res.render = (page, opts)=> opts.sharedProjectData.project_name.should.equal "myProject" opts.sharedProjectData.user_first_name.should.equal "user_first_name_here" done() @UserPagesController.registerPage @req, @res it "should set newTemplateData", (done)-> @req.session.templateData = templateName : "templateName" @res.render = (page, opts)=> opts.newTemplateData.templateName.should.equal "templateName" done() @UserPagesController.registerPage @req, @res it "should not set the newTemplateData if there is nothing in the session", (done)-> @res.render = (page, opts)=> assert.equal opts.newTemplateData.templateName, undefined done() @UserPagesController.registerPage @req, @res describe "loginForm", -> it "should render the login page", (done)-> @res.render = (page)=> page.should.equal "user/login" done() @UserPagesController.loginPage @req, @res it "should set the redirect", (done)-> redirect = "/go/here/please" @req.query.redir = redirect @res.render = (page, opts)=> opts.redir.should.equal redirect done() @UserPagesController.loginPage @req, @res describe "settingsPage", -> it "should render user/settings", (done)-> @res.render = (page)-> page.should.equal "user/settings" done() @UserPagesController.settingsPage @req, @res it "should send user", (done)-> @res.render = (page, opts)=> opts.user.should.equal @user done() @UserPagesController.settingsPage @req, @res