public void TestCreatePostReturnsViewWhenInvalid() { #region Arrange new FakeOrganizations(3, OrganazationRepository); SecurityService.Expect(a => a.HasWorkgroupOrOrganizationAccess(Arg <Workgroup> .Is.Anything, Arg <Organization> .Is.Anything, out Arg <string> .Out(null).Dummy)).Return(true); var customField = new CustomField(); customField.IsRequired = true; customField.Organization = null; customField.Rank = 9; #endregion Arrange #region Act var result = Controller.Create("2", customField) .AssertViewRendered() .WithViewData <CustomFieldViewModel>(); #endregion Act #region Assert Assert.IsNotNull(result); Assert.IsNull(result.CustomField.Organization); Assert.AreEqual(9, result.CustomField.Rank); Assert.IsTrue(result.CustomField.IsRequired); SecurityService.AssertWasCalled(a => a.HasWorkgroupOrOrganizationAccess(Arg <Workgroup> .Is.Anything, Arg <Organization> .Is.Anything, out Arg <string> .Out("Fail Message").Dummy)); CustomFieldRepository.AssertWasNotCalled(a => a.EnsurePersistent(Arg <CustomField> .Is.Anything)); #endregion Assert }
public void TestNameWithSpacesOnlyDoesNotSave() { CustomField customField = null; try { #region Arrange customField = GetValid(9); customField.Name = " "; #endregion Arrange #region Act CustomFieldRepository.DbContext.BeginTransaction(); CustomFieldRepository.EnsurePersistent(customField); CustomFieldRepository.DbContext.CommitTransaction(); #endregion Act } catch (Exception) { Assert.IsNotNull(customField); var results = customField.ValidationResults().AsMessageList(); results.AssertErrorsAre(string.Format("The {0} field is required.", "Name")); Assert.IsTrue(customField.IsTransient()); Assert.IsFalse(customField.IsValid()); throw; } }
public void TestCustomFieldNewOrganizationDoesNotSave() { var thisFar = false; try { #region Arrange var record = GetValid(9); record.Organization = new Organization(); thisFar = true; #endregion Arrange #region Act CustomFieldRepository.DbContext.BeginTransaction(); CustomFieldRepository.EnsurePersistent(record); CustomFieldRepository.DbContext.CommitTransaction(); #endregion Act } catch (Exception ex) { Assert.IsTrue(thisFar); Assert.IsNotNull(ex); Assert.AreEqual("object references an unsaved transient instance - save the transient instance before flushing or set cascade action for the property to something that would make it autosave. Type: Purchasing.Core.Domain.Organization, Entity: Purchasing.Core.Domain.Organization", ex.Message); throw; } }
public void TestCustomFieldsFieldOrganizationWithAValueOfNullDoesNotSave() { CustomField record = null; try { #region Arrange record = GetValid(9); record.Organization = null; #endregion Arrange #region Act CustomFieldRepository.DbContext.BeginTransaction(); CustomFieldRepository.EnsurePersistent(record); CustomFieldRepository.DbContext.CommitTransaction(); #endregion Act } catch (Exception) { Assert.IsNotNull(record); Assert.AreEqual(record.Organization, null); var results = record.ValidationResults().AsMessageList(); results.AssertErrorsAre("The Organization field is required."); Assert.IsTrue(record.IsTransient()); Assert.IsFalse(record.IsValid()); throw; } }
public void TestDeletePostRedirectWhenNotAuthorized() { #region Arrange var customFields = new List <CustomField>(); customFields.Add(CreateValidEntities.CustomField(1)); customFields[0].Organization = CreateValidEntities.Organization(9); new FakeCustomFields(0, CustomFieldRepository, customFields); SecurityService.Expect(a => a.HasWorkgroupOrOrganizationAccess(Arg <Workgroup> .Is.Anything, Arg <Organization> .Is.Anything, out Arg <string> .Out("Fail Message").Dummy)).Return(false); #endregion Arrange #region Act Controller.Delete(1, new CustomField()) .AssertActionRedirect() .ToAction <ErrorController>(a => a.NotAuthorized()); #endregion Act #region Assert Assert.AreEqual("Fail Message", Controller.Message); SecurityService.AssertWasCalled(a => a.HasWorkgroupOrOrganizationAccess(Arg <Workgroup> .Is.Anything, Arg <Organization> .Is.Anything, out Arg <string> .Out("Fail Message").Dummy)); var args = SecurityService.GetArgumentsForCallsMadeOn(a => a.HasWorkgroupOrOrganizationAccess(Arg <Workgroup> .Is.Anything, Arg <Organization> .Is.Anything, out Arg <string> .Out("Fail Message").Dummy))[0]; Assert.IsNull(args[0]); Assert.AreEqual("Name9", ((Organization)args[1]).Name); CustomFieldRepository.AssertWasNotCalled(a => a.EnsurePersistent(Arg <CustomField> .Is.Anything)); CustomFieldRepository.AssertWasNotCalled(a => a.Remove(Arg <CustomField> .Is.Anything)); #endregion Assert }
public void Edit(CustomFieldModel viewModel, EducationSecurityPrincipal user) { if (viewModel == null) { throw new ArgumentNullException("viewModel"); } if (user == null) { throw new ArgumentNullException("user"); } var model = CustomFieldRepository.Items.Include(c => c.Categories).SingleOrDefault(c => c.Id == viewModel.Id); if (model == null) { throw new EntityNotFoundException("The requested custom field could not be found"); } if (CustomFieldValueRepository.Items.Any(v => v.CustomFieldId == viewModel.Id) && model.CustomFieldTypeId != viewModel.SelectedFieldTypeId) { throw new ValidationException(new ValidationResult("Cannot edit field type because data values have already been loaded", new[] { "SelectedFieldTypeId" }), null, viewModel); } viewModel.CopyTo(model); model.LastModifyingUser = user.Identity.User; model.LastModifyTime = DateTime.Now; model.Categories = CustomFieldCategoryRepository.Items.Where(c => viewModel.SelectedCategories.Contains(c.Id)).ToList(); CustomFieldRepository.Update(model); RepositoryContainer.Save(); }
public void TestCreatePostRedirectsWhenValid() { #region Arrange new FakeOrganizations(3, OrganazationRepository); SecurityService.Expect(a => a.HasWorkgroupOrOrganizationAccess(Arg <Workgroup> .Is.Anything, Arg <Organization> .Is.Anything, out Arg <string> .Out(null).Dummy)).Return(true); var customField = CreateValidEntities.CustomField(1); #endregion Arrange #region Act var result = Controller.Create("2", customField) .AssertActionRedirect() .ToAction <CustomFieldController>(a => a.Index("2")); #endregion Act #region Assert Assert.IsNotNull(result); Assert.AreEqual("2", result.RouteValues["id"]); Assert.AreEqual("CustomField Created Successfully", Controller.Message); SecurityService.AssertWasCalled(a => a.HasWorkgroupOrOrganizationAccess(Arg <Workgroup> .Is.Anything, Arg <Organization> .Is.Anything, out Arg <string> .Out("Fail Message").Dummy)); CustomFieldRepository.AssertWasCalled(a => a.EnsurePersistent(Arg <CustomField> .Is.Anything)); var args = (CustomField)CustomFieldRepository.GetArgumentsForCallsMadeOn(a => a.EnsurePersistent(Arg <CustomField> .Is.Anything))[0][0]; Assert.IsNotNull(args); Assert.AreEqual("Name1", args.Name); #endregion Assert }
public async Task CanSaveAndGetSocialField() { var db = GetSut(); var sut = new CustomFieldRepository(db); await sut.SaveSocial(new SocialField { AuthorId = 0, Title = "Facebook", Icon = "fa-facebook", Name = "social|facebook|1", Rank = 1, Content = "http://your.facebook.page.com" }); var socials = await sut.GetSocial(); Assert.NotNull(socials); var result = sut.Single(f => f.Name.Contains("social|facebook")); Assert.NotNull(result); sut.Remove(result); await db.SaveChangesAsync(); result = sut.Single(f => f.Name.Contains("social|facebook")); Assert.Null(result); }
public DataService(AppDbContext db) { _db = db; BlogPosts = new PostRepository(_db); Authors = new AuthorRepository(_db); Notifications = new NotificationRepository(_db); HtmlWidgets = new HtmlWidgetRepository(_db); CustomFields = new CustomFieldRepository(_db); }
private INewsletterService GetSut() { var helper = new DbHelper(); var context = helper.GetDbContext(); var custom = new CustomFieldRepository(context); var ds = new DataService(context, null, null, null, null, custom, null, null); var logger = new Mock <ILogger <NewsletterService> >(); var storage = new Mock <IStorageService>(); return(new NewsletterService(ds, storage.Object, logger.Object)); }
private IEmailService GetSut() { var helper = new DbHelper(); var context = helper.GetDbContext(); var custom = new CustomFieldRepository(context); var authors = new AuthorRepository(context); var ds = new DataService(context, null, authors, null, null, custom, null, null); EmailFactory factory = new EmailService(ds); return(factory.GetEmailService()); }
private IDataService GetSut() { var options = new DbContextOptionsBuilder <AppDbContext>() .UseSqlite("DataSource=Blog.db").Options; var context = new AppDbContext(options); IPostRepository posts = new PostRepository(context); IAuthorRepository authors = new AuthorRepository(context); INewsletterRepository letters = new NewsletterRepository(context); ICustomFieldRepository custom = new CustomFieldRepository(context); return(new DataService(context, posts, authors, null, null, custom, letters)); }
private IDataService GetSut() { var helper = new DbHelper(); var context = helper.GetDbContext(); var customFieldRepository = new CustomFieldRepository(context); IPostRepository posts = new PostRepository(context, customFieldRepository); IAuthorRepository authors = new AuthorRepository(context); INewsletterRepository letters = new NewsletterRepository(context); ICustomFieldRepository custom = new CustomFieldRepository(context); return(new DataService(context, posts, authors, null, null, custom, letters, null)); }
public void Delete(int id) { var customFieldToDelete = CustomFieldRepository.Items.SingleOrDefault(c => c.Id == id); if (customFieldToDelete == null) { throw new EntityNotFoundException("Specified custom field does not exist"); } if (CustomFieldValueRepository.Items.Any(v => v.CustomFieldId == id)) { throw new ValidationException(new ValidationResult("Custom field has associated values and cannot be deleted"), null, id); } CustomFieldRepository.Remove(customFieldToDelete); RepositoryContainer.Save(); }
private IDataService GetSut() { var options = new DbContextOptionsBuilder <AppDbContext>() .UseSqlite("DataSource=Blog.db").Options; var context = new AppDbContext(options); var customFieldRepository = new CustomFieldRepository(context); IPostRepository posts = new PostRepository(context, customFieldRepository); IAuthorRepository authors = new AuthorRepository(context); INewsletterRepository letters = new NewsletterRepository(context); ICustomFieldRepository custom = new CustomFieldRepository(context); IMessageRepository message = new MessageRepository(context); return(new DataService(db: context, postRepository: posts, authorRepository: authors, notificationRepository: null, customFieldRepository: custom, newsletterRepository: letters, messageRepository: message)); }
public void TestEditPostRedirectsWhenValid() { #region Arrange var customFields = new List <CustomField>(); customFields.Add(CreateValidEntities.CustomField(1)); customFields[0].Organization = CreateValidEntities.Organization(9); customFields[0].Organization.SetIdTo("9"); customFields[0].IsActive = true; new FakeCustomFields(0, CustomFieldRepository, customFields); var customField = CreateValidEntities.CustomField(8); customField.Organization = null; SecurityService.Expect(a => a.HasWorkgroupOrOrganizationAccess(Arg <Workgroup> .Is.Anything, Arg <Organization> .Is.Anything, out Arg <string> .Out(null).Dummy)).Return(true); #endregion Arrange #region Act var result = Controller.Edit(1, customField) .AssertActionRedirect() .ToAction <CustomFieldController>(a => a.Index("9")); #endregion Act #region Assert Assert.IsNotNull(result); Assert.AreEqual("9", result.RouteValues["id"]); Assert.AreEqual("CustomField Edited Successfully", Controller.Message); SecurityService.AssertWasCalled(a => a.HasWorkgroupOrOrganizationAccess(Arg <Workgroup> .Is.Anything, Arg <Organization> .Is.Anything, out Arg <string> .Out("Fail Message").Dummy)); var ssargs = SecurityService.GetArgumentsForCallsMadeOn(a => a.HasWorkgroupOrOrganizationAccess(Arg <Workgroup> .Is.Anything, Arg <Organization> .Is.Anything, out Arg <string> .Out(null).Dummy))[0]; Assert.IsNull(ssargs[0]); Assert.AreEqual("Name9", ((Organization)ssargs[1]).Name); CustomFieldRepository.AssertWasCalled(a => a.EnsurePersistent(Arg <CustomField> .Is.Anything), x => x.Repeat.Times(2)); var args = CustomFieldRepository.GetArgumentsForCallsMadeOn(a => a.EnsurePersistent(Arg <CustomField> .Is.Anything)); Assert.AreEqual(2, args.Count()); Assert.AreEqual("Name1", ((CustomField)args[0][0]).Name); Assert.AreEqual(false, ((CustomField)args[0][0]).IsActive); Assert.AreEqual("Name8", ((CustomField)args[1][0]).Name); Assert.AreEqual(true, ((CustomField)args[1][0]).IsActive); Assert.AreEqual("Name9", ((CustomField)args[1][0]).Organization.Name); #endregion Assert }
public void TestUpdateOrderReturnsFalseWhenIdsAreNull() { #region Arrange new FakeCustomFields(10, CustomFieldRepository); #endregion Arrange #region Act var result = Controller.UpdateOrder("9", null) .AssertResultIs <JsonNetResult>(); #endregion Act #region Assert Assert.IsNotNull(result); Assert.AreEqual("false", result.JsonResultString); CustomFieldRepository.AssertWasNotCalled(a => a.EnsurePersistent(Arg <CustomField> .Is.Anything)); #endregion Assert }
public void TestEditPostRedirectsToIndexIfCustomFieldNotFound() { #region Arrange new FakeCustomFields(3, CustomFieldRepository); #endregion Arrange #region Act Controller.Edit(4, new CustomField()) .AssertActionRedirect() .ToAction <ErrorController>(a => a.Index()); #endregion Act #region Assert Assert.AreEqual("Custom Field not found.", Controller.ErrorMessage); CustomFieldRepository.AssertWasNotCalled(a => a.EnsurePersistent(Arg <CustomField> .Is.Anything)); #endregion Assert }
public void TestNameWithOneCharacterSaves() { #region Arrange var customField = GetValid(9); customField.Name = "x"; #endregion Arrange #region Act CustomFieldRepository.DbContext.BeginTransaction(); CustomFieldRepository.EnsurePersistent(customField); CustomFieldRepository.DbContext.CommitTransaction(); #endregion Act #region Assert Assert.IsFalse(customField.IsTransient()); Assert.IsTrue(customField.IsValid()); #endregion Assert }
public void TestUpdateOrderReturnsTrueWhenNotExceptions2() { #region Arrange var customFields = new List <CustomField>(); var org = CreateValidEntities.Organization(9); org.SetIdTo("9"); for (int i = 0; i < 5; i++) { customFields.Add(CreateValidEntities.CustomField(i + 1)); customFields[i].Organization = org; customFields[i].Rank = i + 1; } customFields[4].Rank = 1; customFields[0].Organization = CreateValidEntities.Organization(8); customFields[0].Organization.SetIdTo("8"); new FakeCustomFields(0, CustomFieldRepository, customFields); var idsToReorder = new List <int>() { 1, 4, 3, 2, 5, 99 }; #endregion Arrange #region Act var result = Controller.UpdateOrder("9", idsToReorder) .AssertResultIs <JsonNetResult>(); #endregion Act #region Assert Assert.IsNotNull(result); Assert.AreEqual("true", result.JsonResultString); CustomFieldRepository.AssertWasCalled(a => a.EnsurePersistent(Arg <CustomField> .Is.Anything), x => x.Repeat.Times(4)); var args = CustomFieldRepository.GetArgumentsForCallsMadeOn(a => a.EnsurePersistent(Arg <CustomField> .Is.Anything)); Assert.IsNotNull(args); Assert.AreEqual(4, ((CustomField)args[0][0]).Id); Assert.AreEqual(1, ((CustomField)args[0][0]).Rank); Assert.AreEqual(3, ((CustomField)args[1][0]).Id); Assert.AreEqual(2, ((CustomField)args[1][0]).Rank); Assert.AreEqual(2, ((CustomField)args[2][0]).Id); Assert.AreEqual(3, ((CustomField)args[2][0]).Rank); Assert.AreEqual(5, ((CustomField)args[3][0]).Id); Assert.AreEqual(4, ((CustomField)args[3][0]).Rank); #endregion Assert }
public void TestCustomFieldWithExistingOrganizationSaves() { #region Arrange var record = GetValid(9); record.Organization = OrganizationRepository.Queryable.Single(a => a.Id == "3"); #endregion Arrange #region Act CustomFieldRepository.DbContext.BeginTransaction(); CustomFieldRepository.EnsurePersistent(record); CustomFieldRepository.DbContext.CommitTransaction(); #endregion Act #region Assert Assert.AreEqual("3", record.Organization.Id); Assert.IsFalse(record.IsTransient()); Assert.IsTrue(record.IsValid()); #endregion Assert }
public void TestIsRequiredIsTrueSaves() { #region Arrange var customField = GetValid(9); customField.IsRequired = true; #endregion Arrange #region Act CustomFieldRepository.DbContext.BeginTransaction(); CustomFieldRepository.EnsurePersistent(customField); CustomFieldRepository.DbContext.CommitTransaction(); #endregion Act #region Assert Assert.IsTrue(customField.IsRequired); Assert.IsFalse(customField.IsTransient()); Assert.IsTrue(customField.IsValid()); #endregion Assert }
public void TestRankWithMinIntValueSaves() { #region Arrange var record = GetValid(9); record.Rank = int.MinValue; #endregion Arrange #region Act CustomFieldRepository.DbContext.BeginTransaction(); CustomFieldRepository.EnsurePersistent(record); CustomFieldRepository.DbContext.CommitTransaction(); #endregion Act #region Assert Assert.AreEqual(int.MinValue, record.Rank); Assert.IsFalse(record.IsTransient()); Assert.IsTrue(record.IsValid()); #endregion Assert }
public void TestNameWithLongValueSaves() { #region Arrange var customField = GetValid(9); customField.Name = "x".RepeatTimes(999); #endregion Arrange #region Act CustomFieldRepository.DbContext.BeginTransaction(); CustomFieldRepository.EnsurePersistent(customField); CustomFieldRepository.DbContext.CommitTransaction(); #endregion Act #region Assert Assert.AreEqual(999, customField.Name.Length); Assert.IsFalse(customField.IsTransient()); Assert.IsTrue(customField.IsValid()); #endregion Assert }
public async Task CanSaveAndGetCustomField() { var db = GetSut(); var sut = new CustomFieldRepository(db); sut.Add(new CustomField { AuthorId = 1, Name = "social|facebook|1", Content = "http://your.facebook.page.com" }); await db.SaveChangesAsync(); var result = sut.Single(f => f.Name.Contains("social|facebook")); Assert.NotNull(result); sut.Remove(result); await db.SaveChangesAsync(); result = sut.Single(f => f.Name.Contains("social|facebook")); Assert.Null(result); }
public void TestEditPostReturnsViewWhenInvalid() { #region Arrange var customFields = new List <CustomField>(); customFields.Add(CreateValidEntities.CustomField(1)); customFields[0].Organization = CreateValidEntities.Organization(9); new FakeCustomFields(0, CustomFieldRepository, customFields); SecurityService.Expect(a => a.HasWorkgroupOrOrganizationAccess(Arg <Workgroup> .Is.Anything, Arg <Organization> .Is.Anything, out Arg <string> .Out(null).Dummy)).Return(true); var customField = CreateValidEntities.CustomField(9); customField.Name = null; #endregion Arrange #region Act var result = Controller.Edit(1, customField) .AssertViewRendered() .WithViewData <CustomFieldViewModel>(); #endregion Act #region Assert Assert.IsNotNull(result); Assert.AreEqual("Name9", result.Organization.Name); Assert.AreEqual("Name9", result.CustomField.Organization.Name); Assert.AreEqual(null, result.CustomField.Name); Assert.IsTrue(result.CustomField.IsActive); Assert.AreEqual(0, result.CustomField.Rank); Assert.IsFalse(result.CustomField.IsRequired); SecurityService.AssertWasCalled(a => a.HasWorkgroupOrOrganizationAccess(Arg <Workgroup> .Is.Anything, Arg <Organization> .Is.Anything, out Arg <string> .Out("Fail Message").Dummy)); var args = SecurityService.GetArgumentsForCallsMadeOn(a => a.HasWorkgroupOrOrganizationAccess(Arg <Workgroup> .Is.Anything, Arg <Organization> .Is.Anything, out Arg <string> .Out(null).Dummy))[0]; Assert.IsNull(args[0]); Assert.AreEqual("Name9", ((Organization)args[1]).Name); Controller.ModelState.AssertErrorsAre("The Name field is required."); CustomFieldRepository.AssertWasNotCalled(a => a.EnsurePersistent(Arg <CustomField> .Is.Anything)); #endregion Assert }
public void TestUpdateOrderReturnsTrueWhenNotExceptions1() { #region Arrange new FakeCustomFields(10, CustomFieldRepository); var idsToReorder = new List <int>() { 99, 100 }; #endregion Arrange #region Act var result = Controller.UpdateOrder("9", idsToReorder) .AssertResultIs <JsonNetResult>(); #endregion Act #region Assert Assert.IsNotNull(result); Assert.AreEqual("true", result.JsonResultString); CustomFieldRepository.AssertWasNotCalled(a => a.EnsurePersistent(Arg <CustomField> .Is.Anything)); #endregion Assert }
private SendGridService GetSut() { var data = new Mock <IDataService>(); var options = new DbContextOptionsBuilder <AppDbContext>() .UseSqlite("DataSource=Blog.db").Options; var context = new AppDbContext(options); IPostRepository posts = new PostRepository(context); IAuthorRepository authors = new AuthorRepository(context); INewsletterRepository letters = new NewsletterRepository(context); ICustomFieldRepository custom = new CustomFieldRepository(context); IDataService ds = new DataService(context, posts, authors, null, null, custom, letters); var logger = new Mock <ILogger <SendGridService> >(); var storage = new Mock <IStorageService>(); var config = new ConfigurationBuilder().AddJsonFile("appsettings.json").Build(); return(new SendGridService(ds, config, logger.Object, storage.Object)); }
public void Create(CustomFieldModel viewModel, EducationSecurityPrincipal user) { if (viewModel == null) { throw new ArgumentNullException("viewModel"); } if (user == null) { throw new ArgumentNullException("user"); } CustomField item = CreateFieldEntity(); viewModel.CopyTo(item); item.Categories = CustomFieldCategoryRepository.Items.Where(c => viewModel.SelectedCategories.Contains(c.Id)).ToList(); if (item.Categories.Count != viewModel.SelectedCategories.Count()) { throw new EntityNotFoundException("At least one selected category could not be found."); } item.CreatingUserId = user.Identity.UserEntity.Id; CustomFieldRepository.Add(item); RepositoryContainer.Save(); }
public void TestUpdateOrderReturnsFalseWhenException() { #region Arrange var customFields = new List <CustomField>(); var org = CreateValidEntities.Organization(9); org.SetIdTo("9"); for (int i = 0; i < 5; i++) { customFields.Add(CreateValidEntities.CustomField(i + 1)); customFields[i].Organization = org; customFields[i].Rank = i + 1; } customFields[4].Rank = 1; customFields[0].Organization = CreateValidEntities.Organization(8); customFields[0].Organization.SetIdTo("8"); new FakeCustomFields(0, CustomFieldRepository, customFields); var idsToReorder = new List <int>() { 1, 4, 3, 2, 5, 99 }; CustomFieldRepository.Expect(a => a.EnsurePersistent(Arg <CustomField> .Is.Anything)) .Throw(new ApplicationException("Fake Exception")); #endregion Arrange #region Act var result = Controller.UpdateOrder("9", idsToReorder) .AssertResultIs <JsonNetResult>(); #endregion Act #region Assert Assert.IsNotNull(result); Assert.AreEqual("false", result.JsonResultString); CustomFieldRepository.AssertWasCalled(a => a.GetNullableById(Arg <int> .Is.Anything), x => x.Repeat.Times(2)); #endregion Assert }