public async Task ReturnCorrectDtoWhen_ParamsAreValid() { //Arrange var options = Utils.GetOptions(nameof(ReturnCorrectDtoWhen_ParamsAreValid)); var mockDateTimeProvider = new Mock <IDateTimeProvider>(); var mockBlobService = new Mock <IBlobServices>(); var testId = Guid.NewGuid(); var form = new Form { Id = testId, Title = "TestForm1", Description = "TestDescription" }; using (var arrangeContext = new SurvelloContext(options)) { await arrangeContext.Forms.AddAsync(form); await arrangeContext.SaveChangesAsync(); } //Act & Assert using (var assertContext = new SurvelloContext(options)) { var sut = new FormServices(assertContext, mockDateTimeProvider.Object, mockBlobService.Object); var result = await sut.GetFormAsync(testId); Assert.AreEqual(form.Id, result.Id); Assert.AreEqual(form.Title, result.Title); Assert.AreEqual(form.Description, result.Description); } }
public async Task ThrowException_WhenNoUserFormsFound() { var options = Utils.GetOptions(nameof(ThrowException_WhenNoUserFormsFound)); var mockDateTimeProvider = new Mock <IDateTimeProvider>(); var mockBlobService = new Mock <IBlobServices>(); var userId = Guid.NewGuid(); var user = new User { Id = userId, UserName = "******" }; using (var arrangeContext = new SurvelloContext(options)) { await arrangeContext.Users.AddAsync(user); await arrangeContext.SaveChangesAsync(); } using (var assertContext = new SurvelloContext(options)) { var sut = new FormServices(assertContext, mockDateTimeProvider.Object, mockBlobService.Object); await Assert.ThrowsExceptionAsync <BusinessLogicException>(() => sut.GetUserFormsAsync(userId)); } }
public async Task ReturnTrue_WhenFormIsDeleted() { //Arrange var options = Utils.GetOptions(nameof(ReturnTrue_WhenFormIsDeleted)); var mockDateTimeProvider = new Mock <IDateTimeProvider>(); var mockBlobService = new Mock <IBlobServices>(); var form = new Form { Id = Guid.NewGuid(), Title = "TestForm" }; using (var arrangeContext = new SurvelloContext(options)) { await arrangeContext.Forms.AddAsync(form); await arrangeContext.SaveChangesAsync(); } //Act & Assert using (var assertContext = new SurvelloContext(options)) { var sut = new FormServices(assertContext, mockDateTimeProvider.Object, mockBlobService.Object); var result = await sut.DeleteFormAsync(form.Id); Assert.IsTrue(result); } }
public async Task ReturnCorrectFormDtoWhen_ParamsAreValid() { //Arrange var options = Utils.GetOptions(nameof(ReturnCorrectFormDtoWhen_ParamsAreValid)); var mockDateTimeProvider = new Mock <IDateTimeProvider>(); var mockBlobService = new Mock <IBlobServices>(); var testId = Guid.NewGuid(); var testId2 = Guid.NewGuid(); var testId3 = Guid.NewGuid(); var form = new Form { Id = testId, Title = "TestForm1", Description = "TestDescription", UserId = testId3 }; var form2 = new Form { Id = testId2, Title = "TestForm2", Description = "TestDescription2", UserId = testId3 }; var user = new User { Id = testId3, UserName = "******" }; using (var arrangeContext = new SurvelloContext(options)) { await arrangeContext.Users.AddAsync(user); await arrangeContext.Forms.AddAsync(form); await arrangeContext.Forms.AddAsync(form2); await arrangeContext.SaveChangesAsync(); } //Act & Assert using (var assertContext = new SurvelloContext(options)) { var sut = new FormServices(assertContext, mockDateTimeProvider.Object, mockBlobService.Object); var result = (await sut.GetUserFormsAsync(testId3)).ToList(); Assert.AreEqual(2, result.Count); Assert.AreEqual(form.Id, result[0].Id); Assert.AreEqual(form.Title, result[0].Title); Assert.AreEqual(form.Description, result[0].Description); Assert.AreEqual(form2.Id, result[1].Id); Assert.AreEqual(form2.Title, result[1].Title); Assert.AreEqual(form2.Description, result[1].Description); } }
public void SortByNumberOfFilledFormDesc() { //Arrange var options = Utils.GetOptions(nameof(SortByNumberOfFilledFormDesc)); var mockDateTimeProvider = new Mock <IDateTimeProvider>(); var mockBlobService = new Mock <IBlobServices>(); var testId = Guid.NewGuid(); var testId2 = Guid.NewGuid(); var testId3 = Guid.NewGuid(); var sortOrder = "numberoffilledforms_desc"; var form1 = new Form { Id = testId, Title = "FirstPlace", UserId = testId3, CreatedOn = DateTime.Now, NumberOfFilledForms = 5 }; var form2 = new Form { Id = testId2, Title = "SecondPlace", UserId = testId3, CreatedOn = DateTime.UtcNow, NumberOfFilledForms = 3 }; var user = new User { Id = testId3, UserName = "******" }; using (var arrangeContext = new SurvelloContext(options)) { arrangeContext.Users.AddAsync(user); arrangeContext.Forms.AddAsync(form1); arrangeContext.Forms.AddAsync(form2); arrangeContext.Forms.AddAsync(form2); arrangeContext.SaveChangesAsync(); } //Act & Assert using (var assertContext = new SurvelloContext(options)) { var sut = new FormServices(assertContext, mockDateTimeProvider.Object, mockBlobService.Object); var result = sut.Sort(sortOrder, user.Id).ToArray(); Assert.AreEqual(form1.Id, result.First().Id); Assert.AreEqual(form1.Title, result.First().Title); Assert.AreEqual(form1.NumberOfFilledForms, result.First().NumberOfFilledForms); Assert.AreEqual(form2.Id, result.Last().Id); Assert.AreEqual(form2.Title, result.Last().Title); Assert.AreEqual(form2.CreatedOn, result.Last().CreatedOn); } }
public async Task ThrowExcep_WhenNoFormFound() { var options = Utils.GetOptions(nameof(ThrowExcep_WhenNoFormFound)); var mockDateTimeProvider = new Mock <IDateTimeProvider>(); var mockBlobService = new Mock <IBlobServices>(); var id = Guid.NewGuid(); using (var assertContext = new SurvelloContext(options)) { var sut = new FormServices(assertContext, mockDateTimeProvider.Object, mockBlobService.Object); await Assert.ThrowsExceptionAsync <BusinessLogicException>(() => sut.GetFormWithAllAnswers(id)); } }
public async Task ThrowException_WhenDtoIsNull() { var options = Utils.GetOptions(nameof(ThrowException_WhenDtoIsNull)); var mockDateTimeProvider = new Mock <IDateTimeProvider>(); var mockBlobService = new Mock <IBlobServices>(); var id = Guid.NewGuid(); using (var assertContext = new SurvelloContext(options)) { var sut = new FormServices(assertContext, mockDateTimeProvider.Object, mockBlobService.Object); await Assert.ThrowsExceptionAsync <BusinessLogicException>(() => sut.CreateFormAsync(null)); } }
public void SortByTitleDesc_Succeed() { //Arrange var options = Utils.GetOptions(nameof(SortByTitleDesc_Succeed)); var mockDateTimeProvider = new Mock <IDateTimeProvider>(); var mockBlobService = new Mock <IBlobServices>(); var testId = Guid.NewGuid(); var testId2 = Guid.NewGuid(); var testId3 = Guid.NewGuid(); var sortOrder = "title_desc"; var form1 = new Form { Id = testId, Title = "FirstPlace", UserId = testId3 }; var form2 = new Form { Id = testId2, Title = "SecondPlace", UserId = testId3 }; var user = new User { Id = testId3, UserName = "******" }; using (var arrangeContext = new SurvelloContext(options)) { arrangeContext.Users.AddAsync(user); arrangeContext.Forms.AddAsync(form1); arrangeContext.Forms.AddAsync(form2); arrangeContext.Forms.AddAsync(form2); arrangeContext.SaveChangesAsync(); } //Act & Assert using (var assertContext = new SurvelloContext(options)) { var sut = new FormServices(assertContext, mockDateTimeProvider.Object, mockBlobService.Object); var result = sut.Sort(sortOrder, user.Id); Assert.AreEqual(form1.Id, result.Last().Id); Assert.AreEqual(form1.Title, result.Last().Title); Assert.AreEqual(form2.Id, result.First().Id); Assert.AreEqual(form2.Title, result.First().Title); } }
public static void Seeder(SurvelloContext context) { var formDto = new FormDTO { Title = "TestForm", Description = "TestDescrtiption", UserId = userId, TextQuestions = new List <TextQuestionDTO>() { new TextQuestionDTO { Description = "Where are you from?", IsLongAnswer = false, IsRequired = true, } }, MultipleChoiceQuestions = new List <MultipleChoiceQuestionDTO>() { new MultipleChoiceQuestionDTO { Description = "How would you rate your experience with our product?", IsRequired = true, IsMultipleAnswer = false, Options = new List <MultipleChoiceOptionDTO>() { new MultipleChoiceOptionDTO { OptionDescription = "Satisfied", } } }, }, DocumentQuestions = new List <DocumentQuestionDTO>() { new DocumentQuestionDTO { Description = "TestDescription", FileNumberLimit = 10, FileSize = 1, } } }; var user = new User { Id = userId, UserName = "******" }; }
public async Task ThrowWhen_FormNotFound() { var options = Utils.GetOptions(nameof(ThrowWhen_FormNotFound)); var mockDateTimeProvider = new Mock <IDateTimeProvider>(); var mockBlobService = new Mock <IBlobServices>(); var testId = Guid.NewGuid(); var testId2 = Guid.NewGuid(); var form = new Form { Id = testId, Title = "TestForm1", Description = "TestDescription" }; using (var assertContext = new SurvelloContext(options)) { var sut = new FormServices(assertContext, mockDateTimeProvider.Object, mockBlobService.Object); await Assert.ThrowsExceptionAsync <BusinessLogicException>(() => sut.GetFormAsync(testId2)); } }
public async Task CorrectlyGetAllAnswers() { //Arrange var options = Utils.GetOptions(nameof(CorrectlyGetAllAnswers)); var mockDateTimeProvider = new Mock <IDateTimeProvider>(); var mockBlobService = new Mock <IBlobServices>(); var userId = Guid.NewGuid(); var formId = Guid.NewGuid(); var multipleChoicOptionId = Guid.NewGuid(); var form = new Form { Id = formId, Title = "TestForm", Description = "TestDescrtiption", UserId = userId, TextQuestions = new List <TextQuestion>() { new TextQuestion { Description = "Where are you from?", IsLongAnswer = false, IsRequired = true, Answers = new List <TextAnswer>() { new TextAnswer() { Answer = "Bourgas", } } } }, MultipleChoiceQuestions = new List <MultipleChoiceQuestion>() { new MultipleChoiceQuestion { Description = "How would you rate your experience with our product?", IsRequired = true, IsMultipleAnswer = false, Options = new List <MultipleChoiceOption>() { new MultipleChoiceOption { Option = "Satisfied", //Answers = new List<MultipleChoiceAnswer>() //{ // new MultipleChoiceAnswer() // { // MultipleChoiceOptionId = multipleChoicOptionId // } //} } } } }, DocumentQuestions = new List <DocumentQuestion>() { new DocumentQuestion { Description = "TestDescription", FileNumberLimit = 10, FileSize = 1, Answers = new List <DocumentAnswer>() { new DocumentAnswer() { FileName = "TestFilePath" } } } } }; var user = new User { Id = userId, UserName = "******" }; using (var arrangeContext = new SurvelloContext(options)) { await arrangeContext.Forms.AddAsync(form); await arrangeContext.SaveChangesAsync(); } //Act & Assert using (var assertContext = new SurvelloContext(options)) { var sut = new FormServices(assertContext, mockDateTimeProvider.Object, mockBlobService.Object); //await sut.GetFormWithAllAnswers(formId); var result = assertContext.Forms.First(); var resultTA = assertContext.TextAnswers.First(); var resultMCA = assertContext.MultipleChoiceAnswers.First(); var resultDA = assertContext.DocumentAnswers.First(); var resultOptions = assertContext.MultipleChoiceOptions.First(); Assert.AreEqual(form.Title, result.Title); Assert.AreEqual(form.Description, result.Description); foreach (var tq in form.TextQuestions) { foreach (var ta in tq.Answers) { Assert.AreEqual(ta.Answer, resultTA.Answer); } } foreach (var mcq in form.MultipleChoiceQuestions) { foreach (var op in mcq.Options) { //foreach (var mcqa in op.Answers) //{ // Assert.AreEqual(mcqa.MultipleChoiceOptionId,resultMCA.MultipleChoiceOptionId); //} } } foreach (var dq in form.DocumentQuestions) { foreach (var da in dq.Answers) { Assert.AreEqual(da.FileName, resultDA.FileName); } } } }
public FormServices(SurvelloContext dbcontext, IDateTimeProvider dateTimeProvider, IBlobServices blobServices) { this.dbcontext = dbcontext; this.dateTimeProvider = dateTimeProvider; this.blobServices = blobServices; }
public async Task CorrectlyCreatedForm() { //Arrange var options = Utils.GetOptions(nameof(CorrectlyCreatedForm)); var mockDateTimeProvider = new Mock <IDateTimeProvider>(); var mockBlobService = new Mock <IBlobServices>(); var userId = Guid.NewGuid(); var formDto = new FormDTO { Title = "TestForm", Description = "TestDescrtiption", UserId = userId, TextQuestions = new List <TextQuestionDTO>() { new TextQuestionDTO { Description = "Where are you from?", IsLongAnswer = false, IsRequired = true, } }, MultipleChoiceQuestions = new List <MultipleChoiceQuestionDTO>() { new MultipleChoiceQuestionDTO { Description = "How would you rate your experience with our product?", IsRequired = true, IsMultipleAnswer = false, Options = new List <MultipleChoiceOptionDTO>() { new MultipleChoiceOptionDTO { OptionDescription = "Satisfied", } } } }, DocumentQuestions = new List <DocumentQuestionDTO>() { new DocumentQuestionDTO { Description = "TestDescription", FileNumberLimit = 10, FileSize = 1, } } }; var user = new User { Id = userId, UserName = "******" }; //Act & Assert using (var assertContext = new SurvelloContext(options)) { var sut = new FormServices(assertContext, mockDateTimeProvider.Object, mockBlobService.Object); await sut.CreateFormAsync(formDto); var result = assertContext.Forms.First(); var resultTQ = assertContext.TextQuestions.First(); var resultMCQ = assertContext.MultipleChoiceQuestions.First(); var resultDQ = assertContext.DocumentQuestions.First(); var resultOptions = assertContext.MultipleChoiceOptions.First(); Assert.AreEqual(formDto.Title, result.Title); Assert.AreEqual(formDto.Description, result.Description); foreach (var tq in formDto.TextQuestions) { Assert.AreEqual(tq.Description, resultTQ.Description); Assert.AreEqual(tq.IsLongAnswer, resultTQ.IsLongAnswer); Assert.AreEqual(tq.IsRequired, resultTQ.IsRequired); } foreach (var mcq in formDto.MultipleChoiceQuestions) { Assert.AreEqual(mcq.Description, resultMCQ.Description); Assert.AreEqual(mcq.IsMultipleAnswer, resultMCQ.IsMultipleAnswer); Assert.AreEqual(mcq.IsRequired, resultMCQ.IsRequired); foreach (var op in mcq.Options) { Assert.AreEqual(op.OptionDescription, resultOptions.Option); } } foreach (var dq in formDto.DocumentQuestions) { Assert.AreEqual(dq.Description, resultDQ.Description); Assert.AreEqual(dq.FileNumberLimit, resultDQ.FileNumberLimit); Assert.AreEqual(dq.FileSize, resultDQ.FileSize); } } }