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
			after (done) ->
				@owner.defaultFeatures 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
			after (done) ->
				@owner.defaultFeatures 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()
