Skip to content

Commit

Permalink
Merge 2b73d60 into 3dd0ebb
Browse files Browse the repository at this point in the history
  • Loading branch information
Nkemjiks committed Jul 19, 2018
2 parents 3dd0ebb + 2b73d60 commit 46baeb4
Show file tree
Hide file tree
Showing 14 changed files with 377 additions and 60 deletions.
20 changes: 20 additions & 0 deletions app/controllers/users.js
Original file line number Diff line number Diff line change
Expand Up @@ -313,6 +313,25 @@ const user = (req, res, next, id) => {
});
};

/**
* @param {object} req - request object provided by express
* @param {object} res - response object provided by express
* @param {function} next - next function for passing the request to next handler
* @description finds a user by id from the db and
* updates the tour field to true
*/
const updateUserTour = (req, res, next) => {
const { id } = req.params;
User.findOneAndUpdate(
{ _id: id },
{ tour: true },
(err) => {
if (err) return next(err);
return res.status(200).send({ tourUpdated: true });
}
);
};

/**
* @param {object} req - request object provided by express
* @param {object} res - response object provided by express
Expand Down Expand Up @@ -354,6 +373,7 @@ const invite = (req, res) => {
export default {
authCallback,
user,
updateUserTour,
me,
show,
addDonation,
Expand Down
1 change: 1 addition & 0 deletions app/models/user.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ const UserSchema = new Schema({
username: String,
provider: String,
avatar: String,
tour: { type: Boolean, default: false },
premium: Number, // null or 0 for non-donors, 1 for everyone else (for now)
donations: [],
hashed_password: String,
Expand Down
3 changes: 3 additions & 0 deletions app/views/includes/foot.jade
Original file line number Diff line number Diff line change
Expand Up @@ -46,11 +46,14 @@ script(type='text/javascript', src='/js/controllers/header.js')
script(type='text/javascript', src='/js/controllers/game.js')
script(type='text/javascript', src='/js/controllers/auth.js')
script(type='text/javascript', src='/js/controllers/invitePlayers.js')
script(type='text/javascript', src='/js/controllers/tour.js')
script(type='text/javascript', src='/js/init.js')

// Application components
script(type='text/javascript', src='/js/directives/profile.js')

//Introjs
script(type='text/javascript', src='https://cdnjs.cloudflare.com/ajax/libs/intro.js/2.9.3/intro.min.js')

//Socket.io Client Library
script(type='text/javascript', src='/socket.io/socket.io.js')
Expand Down
2 changes: 2 additions & 0 deletions app/views/includes/head.jade
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ head
link(href='https://res.cloudinary.com/dqsmurjpg/image/upload/v1530719572/logo.jpg', rel='shortcut icon', type='image/x-icon')
link(href='https://fonts.googleapis.com/css?family=Lobster', rel='stylesheet', type='text/css')
link(rel="stylesheet" href="https://use.fontawesome.com/releases/v5.1.0/css/all.css" integrity="sha384-lKuwvrZot6UHsBSfcMvOkWwlCMgc0TaWr+30HWe3a4ltaBwTZhyTEggF5tJv8tbt" crossorigin="anonymous")
link(href='https://cdnjs.cloudflare.com/ajax/libs/intro.js/2.9.3/introjs.min.css', rel='stylesheet', type='text/css')
link(href="https://fonts.googleapis.com/icon?family=Material+Icons", rel="stylesheet")

meta(property='fb:app_id', content='APP_ID')
meta(property='og:title', content='#{appName} - #{title}')
Expand Down
16 changes: 15 additions & 1 deletion backend-test/startGame/startGame.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ const userMock = {
};

let token = '';
let id = '';
describe('Player endpoints', () => {
before(() => {
Promise.resolve(User.create(userMock, (err, user) => {
Expand All @@ -40,11 +41,12 @@ describe('Player endpoints', () => {
expect(res.statusCode).to.equal(200);
/* eslint prefer-destructuring: 0 */
token = res.body.token;
id = res.body._id;
done();
});
});

it('POST /api/game/:id/start endpoint should return the the game players', (done) => {
it('POST /api/game/:id/start endpoint should return the the game players', (done) => {
request(app)
.post('/api/game/3/start')
.set('authorization', token)
Expand All @@ -56,4 +58,16 @@ describe('Player endpoints', () => {
done();
});
});

it('POST /api/tour/:id endpoint should update the tour option to true', (done) => {
request(app)
.post(`/api/tour/${id}`)
.set('authorization', token)
.end((err, res) => {
if (err) return done(err);
expect(res.statusCode).to.equal(200);
expect(res.body.tourUpdated).to.equal(true);
done();
});
});
});
4 changes: 4 additions & 0 deletions config/routes.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,10 @@ export default (router, passport, app) => {
.get('/profile', ensureUser, users.fetchProfile)
.post('/game/:id/start', ensureUser, game);

// Setting up user tour api
api
.post('/tour/:id', users.updateUserTour);

router.get('/signin', users.signin);
router.get('/signup', users.signup);
router.get('/chooseavatars', users.checkAvatar);
Expand Down
54 changes: 54 additions & 0 deletions frontend-test/angular/tour.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
/* eslint prefer-arrow-callback: 0, func-names: 0, no-undef: 0 */
describe('Tour', function () {
let $scope, $http, $httpBackend, controller;
beforeEach(module('mean.system'));
beforeEach(inject(function (_$controller_, _$httpBackend_, _$http_, _$rootScope_) {
$scope = _$rootScope_.$new();
$http = _$http_;
controller = _$controller_;
$httpBackend = _$httpBackend_;
controller('TourController', {
$scope,
$http
});
}));

beforeEach(function () {
const store = {};
spyOn(localStorage, 'getItem').and.callFake(function (key) {
return store[key];
});
spyOn(localStorage, 'setItem').and.callFake(function (key, value) {
store[key] = `${value}`;
return store[key];
});
localStorage.setItem('#cfhetUserId', '1233jjfjf');
});

it('Update the tour option in the database and update localstorage', function () {
const tourUpdate = { tourUpdate: 'true' };

$httpBackend.whenPOST('/api/tour/1233jjfjf').respond(function () {
return tourUpdate;
}());

$scope.updateTour().then(() => {});

$httpBackend.flush();
expect(localStorage.getItem('#cfhuseristourtaken')).toEqual(tourUpdate.tourUpdate);
});

it('Should close the tour modal', function () {
spyOn($scope, 'closeTourModal').and.callThrough();
expect($scope.closeTourModal).toBeDefined();
});

it('Should call the takeTour method', function () {
spyOn($scope, 'takeNewUserTour').and.callThrough();
spyOn($scope, 'takeGeneralTour').and.callThrough();
spyOn($scope, 'tour').and.callThrough();
expect($scope.takeNewUserTour).toBeDefined();
expect($scope.takeGeneralTour).toBeDefined();
expect($scope.tour).toBeDefined();
});
});
46 changes: 44 additions & 2 deletions public/css/style.css
Original file line number Diff line number Diff line change
Expand Up @@ -323,6 +323,19 @@ i {
box-shadow: none;
}

#tour-button, #profile-button {
box-shadow: none;
color: #000 !important;
background-color: transparent !important;
}

#tour-button:hover, #profile-button:hover {
border: 2px solid black;
border-radius: 3px;
background-color: white !important;
color: black !important;
}

#index-login-btn {
border: 2px solid black;
border-radius: 3px;
Expand Down Expand Up @@ -384,6 +397,20 @@ i {
color: black !important;
}

#tour-chioce-btn {
color: white;
background-color: #236231 !important;
border: 0;
padding: 0 !important;
}

#tour-chioce-btn:hover {
border: 2px solid black;
border-radius: 3px;
background-color: white !important;
color: black !important;
}


.avatars {
position: relative;
Expand Down Expand Up @@ -786,7 +813,7 @@ i {
}

@media screen and (max-width: 425px) {
.abandon-button {
.navbar-button {
height: 30px !important;
line-height: 30px !important;
padding: 0 5px !important;
Expand Down Expand Up @@ -993,7 +1020,22 @@ i {
padding: 8px;
font-size: 0.9375rem;
}
/* Fola imageview */

nav .sidenav-trigger {
float: right !important;
}

.sidenav-trigger > i {
color: #236231 !important;
}
nav .sidenav-trigger {
float: right !important;
}

.sidenav-trigger > i {
color: #236231 !important;
}

.imagepreview {
height: 200px;
width: 200px;
Expand Down
56 changes: 33 additions & 23 deletions public/js/controllers/auth.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ angular.module('mean.system')
$scope.newUser = {};
$scope.user = {};
$scope.authError = '';

const Login = $resource('/api/auth/login', {}, {
execute: { method: 'POST', hasBody: true }
});
Expand All @@ -14,22 +15,11 @@ angular.module('mean.system')
execute: { method: 'POST', hasBody: true }
});

$scope.uploadImage = function (profilePic) {
const cloudUrl = Upload.upload({
url: 'https://api.cloudinary.com/v1_1/dffiyhgto/image/upload',
data: {
upload_preset: 'lupttjwi',
secure: true,
file: profilePic
}
});
return cloudUrl;
};

$scope.logOut = function () {
localStorage.removeItem('#cfhetusertoken');
localStorage.removeItem('username');
localStorage.removeItem('#cfhetUserId');
localStorage.removeItem('#cfhuseristourtaken');
};

$scope.username = localStorage.getItem('username');
Expand All @@ -45,6 +35,35 @@ angular.module('mean.system')
$scope.showProfile = function () {
document.getElementsByClassName('profile-container')[0].style.display = 'block';
};

$scope.SignInUser = function () {
Login.execute({}, $scope.user, function (response) {
localStorage.setItem('#cfhetusertoken', response.token);
localStorage.setItem('#cfhetUserId', response._id);
localStorage.setItem('username', response.name);
localStorage.setItem('#cfhuseristourtaken', response.tour);
$location.path('/');
}, (error) => {
if (error.data.message === 'Unknown user') {
$scope.authError = 'Oops, We can not find you in our system';
} else {
$scope.authError = 'Please check your email/password and try again';
}
});
};

$scope.uploadImage = function (profilePic) {
const cloudUrl = Upload.upload({
url: 'https://api.cloudinary.com/v1_1/dffiyhgto/image/upload',
data: {
upload_preset: 'lupttjwi',
secure: true,
file: profilePic
}
});
return cloudUrl;
};

$scope.imagePreview = '';
$scope.viewImage = function () {
const file = event.target.files[0];
Expand All @@ -67,6 +86,7 @@ angular.module('mean.system')
localStorage.setItem('#cfhetusertoken', response.token);
localStorage.setItem('#cfhetUserId', response._id);
localStorage.setItem('username', response.name);
localStorage.setItem('#cfhuseristourtaken', response.tour);
$location.path('/');
}, (error) => {
$scope.authError = error.data.message;
Expand All @@ -77,21 +97,11 @@ angular.module('mean.system')
localStorage.setItem('#cfhetusertoken', response.token);
localStorage.setItem('#cfhetUserId', response._id);
localStorage.setItem('username', response.name);
localStorage.setItem('#cfhuseristourtaken', response.tour);
$location.path('/');
}, (error) => {
$scope.authError = error.data.message;
});
}
};

$scope.SignInUser = function () {
Login.execute({}, $scope.user, function (response) {
localStorage.setItem('#cfhetusertoken', response.token);
localStorage.setItem('#cfhetUserId', response._id);
localStorage.setItem('username', response.name);
$location.path('/');
}, () => {
$scope.authError = 'Please check your username/password and try again';
});
};
}]);
Loading

0 comments on commit 46baeb4

Please sign in to comment.