Context("when the request includes a non-existant id", func() { It("reports that the client cannot be found", func() { clientsRepo.FindCall.Returns.Error = models.RecordNotFoundError("not found") err := assigner.AssignToClient(database, "missing-client", "my-template") Expect(err).To(HaveOccurred()) Expect(err).To(BeAssignableToTypeOf(models.RecordNotFoundError("not found"))) }) It("reports that the template cannot be found", func() { templatesRepo.FindByIDCall.Returns.Error = models.RecordNotFoundError("not found") err := assigner.AssignToClient(database, "my-client", "non-existant-template") Expect(err).To(HaveOccurred()) Expect(err).To(BeAssignableToTypeOf(services.TemplateAssignmentError(""))) }) }) Context("when the request should reset the template assignment", func() { BeforeEach(func() { clientsRepo.FindCall.Returns.Client = models.Client{ ID: "my-client", TemplateID: "some-random-template", } }) It("allows template id of empty string to reset the assignment", func() { err := assigner.AssignToClient(database, "my-client", "") Expect(err).NotTo(HaveOccurred())
It("returns a 406 when a record cannot be found", func() { writer.Write(recorder, services.DefaultScopeError{}) Expect(recorder.Code).To(Equal(406)) body := make(map[string]interface{}) err := json.Unmarshal(recorder.Body.Bytes(), &body) if err != nil { panic(err) } Expect(body["errors"]).To(ContainElement("You cannot send a notification to a default scope")) }) It("returns a 422 when a template cannot be assigned", func() { writer.Write(recorder, services.TemplateAssignmentError("The template could not be assigned")) Expect(recorder.Code).To(Equal(422)) body := make(map[string]interface{}) err := json.Unmarshal(recorder.Body.Bytes(), &body) if err != nil { panic(err) } Expect(body["errors"]).To(ContainElement("The template could not be assigned")) }) It("returns a 422 when a user token was expected but is not present", func() { writer.Write(recorder, webutil.MissingUserTokenError("Missing user_id from token claims.")) Expect(recorder.Code).To(Equal(422))