From 2d79177bb5b6fb54fd3d1a92da15f70d24a87dd3 Mon Sep 17 00:00:00 2001 From: Rohan Mitchell Date: Wed, 24 Jun 2015 10:08:34 +1000 Subject: [PATCH] When a registering an enterprise with a non-unique name, display an error message. --- .../enterprise_registration_service.js.coffee | 6 +++++- app/assets/javascripts/darkswarm/util.js.coffee | 2 ++ .../enterprise_registration_spec.js.coffee | 14 ++++++++++++++ 3 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 app/assets/javascripts/darkswarm/util.js.coffee diff --git a/app/assets/javascripts/darkswarm/services/enterprise_registration_service.js.coffee b/app/assets/javascripts/darkswarm/services/enterprise_registration_service.js.coffee index 77b2204316..702a382eb0 100644 --- a/app/assets/javascripts/darkswarm/services/enterprise_registration_service.js.coffee +++ b/app/assets/javascripts/darkswarm/services/enterprise_registration_service.js.coffee @@ -26,7 +26,11 @@ Darkswarm.factory "EnterpriseRegistrationService", ($http, RegistrationService, RegistrationService.select('about') ).error((data) => Loading.clear() - alert('Failed to create your enterprise.\nPlease ensure all fields are completely filled out.') + if data?.errors? + errors = ("#{k.capitalize()} #{v[0]}" for k, v of data.errors when v.length > 0) + alert "Failed to create your enterprise.\n" + errors.join('\n') + else + alert('Failed to create your enterprise.\nPlease ensure all fields are completely filled out.') ) # RegistrationService.select('about') diff --git a/app/assets/javascripts/darkswarm/util.js.coffee b/app/assets/javascripts/darkswarm/util.js.coffee new file mode 100644 index 0000000000..e6485284b3 --- /dev/null +++ b/app/assets/javascripts/darkswarm/util.js.coffee @@ -0,0 +1,2 @@ +String.prototype.capitalize = -> + this.charAt(0).toUpperCase() + this.slice(1) diff --git a/spec/javascripts/unit/darkswarm/services/enterprise_registration_spec.js.coffee b/spec/javascripts/unit/darkswarm/services/enterprise_registration_spec.js.coffee index 1852dbd16c..4952c3c4fc 100644 --- a/spec/javascripts/unit/darkswarm/services/enterprise_registration_spec.js.coffee +++ b/spec/javascripts/unit/darkswarm/services/enterprise_registration_spec.js.coffee @@ -56,6 +56,20 @@ describe "EnterpriseRegistrationService", -> it "does not move the user to the about page", -> expect(RegistrationServiceMock.select).not.toHaveBeenCalled + describe "failure due to duplicate name", -> + beforeEach -> + spyOn(RegistrationServiceMock, "select") + spyOn(window, "alert") + $httpBackend.expectPOST("/api/enterprises?token=keykeykeykey").respond 400, {"error": "Invalid resource. Please fix errors and try again.", "errors": {"name": ["has already been taken. If this is your enterprise and you would like to claim ownership, please contact the current manager of this profile at owner@example.com."], "permalink": [] }} + EnterpriseRegistrationService.create() + $httpBackend.flush() + + it "alerts the user to failure", -> + expect(window.alert).toHaveBeenCalledWith 'Failed to create your enterprise.\nName has already been taken. If this is your enterprise and you would like to claim ownership, please contact the current manager of this profile at owner@example.com.' + + it "does not move the user to the about page", -> + expect(RegistrationServiceMock.select).not.toHaveBeenCalled + describe "updating an enterprise", -> beforeEach ->