Пример #1
0
        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);
            }
        }
Пример #2
0
        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));
            }
        }
Пример #3
0
        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);
            }
        }
Пример #4
0
        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);
            }
        }
Пример #5
0
        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);
            }
        }
Пример #6
0
        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));
            }
        }
Пример #7
0
        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));
            }
        }
Пример #8
0
        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);
            }
        }
Пример #9
0
        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 = "******"
            };
        }
Пример #10
0
        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));
            }
        }
Пример #11
0
        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);
                    }
                }
            }
        }
Пример #12
0
 public FormServices(SurvelloContext dbcontext, IDateTimeProvider dateTimeProvider, IBlobServices blobServices)
 {
     this.dbcontext        = dbcontext;
     this.dateTimeProvider = dateTimeProvider;
     this.blobServices     = blobServices;
 }
Пример #13
0
        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);
                }
            }
        }