Add unit test to cover project features.

This commit is contained in:
Shane Kilkelly 2017-09-01 13:28:11 +01:00
parent 3d0268a486
commit c170de7a4f
2 changed files with 85 additions and 0 deletions

View file

@ -0,0 +1,57 @@
expect = require("chai").expect
async = require("async")
User = require "./helpers/User"
request = require "./helpers/request"
settings = require "settings-sharelatex"
joinProject = (user_id, project_id, callback) ->
request.post {
url: "/project/#{project_id}/join"
qs: {user_id}
auth:
user: settings.apis.web.user
pass: settings.apis.web.pass
sendImmediately: true
json: true
jar: false
}, callback
describe "ProjectFeatures", ->
before (done) ->
@timeout(90000)
@owner = new User()
async.series [
(cb) => @owner.login cb
], done
describe "with private project", ->
before (done) ->
@owner.createProject "private-project", (error, project_id) =>
return done(error) if error?
@project_id = project_id
done()
describe "with an upgraded account", ->
before (done) ->
@owner.upgradeFeatures done
it "should have premium features", (done) ->
joinProject @owner._id, @project_id, (error, response, body) ->
expect(body.project.features.compileGroup).to.equal "priority"
expect(body.project.features.versioning).to.equal true
expect(body.project.features.templates).to.equal true
expect(body.project.features.dropbox).to.equal true
done()
describe "with an basic account", ->
before (done) ->
@owner.downgradeFeatures done
it "should have basic features", (done) ->
joinProject @owner._id, @project_id, (error, response, body) ->
expect(body.project.features.compileGroup).to.equal "standard"
expect(body.project.features.versioning).to.equal false
expect(body.project.features.templates).to.equal false
expect(body.project.features.dropbox).to.equal false
done()

View file

@ -51,6 +51,34 @@ class User
ensure_admin: (callback = (error) ->) ->
db.users.update {_id: ObjectId(@id)}, { $set: { isAdmin: true }}, callback
upgradeFeatures: (callback = (error) -> ) ->
features = {
collaborators: -1 # Infinite
versioning: true
dropbox:true
compileTimeout: 60
compileGroup:"priority"
templates: true
references: true
trackChanges: true
trackChangesVisible: true
}
db.users.update {_id: ObjectId(@id)}, { $set: { features: features }}, callback
downgradeFeatures: (callback = (error) -> ) ->
features = {
collaborators: 1
versioning: false
dropbox:false
compileTimeout: 60
compileGroup:"standard"
templates: false
references: false
trackChanges: false
trackChangesVisible: false
}
db.users.update {_id: ObjectId(@id)}, { $set: { features: features }}, callback
createProject: (name, callback = (error, project_id) ->) ->
@request.post {
url: "/project/new",