mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-17 14:47:53 +01:00
* Fix missing text in party / guild invite modal * add tests and abstract logic * use translation lib for test
This commit is contained in:
@@ -240,6 +240,5 @@ describe('Groups Controller', function() {
|
||||
describe.skip("clickMember", function() { });
|
||||
describe.skip("removeMember", function() { });
|
||||
describe.skip("confirmRemoveMember", function() { });
|
||||
describe.skip("openInviteModal", function() { });
|
||||
describe.skip("quickReply", function() { });
|
||||
});
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
'use strict';
|
||||
|
||||
describe('groupServices', function() {
|
||||
var $httpBackend, $http, groups, user;
|
||||
var $httpBackend, $http, groups, user, $rootScope;
|
||||
var groupApiUrlPrefix = '/api/v3/groups';
|
||||
|
||||
beforeEach(function() {
|
||||
@@ -13,8 +13,10 @@ describe('groupServices', function() {
|
||||
$provide.value('User', {user: user});
|
||||
});
|
||||
|
||||
inject(function(_$httpBackend_, Groups, User) {
|
||||
inject(function(_$httpBackend_, _$rootScope_, Groups, User) {
|
||||
$httpBackend = _$httpBackend_;
|
||||
$rootScope = _$rootScope_;
|
||||
$rootScope.openModal = function() {}
|
||||
groups = Groups;
|
||||
});
|
||||
});
|
||||
@@ -166,4 +168,33 @@ describe('groupServices', function() {
|
||||
|
||||
$httpBackend.flush()
|
||||
});
|
||||
|
||||
it('sets a "sendInviteText" property on a party to "Send Invitations"', function() {
|
||||
var sendInviteText = window.env.t('sendInvitations');
|
||||
var party = {
|
||||
type: 'party',
|
||||
data: {
|
||||
_id: '1234',
|
||||
},
|
||||
};
|
||||
groups.inviteOrStartParty(party);
|
||||
expect(party.sendInviteText).to.eql(sendInviteText);
|
||||
});
|
||||
|
||||
it('sets a "sendInviteText" proptery on a guild to "Send Invitations +$3.00/month/user"', function() {
|
||||
var sendInviteText = window.env.t('sendInvitations');
|
||||
var guild = {
|
||||
type: 'guild',
|
||||
data: {
|
||||
_id: '12345',
|
||||
},
|
||||
purchased: {
|
||||
plan: {
|
||||
customerId: '123',
|
||||
},
|
||||
},
|
||||
};
|
||||
groups.inviteOrStartParty(guild);
|
||||
expect(guild.sendInviteText).to.eql(sendInviteText + window.env.t('groupAdditionalUserCost'));
|
||||
});
|
||||
});
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
habitrpg.controller("GroupsCtrl", ['$scope', '$rootScope', 'Shared', 'Groups', '$http', '$q', 'User', 'Members', '$state', 'Notification',
|
||||
function($scope, $rootScope, Shared, Groups, $http, $q, User, Members, $state, Notification) {
|
||||
$scope.inviteOrStartParty = Groups.inviteOrStartParty;
|
||||
$scope.isMemberOfPendingQuest = function (userid, group) {
|
||||
if (!group.quest || !group.quest.members) return false;
|
||||
if (group.quest.active) return false; // quest is started, not pending
|
||||
@@ -120,25 +121,6 @@ habitrpg.controller("GroupsCtrl", ['$scope', '$rootScope', 'Shared', 'Groups', '
|
||||
}
|
||||
};
|
||||
|
||||
$scope.openInviteModal = function (group) {
|
||||
if (group.type !== 'party' && group.type !== 'guild') {
|
||||
return console.log('Invalid group type.')
|
||||
}
|
||||
|
||||
var sendInviteText = window.env.t('sendInvitations');
|
||||
if(group.purchased && group.purchased.plan && group.purchased.plan.customerId) sendInviteText += window.env.t('groupAdditionalUserCost');
|
||||
group.sendInviteText = sendInviteText;
|
||||
|
||||
$rootScope.openModal('invite-' + group.type, {
|
||||
controller:'InviteToGroupCtrl',
|
||||
resolve: {
|
||||
injectedGroup: function(){
|
||||
return group;
|
||||
},
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
$scope.quickReply = function (uid) {
|
||||
Members.selectMember(uid)
|
||||
.then(function (response) {
|
||||
|
||||
@@ -221,18 +221,24 @@ angular.module('habitrpg')
|
||||
function inviteOrStartParty (group) {
|
||||
Analytics.track({'hitType':'event','eventCategory':'button','eventAction':'click','eventLabel':'Invite Friends'});
|
||||
|
||||
if (group && group.type === "party" || $location.$$path === "/options/groups/party") {
|
||||
group.type = 'party';
|
||||
var sendInviteText = window.env.t('sendInvitations');
|
||||
if (group.type !== 'party' && group.type !== 'guild') {
|
||||
$location.path("/options/groups/party");
|
||||
return console.log('Invalid group type.')
|
||||
}
|
||||
|
||||
$rootScope.openModal('invite-party', {
|
||||
if(group.purchased && group.purchased.plan && group.purchased.plan.customerId) sendInviteText += window.env.t('groupAdditionalUserCost');
|
||||
|
||||
group.sendInviteText = sendInviteText;
|
||||
|
||||
$rootScope.openModal('invite-' + group.type, {
|
||||
controller:'InviteToGroupCtrl',
|
||||
resolve: {
|
||||
injectedGroup: function(){ return group; }
|
||||
}
|
||||
injectedGroup: function() {
|
||||
return group;
|
||||
},
|
||||
},
|
||||
});
|
||||
} else {
|
||||
$location.path("/options/groups/party");
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
|
||||
@@ -87,7 +87,7 @@ a.pull-right.gem-wallet(ng-if='group.type!="party"', popover-trigger='mouseenter
|
||||
h3.panel-title
|
||||
=env.t('members')
|
||||
span(ng-if='group.type=="party" && (group.onlineUsers || group.onlineUsers == 0)')= ' (' + env.t('onlineCount', {count: "{{group.onlineUsers}}"}) + ')'
|
||||
button.pull-right.btn.btn-primary(ng-click="openInviteModal(group)")=env.t("inviteFriends")
|
||||
button.pull-right.btn.btn-primary(ng-click="inviteOrStartParty(group)")=env.t("inviteFriends")
|
||||
|
||||
.panel-body.modal-fixed-height
|
||||
h4(ng-show='::group.memberCount === 1 && group.type === "party"')=env.t('partyEmpty')
|
||||
@@ -179,4 +179,3 @@ a.pull-right.gem-wallet(ng-if='group.type!="party"', popover-trigger='mouseenter
|
||||
group-approvals(ng-show="groupPanel == 'approvals'", ng-if="group.leader._id === user._id", group="group")
|
||||
|
||||
+groupSubscription
|
||||
|
||||
|
||||
Reference in New Issue
Block a user