diff --git a/app/controllers/serviceDetailController.js b/app/controllers/serviceDetailController.js
index 4da2a196..3cffb4cb 100644
--- a/app/controllers/serviceDetailController.js
+++ b/app/controllers/serviceDetailController.js
@@ -9,11 +9,11 @@ app.controller('ServiceDetailController', function ($controller, $routeParams, $
}));
if (!$scope.isAnonymous()) {
- UserRepo.getUser().then(function(response) {
+ UserRepo.getUser().then(function (response) {
var apiRes = angular.fromJson(response.body);
- if(apiRes.meta.status === 'SUCCESS') {
+ if (apiRes.meta.status === 'SUCCESS') {
$scope.user = apiRes.payload.User;
- $scope.hasVoted = function(fp) {
+ $scope.hasVoted = function (fp) {
return fp.voters.indexOf($scope.user.id) >= 0;
};
}
@@ -26,12 +26,17 @@ app.controller('ServiceDetailController', function ($controller, $routeParams, $
ServiceRepo.ready().then(function () {
$scope.service = ServiceRepo.findById($routeParams.serviceId);
+
$scope.notesTableParams = $scope.service.getNotesTableParams();
$scope.ideasTableParams = $scope.service.getIdeasTableParams();
$scope.featureProposalsTableParams = $scope.service.getFeatureProposalsTableParams();
+
+ $scope.hasFeatureProposals = function () {
+ return $scope.featureProposalsTableParams.data.length > 0;
+ };
});
- $scope.setActiveTab = function(tab) {
+ $scope.setActiveTab = function (tab) {
$scope.activeTab = tab;
};
@@ -39,9 +44,9 @@ app.controller('ServiceDetailController', function ($controller, $routeParams, $
FeatureProposalRepo.vote(fp);
};
- $scope.getServiceWebsite = function(service) {
+ $scope.getServiceWebsite = function (service) {
var link = service.website;
- if(link.indexOf('//') === -1) {
+ if (link.indexOf('//') === -1) {
link = '//' + link;
}
return link;
diff --git a/app/views/detail/service.html b/app/views/detail/service.html
index aea25194..fb05ff17 100644
--- a/app/views/detail/service.html
+++ b/app/views/detail/service.html
@@ -1,5 +1,3 @@
-
-
@@ -53,11 +59,11 @@ Ideas
-->
-
+
Feature Proposal
-
+
-
+
@@ -67,4 +73,4 @@ Feature Proposal
-
+
\ No newline at end of file
diff --git a/tests/mocks/repo/mockFeatureProposalRepo.js b/tests/mocks/repo/mockFeatureProposalRepo.js
new file mode 100644
index 00000000..74980d63
--- /dev/null
+++ b/tests/mocks/repo/mockFeatureProposalRepo.js
@@ -0,0 +1,94 @@
+var mockFeatureProposalRepos = [
+
+];
+
+angular.module('mock.featureProposalRepo', []).service('FeatureProposalRepo', function ($q) {
+ var featureProposalRepo = this;
+
+ featureProposalRepo.list = mockFeatureProposalRepos;
+
+ featureProposalRepo.create = function (note) {
+ var defer = $q.defer();
+ note.id = featureProposalRepo.list.length + 1;
+ featureProposalRepo.list.push(note);
+ defer.resolve(note);
+ return defer.promise;
+ };
+
+ featureProposalRepo.update = function (note) {
+ var defer = $q.defer();
+ for (var i in featureProposalRepo.list) {
+ if (featureProposalRepo.list[i].id === note.id) {
+ angular.extend(featureProposalRepo.list[i], note);
+ note = featureProposalRepo.list[i];
+ break;
+ }
+ }
+ defer.resolve(note);
+ return defer.promise;
+ };
+
+ var updateFeatureProposal = function (note) {
+ featureProposalRepo.update(note);
+ };
+
+ featureProposalRepo.getAll = function () {
+ var defer = $q.defer();
+ defer.resolve(featureProposalRepo.list);
+ return defer.promise;
+ };
+
+ featureProposalRepo.fetchById = function (noteId) {
+ var note = new Note();
+ for (var i in featureProposalRepo.list) {
+ if (featureProposalRepo.list[i].id === id) {
+ note = featureProposalRepo.list[i];
+ break;
+ }
+ }
+ return note;
+ };
+
+ featureProposalRepo.getPageSettings = function () {
+ var mockPageSettings = {
+ filters: {
+ active: [true]
+ },
+ sort: [{
+ property: 'service.name',
+ direction: 'ASC'
+ }, {
+ property: 'lastModified',
+ direction: 'DESC'
+ }]
+ };
+
+ return mockPageSettings;
+ };
+
+ featureProposalRepo.getTableParams = function () {
+ // @todo
+ return {};
+ };
+
+ featureProposalRepo.fetchPage = function (pageSettings) {
+ // @todo
+ return {};
+ };
+
+ var safePage = function (resolve) {
+ // @todo
+ };
+
+ featureProposalRepo.page = function () {
+ return $q(function (resolve) {
+ safePage(resolve);
+ });
+ };
+
+ var table = {
+ // @todo
+ };
+
+ return featureProposalRepo;
+});
\ No newline at end of file
diff --git a/tests/unit/controllers/serviceDetailControllerTest.js b/tests/unit/controllers/serviceDetailControllerTest.js
new file mode 100644
index 00000000..72acbe3b
--- /dev/null
+++ b/tests/unit/controllers/serviceDetailControllerTest.js
@@ -0,0 +1,33 @@
+describe('controller: ServiceDetailController', function () {
+
+ var scope, controller;
+
+ beforeEach(module('core'));
+
+ beforeEach(module('app'));
+
+ beforeEach(module('mock.featureProposalRepo'));
+
+ beforeEach(module('mock.serviceRepo'));
+
+ beforeEach(module('mock.userRepo'));
+
+ beforeEach(inject(function ($controller, $rootScope, _FeatureProposalRepo_, _ServiceRepo_, _UserRepo_) {
+ installPromiseMatchers();
+ scope = $rootScope.$new();
+ controller = $controller('ServiceDetailController', {
+ $scope: scope,
+ FeatureProposalRepo: _FeatureProposalRepo_,
+ ServiceRepo: _ServiceRepo_,
+ UserRepo: _UserRepo_
+ });
+
+ }));
+
+ describe('Is the controller defined', function () {
+ it('should be defined', function () {
+ expect(controller).toBeDefined();
+ });
+ });
+
+});
\ No newline at end of file