ensl_gathers/spec/user.js

181 lines
4.0 KiB
JavaScript

"use strict";
var helper = require("./helpers/index.js");
var User = helper.User;
var assert = require("chai").assert;
var Profile = helper.Profile;
var async = require("async");
var userCount = 0;
describe("User", () => {
var user, userAttributes;
before(() => {
userCount++;
userAttributes = {
id: userCount,
username: "FearLess90",
country: "CA",
time_zone: "Eastern Time (US & Canada)",
avatar: "/icons/" + userCount + ".png",
admin: false,
steam: {
url: "http://steamcommunity.com/profiles/76561198076460617",
nickname: "FearLess90"
},
bans: {
gather: false,
mute: false,
site: false
},
team: {
id: 622,
name: "National Gamers"
}
}
});
describe("#getSteamId", () => {
beforeEach(() => {
user = new User(userAttributes);
});
it ("returns steamid", () => {
assert.equal(user.getSteamId(), "STEAM_0:1:58097444");
});
it ("returns null if no steamid", () => {
user.steam.url = null;
assert.isNull(user.getSteamId());
});
});
describe("Abilities", () => {
describe("isChatAdmin", () => {
it ("returns true if admin", () => {
user.admin = true;
user.moderator = false;
assert.isTrue(user.isChatAdmin());
});
it ("returns true if moderator", () => {
user.admin = false;
user.moderator = true;
assert.isTrue(user.isChatAdmin());
});
it ("returns true if neither admin nor moderator", () => {
user.admin = false;
user.moderator = false;
assert.isFalse(user.isChatAdmin());
});
});
describe("isGatherAdmin", () => {
it ("returns true if admin", () => {
user.admin = true;
user.moderator = false;
assert.isTrue(user.isGatherAdmin());
});
it ("returns true if moderator", () => {
user.admin = false;
user.moderator = true;
assert.isTrue(user.isGatherAdmin());
});
it ("returns true if neither admin nor moderator", () => {
user.admin = false;
user.moderator = false;
assert.isFalse(user.isGatherAdmin());
});
});
describe("isUserAdmin", () => {
it ("returns true if admin", () => {
user.admin = true;
user.moderator = false;
assert.isTrue(user.isUserAdmin());
});
it ("returns false if moderator", () => {
user.admin = false;
user.moderator = true;
assert.isFalse(user.isUserAdmin());
});
it ("returns true if neither admin nor moderator", () => {
user.admin = false;
user.moderator = false;
assert.isFalse(user.isUserAdmin());
});
});
});
describe("#updateProfile", () => {
var profile, user;
beforeEach(done => {
user = helper.createUser();
Profile.create({
userId: user.id
}, (error, result) => {
if (error) return done(error);
profile = result;
done();
});
});
after(done => helper.clearDb(done));
it ("updates profile", done => {
var attrs = {
enslo: 88,
division: "Foo",
skill: "Bar",
gatherMusic: "Baz"
};
user.updateProfile(attrs, (error, profile) => {
if (error) return done(error);
assert.equal(profile.enslo, attrs.enslo);
assert.equal(profile.division, attrs.division);
assert.equal(profile.skill, attrs.skill);
assert.equal(profile.gatherMusic, attrs.gatherMusic);
done();
});
});
it ("updates abilities", done => {
var attrs = {
abilities: {
"skulk": true,
"lerk": true,
"fade": true,
"gorge": true,
"onos": true,
"commander": true
}
};
user.updateProfile(attrs, (error, profile) => {
if (error) return done(error);
for (let attr in attrs.abilities) {
assert.isTrue(profile.abilities[attr])
}
done();
});
});
it ("does not update userId", done => {
user.updateProfile({
userId: 80808080
}, (error, result) => {
if (error) return done(error);
assert.equal(result.userId, user.id);
done();
});
});
it ("does not update _id", done => {
user.updateProfile({
_id: "FOOOO"
}, (error, result) => {
if (error) return done(error);
assert.equal(result._id.toString(), profile._id.toString());
done();
});
});
});
});