예제 #1
0
        /// <summary>
        /// Constructor
        /// </summary>
        public AzureDataAccess()
        {
            AzurePollAppDBContext context = new AzurePollAppDBContext();

            UserRepository       = new UserRepository(context);
            CategoryRepository   = new CategoryRepository(context);
            TokenRepository      = new TokenRepository(context);
            QuestionRepository   = new QuestionRepository(context);
            AnswerRepository     = new AnswerRepository(context);
            FormRepository       = new FormRepository(context);
            VotedFormsRepository = new VotedFormsRepository(context);
        }
예제 #2
0
        public AzureDataAccessMock()
        {
            /*
             *  Data Lists
             */

            List <User> usersList = new List <User>
            {
                new User {
                    UserID = 1, Username = "******", Password = "******", Email = "*****@*****.**", Role = "admin", Verified = "yes"
                },
                new User {
                    UserID = 2, Username = "******", Password = "******", Email = "*****@*****.**", Role = "user", Verified = "yes"
                },
                new User {
                    UserID = 3, Username = "******", Password = "******", Email = "*****@*****.**", Role = "user", Verified = "no"
                }
            };

            List <Form> formsList = new List <Form>
            {
                new Form {
                    FormID = 1, UserID = 1, CreatedDate = System.DateTime.Now, CategoryID = 1, Title = "Title1", State = "open", NrVotes = 100, Deadline = System.DateTime.Now.AddDays(10)
                },
                new Form {
                    FormID = 2, UserID = 2, CreatedDate = System.DateTime.Now, CategoryID = 2, Title = "Title2", State = "open", NrVotes = 150, Deadline = System.DateTime.Now.AddDays(10)
                },
                new Form {
                    FormID = 3, UserID = 3, CreatedDate = System.DateTime.Now.AddDays(-20), CategoryID = 3, Title = "Title3", State = "closed", NrVotes = 50, Deadline = System.DateTime.Now.AddDays(-10)
                }
            };

            List <Category> categoriesList = new List <Category>
            {
                new Category {
                    CategoryID = 1, Name = "category1"
                },
                new Category {
                    CategoryID = 2, Name = "category2"
                },
                new Category {
                    CategoryID = 3, Name = "category3"
                }
            };

            List <Token> tokensList = new List <Token>
            {
                new Token {
                    TokenID = 1, UserID = 1, TokenString = "1"
                },
                new Token {
                    TokenID = 2, UserID = 2, TokenString = "2"
                },
                new Token {
                    TokenID = 3, UserID = 3, TokenString = "3"
                },
            };

            List <Question> questionsList = new List <Question>
            {
                new Question {
                    QuestionID = 1, FormID = 1, Content = "question11"
                },
                new Question {
                    QuestionID = 2, FormID = 1, Content = "question12"
                },
                new Question {
                    QuestionID = 3, FormID = 2, Content = "question21"
                },
                new Question {
                    QuestionID = 4, FormID = 2, Content = "question22"
                },
                new Question {
                    QuestionID = 5, FormID = 3, Content = "question31"
                },
                new Question {
                    QuestionID = 6, FormID = 3, Content = "question32"
                }
            };

            List <Answer> answersList = new List <Answer>
            {
                new Answer {
                    AnswerID = 1, QuestionID = 1, Content = "answer111", NrVotes = 5
                },
                new Answer {
                    AnswerID = 2, QuestionID = 1, Content = "answer112", NrVotes = 15
                },
                new Answer {
                    AnswerID = 3, QuestionID = 2, Content = "answer121", NrVotes = 25
                },
                new Answer {
                    AnswerID = 4, QuestionID = 2, Content = "answer122", NrVotes = 5
                },
                new Answer {
                    AnswerID = 5, QuestionID = 3, Content = "answer211", NrVotes = 15
                },
                new Answer {
                    AnswerID = 6, QuestionID = 3, Content = "answer212", NrVotes = 25
                },
                new Answer {
                    AnswerID = 7, QuestionID = 4, Content = "answer221", NrVotes = 5
                },
                new Answer {
                    AnswerID = 8, QuestionID = 4, Content = "answer222", NrVotes = 15
                },
                new Answer {
                    AnswerID = 9, QuestionID = 5, Content = "answer311", NrVotes = 25
                },
                new Answer {
                    AnswerID = 10, QuestionID = 5, Content = "answer312", NrVotes = 5
                },
                new Answer {
                    AnswerID = 11, QuestionID = 6, Content = "answer321", NrVotes = 15
                },
                new Answer {
                    AnswerID = 12, QuestionID = 6, Content = "answer322", NrVotes = 25
                },
            };

            List <VotedForm> votedFormsList = new List <VotedForm>
            {
                new VotedForm {
                    UserID = 1, FormID = 2
                },
                new VotedForm {
                    UserID = 1, FormID = 3
                },
                new VotedForm {
                    UserID = 2, FormID = 1
                },
                new VotedForm {
                    UserID = 2, FormID = 2
                },
            };

            foreach (var form in formsList)
            {
                form.Category = categoriesList.Where(c => c.CategoryID == form.CategoryID).FirstOrDefault();
                form.User     = usersList.Where(u => u.UserID == form.UserID).FirstOrDefault();
            }

            foreach (var question in questionsList)
            {
                question.Form = formsList.Where(f => f.FormID == question.FormID).FirstOrDefault();
            }

            foreach (var answer in answersList)
            {
                answer.Question = questionsList.Where(q => q.QuestionID == answer.QuestionID).FirstOrDefault();
            }

            foreach (var token in tokensList)
            {
                token.User = usersList.Where(u => u.UserID == token.UserID).FirstOrDefault();
            }

            foreach (var votedForm in votedFormsList)
            {
                votedForm.Form = formsList.Where(f => f.FormID == votedForm.FormID).FirstOrDefault();
            }

            /*
             *  GetAll
             *
             */

            Mock <IUserRepository> userRepositoryMock = new Mock <IUserRepository>();

            userRepositoryMock.Setup(m => m.GetAll()).Returns(usersList.AsQueryable());

            Mock <ICategoryRepository> categoryRepositoryMock = new Mock <ICategoryRepository>();

            categoryRepositoryMock.Setup(m => m.GetAll()).Returns(categoriesList.AsQueryable());

            Mock <ITokenRepository> tokenRepositoryMock = new Mock <ITokenRepository>();

            tokenRepositoryMock.Setup(m => m.GetAll()).Returns(tokensList.AsQueryable());

            Mock <IQuestionRepository> questionRepositoryMock = new Mock <IQuestionRepository>();

            questionRepositoryMock.Setup(m => m.GetAll()).Returns(questionsList.AsQueryable());

            Mock <IAnswerRepository> answerRepositoryMock = new Mock <IAnswerRepository>();

            answerRepositoryMock.Setup(a => a.GetAll()).Returns(answersList.AsQueryable());

            Mock <IFormRepository> formRepositoryMock = new Mock <IFormRepository>();

            formRepositoryMock.Setup(m => m.GetAll()).Returns(formsList.AsQueryable());

            Mock <IVotedFormsRepository> votedFormRepositoryMock = new Mock <IVotedFormsRepository>();

            votedFormRepositoryMock.Setup(m => m.GetAll()).Returns(votedFormsList.AsQueryable());

            /*
             *  FindAllBy
             *
             */
            userRepositoryMock.Setup(m => m.FindAllBy(It.IsAny <Expression <Func <User, bool> > >()))
            .Returns <Expression <Func <User, bool> > >(usersList.AsQueryable().Where);

            formRepositoryMock.Setup(m => m.FindAllBy(It.IsAny <Expression <Func <Form, bool> > >()))
            .Returns <Expression <Func <Form, bool> > >(predicate => formsList.AsQueryable().Where(predicate));

            answerRepositoryMock.Setup(m => m.FindAllBy(It.IsAny <Expression <Func <Answer, bool> > >()))
            .Returns <Expression <Func <Answer, bool> > >(answersList.AsQueryable().Where);

            questionRepositoryMock.Setup(m => m.FindAllBy(It.IsAny <Expression <Func <Question, bool> > >()))
            .Returns <Expression <Func <Question, bool> > >(predicate => questionsList.AsQueryable().Where(predicate));

            tokenRepositoryMock.Setup(m => m.FindAllBy(It.IsAny <Expression <Func <Token, bool> > >()))
            .Returns <Expression <Func <Token, bool> > >(tokensList.AsQueryable().Where);

            votedFormRepositoryMock.Setup(m => m.FindAllBy(It.IsAny <Expression <Func <VotedForm, bool> > >()))
            .Returns <Expression <Func <VotedForm, bool> > >(predicate => votedFormsList.AsQueryable().Where(predicate));

            categoryRepositoryMock.Setup(m => m.FindAllBy(It.IsAny <Expression <Func <Category, bool> > >()))
            .Returns <Expression <Func <Category, bool> > >(predicate => categoriesList.AsQueryable().Where(predicate));

            /*
             *  FindFirstBy
             *
             */

            formRepositoryMock.Setup(m => m.FindFirstBy(It.IsAny <Expression <Func <Form, bool> > >()))
            .Returns <Expression <Func <Form, bool> > >(predicate => formsList.AsQueryable().Where(predicate).FirstOrDefault());

            categoryRepositoryMock.Setup(m => m.FindFirstBy(It.IsAny <Expression <Func <Category, bool> > >()))
            .Returns <Expression <Func <Category, bool> > >(predicate => categoriesList.AsQueryable().Where(predicate).FirstOrDefault());

            userRepositoryMock.Setup(m => m.FindFirstBy(It.IsAny <Expression <Func <User, bool> > >()))
            .Returns <Expression <Func <User, bool> > >(predicate => usersList.AsQueryable().Where(predicate).FirstOrDefault());

            questionRepositoryMock.Setup(m => m.FindFirstBy(It.IsAny <Expression <Func <Question, bool> > >()))
            .Returns <Expression <Func <Question, bool> > >(predicate => questionsList.AsQueryable().Where(predicate).FirstOrDefault());

            answerRepositoryMock.Setup(m => m.FindFirstBy(It.IsAny <Expression <Func <Answer, bool> > >()))
            .Returns <Expression <Func <Answer, bool> > >(predicate => answersList.AsQueryable().Where(predicate).FirstOrDefault());

            tokenRepositoryMock.Setup(m => m.FindFirstBy(It.IsAny <Expression <Func <Token, bool> > >()))
            .Returns <Expression <Func <Token, bool> > >(predicate => tokensList.AsQueryable().Where(predicate).FirstOrDefault());

            votedFormRepositoryMock.Setup(m => m.FindFirstBy(It.IsAny <Expression <Func <VotedForm, bool> > >()))
            .Returns <Expression <Func <VotedForm, bool> > >(predicate => votedFormsList.AsQueryable().Where(predicate).FirstOrDefault());

            /*
             *  Add
             *
             */

            formRepositoryMock.Setup(x => x.Add(It.IsAny <Form>())).Callback(new Action <Form>(f =>
            {
                f.FormID = formsList.Last().FormID + 1;
                formsList.Add(f);
            }));

            questionRepositoryMock.Setup(m => m.Add(It.IsAny <Question>())).Callback(new Action <Question>(f =>
            {
                f.QuestionID = questionsList.Last().QuestionID + 1;
                questionsList.Add(f);
            }));

            answerRepositoryMock.Setup(m => m.Add(It.IsAny <Answer>())).Callback(new Action <Answer> (f => {
                f.AnswerID = answersList.Last().AnswerID + 1;
                answersList.Add(f);
            }));

            categoryRepositoryMock.Setup(m => m.Add(It.IsAny <Category>())).Callback(new Action <Category> (f => {
                categoriesList.Add(f);
            }));

            tokenRepositoryMock.Setup(m => m.Add(It.IsAny <Token>())).Callback(new Action <Token> (f => {
                tokensList.Add(f);
            }));

            userRepositoryMock.Setup(m => m.Add(It.IsAny <User>())).Callback(new Action <User> (f => {
                f.UserID = usersList.Last().UserID + 1;
                usersList.Add(f);
            }));

            /*
             *  Delete
             *
             */

            formRepositoryMock.Setup(x => x.Delete(It.IsAny <Form>())).Callback(new Action <Form>(x =>
            {
                var i = formsList.FindIndex(f => f.FormID.Equals(x.FormID));
                formsList.RemoveAt(i);
            }));

            questionRepositoryMock.Setup(x => x.Delete(It.IsAny <Question>())).Callback(new Action <Question>(x =>
            {
                var i = questionsList.FindIndex(f => f.QuestionID.Equals(x.QuestionID));
                questionsList.RemoveAt(i);
            }));

            answerRepositoryMock.Setup(x => x.Delete(It.IsAny <Answer>())).Callback(new Action <Answer>(x =>
            {
                var i = answersList.FindIndex(f => f.AnswerID.Equals(x.AnswerID));
                answersList.RemoveAt(i);
            }));

            categoryRepositoryMock.Setup(x => x.Delete(It.IsAny <Category>())).Callback(new Action <Category>(x =>
            {
                var i = categoriesList.FindIndex(f => f.CategoryID.Equals(x.CategoryID));
                categoriesList.RemoveAt(i);
            }));

            tokenRepositoryMock.Setup(x => x.Delete(It.IsAny <Token>())).Callback(new Action <Token>(x =>
            {
                var i = tokensList.FindIndex(f => f.TokenID.Equals(x.TokenID));
                tokensList.RemoveAt(i);
            }));

            userRepositoryMock.Setup(x => x.Delete(It.IsAny <User>())).Callback(new Action <User>(x =>
            {
                var i = usersList.FindIndex(f => f.UserID.Equals(x.UserID));
                usersList.RemoveAt(i);
            }));

            /*
             *  Vote
             *
             */

            formRepositoryMock.Setup(x => x.AddVote(It.IsAny <int>())).Callback(new Action <int>(x =>
            {
                var i = formsList.FindIndex(q => q.FormID.Equals(x));
                formsList[i].NrVotes = formsList[i].NrVotes + 1;
            }));

            UserRepository       = userRepositoryMock.Object;
            FormRepository       = formRepositoryMock.Object;
            CategoryRepository   = categoryRepositoryMock.Object;
            TokenRepository      = tokenRepositoryMock.Object;
            QuestionRepository   = questionRepositoryMock.Object;
            AnswerRepository     = answerRepositoryMock.Object;
            VotedFormsRepository = votedFormRepositoryMock.Object;
        }