예제 #1
0
        public void EditAsync_CoOwnerIncludesPerson_AddsPerson()
        {
            var tyler = new ApplicationUser()
            {
                UserName = "******"
            };
            var shannon = new ApplicationUser()
            {
                UserName = "******"
            };
            var survey = new Survey()
            {
                Owner = tyler
            };
            var newValues = new SurveyEditViewModel()
            {
                SharedUsers = new[] { "Shannon" }
            };

            var dbMock         = new Mock <IApplicationDBContext>();
            var surveyDataMock = new Mock <DbSet <Survey> >().SetupData(new[] { survey });

            dbMock.SetupGet(d => d.Surveys).Returns(surveyDataMock.Object);
            var usersMock = new Mock <DbSet <ApplicationUser> >().SetupData(new[] { tyler, shannon });

            dbMock.SetupGet(d => d.Users).Returns(usersMock.Object);

            var subject = new SurveyService(dbMock.Object);

            subject.EditAsync(survey, newValues).Wait();

            Assert.AreEqual(1, survey.SharedUsers.Count);
            dbMock.Verify(d => d.SaveChangesAsync());
        }
예제 #2
0
        public void EditAsync_CoOwnerIncludesOwner_ThrowsException()
        {
            var tyler = new ApplicationUser()
            {
                UserName = "******"
            };
            var survey = new Survey()
            {
                Owner = tyler
            };
            var newValues = new SurveyEditViewModel()
            {
                SharedUsers = new[] { "Tyler" }
            };

            var dbMock         = new Mock <IApplicationDBContext>();
            var surveyDataMock = new Mock <DbSet <Survey> >().SetupData(new[] { survey });

            dbMock.SetupGet(d => d.Surveys).Returns(surveyDataMock.Object);
            var usersMock = new Mock <DbSet <ApplicationUser> >().SetupData(new[] { tyler });

            dbMock.SetupGet(d => d.Users).Returns(usersMock.Object);

            var subject = new SurveyService(dbMock.Object);

            var ex = Helpers.Catch <SurveyException>(() => {
                subject.EditAsync(survey, newValues).Wait();
            });

            Assert.AreEqual("You cannot be a co-admin on a survey you own.", ex.Message);
            Assert.AreEqual(0, survey.SharedUsers.Count);
            dbMock.Verify(d => d.SaveChangesAsync(), Times.Never);
        }
예제 #3
0
        public void EditAsync_CoOwnerIncludesMysteryPerson_ThrowsException()
        {
            var tyler = new ApplicationUser()
            {
                UserName = "******"
            };
            var survey = new Survey()
            {
                Owner = tyler
            };
            var newValues = new SurveyEditViewModel()
            {
                SharedUsers = new[] { "Shannon", "Bill" }
            };

            var dbMock         = new Mock <IApplicationDBContext>();
            var surveyDataMock = new Mock <DbSet <Survey> >().SetupData(new[] { survey });

            dbMock.SetupGet(d => d.Surveys).Returns(surveyDataMock.Object);
            var usersMock = new Mock <DbSet <ApplicationUser> >().SetupData(new[] { tyler });

            dbMock.SetupGet(d => d.Users).Returns(usersMock.Object);

            var subject = new SurveyService(dbMock.Object);

            var ex = Helpers.Catch <SurveyException>(() => {
                subject.EditAsync(survey, newValues).Wait();
            });

            Assert.AreEqual("Unknown users: Shannon, Bill. Please make sure these users have signed into Mood before.", ex.Message);
            Assert.AreEqual(0, survey.SharedUsers.Count);
            dbMock.Verify(d => d.SaveChangesAsync(), Times.Never);
        }
예제 #4
0
        public void EditAsync_NewNameIsWhitespace_ThrowsException()
        {
            var survey = new Survey()
            {
                Name = "oldName"
            };
            var newValues = new SurveyEditViewModel()
            {
                Name = "\n \t"
            };

            var dbMock         = new Mock <IApplicationDBContext>();
            var surveyDataMock = new Mock <DbSet <Survey> >().SetupData(new[] { survey });

            dbMock.SetupGet(d => d.Surveys).Returns(surveyDataMock.Object);

            var subject = new SurveyService(dbMock.Object);

            var ex = Helpers.Catch <SurveyException>(() => {
                subject.EditAsync(survey, newValues).Wait();
            });

            Assert.AreEqual("Name must not be whitespace", ex.Message);
            Assert.AreEqual("oldName", survey.Name);
            dbMock.Verify(d => d.SaveChangesAsync(), Times.Never);
        }
예제 #5
0
        public void EditAsync_NewValuesNull_ThrowsException()
        {
            var dbMock = new Mock <IApplicationDBContext>();

            var subject = new SurveyService(dbMock.Object);

            var ex = Helpers.Catch <ArgumentNullException>(() =>
            {
                subject.EditAsync(new Survey(), null).Wait();
            });

            Assert.AreEqual("newValues", ex.ParamName);
        }
예제 #6
0
        public void EditAsync_SurveyNull_ThrowsException()
        {
            var dbMock = new Mock <IApplicationDBContext>();

            var subject = new SurveyService(dbMock.Object);

            var ex = Helpers.Catch <ArgumentNullException>(() =>
            {
                subject.EditAsync(null, new SurveyEditViewModel()).Wait();
            });

            Assert.AreEqual("survey", ex.ParamName);
        }
예제 #7
0
        public void EditAsync_NewPublicResultsValue_UpdatesPublicResults()
        {
            var survey = new Survey()
            {
                PublicResults = false
            };
            var newValues = new SurveyEditViewModel()
            {
                PublicResults = true
            };
            var dbMock = new Mock <IApplicationDBContext>();

            var subject = new SurveyService(dbMock.Object);

            subject.EditAsync(survey, newValues).Wait();

            Assert.AreEqual(true, survey.PublicResults);
            dbMock.Verify(d => d.SaveChangesAsync());
        }
예제 #8
0
        public void EditAsync_NewNameIsNull_NullsTheName()
        {
            var survey = new Survey()
            {
                Name = "oldName"
            };
            var newValues = new SurveyEditViewModel()
            {
                Name = null
            };

            var dbMock         = new Mock <IApplicationDBContext>();
            var surveyDataMock = new Mock <DbSet <Survey> >().SetupData(new[] { survey });

            dbMock.SetupGet(d => d.Surveys).Returns(surveyDataMock.Object);

            var subject = new SurveyService(dbMock.Object);

            subject.EditAsync(survey, newValues).Wait();

            Assert.IsNull(survey.Name);
            dbMock.Verify(d => d.SaveChangesAsync());
        }