public void SaveSurveyThrowsExceptionIfTitleAndSlugNameAreNullOrEmpty() { var store = new SurveyStore(new Mock <IAzureTable <SurveyRow> >().Object, new Mock <IAzureTable <QuestionRow> >().Object, null); var survey = new Survey(); store.SaveSurvey(survey); }
public async Task SaveSurveyThrowsExceptionIfTitleAndSlugNameAreNullOrEmpty() { var store = new SurveyStore(new Mock <IAzureTable <SurveyRow> >().Object, new Mock <IAzureTable <QuestionRow> >().Object, new Mock <IInitializationStatusService>().Object); var survey = new Survey(); await store.SaveSurveyAsync(survey); }
public void GetSurveyByTenantAndSlugNameReturnsWithQuestionPossibleAnswers() { string expectedKey = string.Format(CultureInfo.InvariantCulture, "{0}_{1}", "tenant", "slug-name"); var surveyRow = new SurveyRow { RowKey = expectedKey }; var surveyRowsForTheQuery = new[] { surveyRow }; var mockSurveyTable = new Mock <IAzureTable <SurveyRow> >(); mockSurveyTable.SetupGet(t => t.Query).Returns(surveyRowsForTheQuery.AsQueryable()); mockSurveyTable.Setup(t => t.GetRetryPolicyFactoryInstance()).Returns(new DefaultRetryPolicyFactory()); var questionRow = new QuestionRow { PartitionKey = expectedKey, PossibleAnswers = "possible answers", Type = Enum.GetName(typeof(QuestionType), QuestionType.SimpleText) }; var questionsForTheQuery = new[] { questionRow }; var mockQuestionTable = new Mock <IAzureTable <QuestionRow> >(); mockQuestionTable.SetupGet(t => t.Query).Returns(questionsForTheQuery.AsQueryable()); mockQuestionTable.Setup(t => t.GetRetryPolicyFactoryInstance()).Returns(new DefaultRetryPolicyFactory()); var store = new SurveyStore(mockSurveyTable.Object, mockQuestionTable.Object, null); var survey = store.GetSurveyByTenantAndSlugName("tenant", "slug-name", true); Assert.AreEqual("possible answers", survey.Questions.First().PossibleAnswers); }
public void DeleteSurveyByTenantAndSlugNameDeleteQuestionsByTenantAndSlugNameInPartitionKeyFromQuestionTable() { string expectedKey = string.Format(CultureInfo.InvariantCulture, "{0}_{1}", "tenant", "slug-name"); var surveyRow = new SurveyRow { RowKey = expectedKey }; var otherSurveyRow = new SurveyRow { RowKey = "other_row_key" }; var surveyRowsForTheQuery = new[] { surveyRow, otherSurveyRow }; var mockSurveyTable = new Mock <IAzureTable <SurveyRow> >(); mockSurveyTable.SetupGet(t => t.Query).Returns(surveyRowsForTheQuery.AsQueryable()); mockSurveyTable.Setup(t => t.GetRetryPolicyFactoryInstance()).Returns(new DefaultRetryPolicyFactory()); var questionRow = new QuestionRow { PartitionKey = expectedKey, PossibleAnswers = "possible answers", Type = Enum.GetName(typeof(QuestionType), QuestionType.SimpleText) }; var questionsForTheQuery = new[] { questionRow }; var mockQuestionTable = new Mock <IAzureTable <QuestionRow> >(); mockQuestionTable.SetupGet(t => t.Query).Returns(questionsForTheQuery.AsQueryable()); mockQuestionTable.Setup(t => t.GetRetryPolicyFactoryInstance()).Returns(new DefaultRetryPolicyFactory()); IEnumerable <QuestionRow> actualQuestionsToDelete = null; mockQuestionTable.Setup(t => t.Delete(It.IsAny <IEnumerable <QuestionRow> >())) .Callback <IEnumerable <QuestionRow> >(q => actualQuestionsToDelete = q); var store = new SurveyStore(mockSurveyTable.Object, mockQuestionTable.Object, null); store.DeleteSurveyByTenantAndSlugName("tenant", "slug-name"); Assert.AreEqual(1, actualQuestionsToDelete.Count()); Assert.AreSame(questionRow, actualQuestionsToDelete.First()); }
public async Task DeleteSurveyByTenantAndSlugNameDeleteQuestionsByTenantAndSlugNameInPartitionKeyFromQuestionTable() { string expectedKey = string.Format(CultureInfo.InvariantCulture, "{0}_{1}", "tenant", "slug-name"); var surveyRow = new SurveyRow { RowKey = expectedKey }; var mockSurveyTable = new Mock <IAzureTable <SurveyRow> >(); mockSurveyTable.Setup(t => t.GetByRowKeyAsync(expectedKey)).ReturnsAsync(new[] { surveyRow }); var questionRow = new QuestionRow { PartitionKey = expectedKey, PossibleAnswers = "possible answers", Type = Enum.GetName(typeof(QuestionType), QuestionType.SimpleText) }; var questions = new[] { questionRow }; var mockQuestionTable = new Mock <IAzureTable <QuestionRow> >(); mockQuestionTable.Setup(t => t.GetByPartitionKeyAsync(expectedKey)).ReturnsAsync(questions); IEnumerable <QuestionRow> actualQuestionsToDelete = null; mockQuestionTable.Setup(t => t.DeleteAsync(It.IsAny <IEnumerable <QuestionRow> >())) .Returns(Task.Delay(0)) .Callback <IEnumerable <QuestionRow> >(q => actualQuestionsToDelete = q); var store = new SurveyStore(mockSurveyTable.Object, mockQuestionTable.Object, new Mock <IInitializationStatusService>().Object); await store.DeleteSurveyByTenantAndSlugNameAsync("tenant", "slug-name"); Assert.AreEqual(1, actualQuestionsToDelete.Count()); Assert.AreSame(questionRow, actualQuestionsToDelete.First()); }
public async Task GetSurveyByTenantAndSlugNameReturnsNullWhenNotFound() { var mock = new Mock <IAzureTable <SurveyRow> >(); var store = new SurveyStore(mock.Object, default(IAzureTable <QuestionRow>), new Mock <IInitializationStatusService>().Object); var survey = await store.GetSurveyByTenantAndSlugNameAsync("tenant", "slug-name", false); Assert.IsNull(survey); }
public async Task GetSurveyExtensionByTenantAndSlugName() { var mock = new Mock <IUDFAzureTable>(); var customEntity = new CustomEntity { Id = 1 }; mock.Setup(t => t.GetExtensionByPartitionRowKeyAsync(typeof(CustomEntity), "tenant", "slugname")).ReturnsAsync(customEntity); var store = new SurveyStore(default(IAzureTable <SurveyRow>), default(IAzureTable <QuestionRow>), mock.Object); var retrievedExtension = await store.GetSurveyExtensionByTenantAndSlugNameAsync("tenant", "slugname", typeof(CustomEntity)); Assert.AreEqual(customEntity.ToString(), retrievedExtension.ToString()); }
public void SaveSurveyCallsAddFromSurveyTableSettingTheTenantAndSlugNameAsTheRowKey() { var mockSurveyTable = new Mock <IAzureTable <SurveyRow> >(); var store = new SurveyStore(mockSurveyTable.Object, new Mock <IAzureTable <QuestionRow> >().Object, null); var survey = new Survey { Title = "title to slug", Tenant = "tenant" }; store.SaveSurvey(survey); mockSurveyTable.Verify( c => c.Add( It.Is <SurveyRow>(s => s.RowKey == "tenant_title-to-slug")), Times.Once()); }
public async Task SaveSurveyCallsAddFromSurveyTableSettingTheTenantAndSlugNameAsTheRowKey() { var mockSurveyTable = new Mock <IAzureTable <SurveyRow> >(); var store = new SurveyStore(mockSurveyTable.Object, new Mock <IAzureTable <QuestionRow> >().Object, new Mock <IInitializationStatusService>().Object); var survey = new Survey { Title = "title to slug", TenantId = "tenant" }; await store.SaveSurveyAsync(survey); mockSurveyTable.Verify( c => c.AddAsync( It.Is <SurveyRow>(s => s.RowKey == "tenant_title-to-slug")), Times.Once()); }
public async Task GetSurveysByTenantFiltersByTenantInPartitionKey() { var surveyRow = new SurveyRow { PartitionKey = "tenant" }; var surveyRows = new[] { surveyRow }; var mock = new Mock <IAzureTable <SurveyRow> >(); mock.Setup(t => t.GetByPartitionKeyAsync("tenant")).ReturnsAsync(surveyRows); var store = new SurveyStore(mock.Object, default(IAzureTable <QuestionRow>), new Mock <IInitializationStatusService>().Object); var surveysForTenant = await store.GetSurveysByTenantAsync("tenant"); Assert.AreEqual(1, surveysForTenant.Count()); }
public async Task GetSurveysByTenantReturnsSlugName() { var surveyRow = new SurveyRow { PartitionKey = "tenant", SlugName = "slug" }; var surveyRowsToReturn = new[] { surveyRow }; var mock = new Mock <IAzureTable <SurveyRow> >(); mock.Setup(t => t.GetByPartitionKeyAsync("tenant")).ReturnsAsync(surveyRowsToReturn); var store = new SurveyStore(mock.Object, default(IAzureTable <QuestionRow>), new Mock <IInitializationStatusService>().Object); var actualSurveys = await store.GetSurveysByTenantAsync("tenant"); Assert.AreEqual("slug", actualSurveys.First().SlugName); }
public async Task GetRecentSurveysReturnsSlugName() { var surveyRow = new SurveyRow { PartitionKey = "tenant", SlugName = "slug" }; var surveyRowsToReturn = new[] { surveyRow }; var mock = new Mock <IAzureTable <SurveyRow> >(); mock.Setup(t => t.GetLatestAsync(10)).ReturnsAsync(surveyRowsToReturn); var store = new SurveyStore(mock.Object, default(IAzureTable <QuestionRow>), null); var actualSurveys = await store.GetRecentSurveysAsync(); Assert.AreEqual("slug", actualSurveys.First().SlugName); }
public async Task GetSurveysByTenantReturnsTitle() { var surveyRow = new SurveyRow { PartitionKey = "tenant", Title = "title" }; var surveyRowsToReturn = new[] { surveyRow }; var mock = new Mock <IAzureTable <SurveyRow> >(); mock.Setup(t => t.GetByPartitionKeyAsync("tenant")).ReturnsAsync(surveyRowsToReturn); var store = new SurveyStore(mock.Object, default(IAzureTable <QuestionRow>), null); var actualSurveys = await store.GetSurveysByTenantAsync("tenant"); Assert.AreEqual("title", actualSurveys.First().Title); }
public async Task SaveSurveyCallsAddFromSurveyTableSettingTheTenantAsThePartitionKey() { var mockSurveyTable = new Mock <IAzureTable <SurveyRow> >(); var store = new SurveyStore(mockSurveyTable.Object, new Mock <IAzureTable <QuestionRow> >().Object, null); var survey = new Survey { Title = "title", TenantId = "tenant" }; await store.SaveSurveyAsync(survey); mockSurveyTable.Verify( c => c.AddAsync( It.Is <SurveyRow>(s => s.PartitionKey == "tenant")), Times.Once()); }
public async Task SaveSurveyCallsAddFromSurveyTableGeneratingTheSlugName() { var mockSurveyTable = new Mock <IAzureTable <SurveyRow> >(); var store = new SurveyStore(mockSurveyTable.Object, new Mock <IAzureTable <QuestionRow> >().Object, null); var survey = new Survey { Title = "title to slug" }; await store.SaveSurveyAsync(survey); mockSurveyTable.Verify( c => c.AddAsync( It.Is <SurveyRow>(s => s.SlugName == "title-to-slug")), Times.Once()); }
public async Task GetSurveyByTenantAndSlugNameReturnsSlugName() { string expectedRowKey = string.Format(CultureInfo.InvariantCulture, "{0}_{1}", "tenant", "slug-name"); var surveyRow = new SurveyRow { RowKey = expectedRowKey, SlugName = "slug-name" }; var mock = new Mock <IAzureTable <SurveyRow> >(); mock.Setup(t => t.GetByRowKeyAsync(expectedRowKey)).ReturnsAsync(new[] { surveyRow }); var store = new SurveyStore(mock.Object, default(IAzureTable <QuestionRow>), null); var survey = await store.GetSurveyByTenantAndSlugNameAsync("tenant", "slug-name", false); Assert.AreEqual("slug-name", survey.SlugName); }
public async Task GetSurveyByTenantAndSlugNameReturnsCreatedOn() { string expectedRowKey = string.Format(CultureInfo.InvariantCulture, "{0}_{1}", "tenant", "slug-name"); var expectedDate = new DateTime(2000, 1, 1); var surveyRow = new SurveyRow { RowKey = expectedRowKey, CreatedOn = expectedDate }; var mock = new Mock <IAzureTable <SurveyRow> >(); mock.Setup(t => t.GetByRowKeyAsync(expectedRowKey)).ReturnsAsync(new[] { surveyRow }); var store = new SurveyStore(mock.Object, default(IAzureTable <QuestionRow>), new Mock <IInitializationStatusService>().Object); var survey = await store.GetSurveyByTenantAndSlugNameAsync("tenant", "slug-name", false); Assert.AreEqual(expectedDate, survey.CreatedOn); }
public async Task GetRecentSurveysReturnsTitle() { var surveyRow = new SurveyRow { PartitionKey = "tenant", Title = "title" }; var surveyRowsToReturn = new[] { surveyRow }; var mock = new Mock <IAzureTable <SurveyRow> >(); mock.Setup(t => t.GetLatestAsync(10)).ReturnsAsync(surveyRowsToReturn); var store = new SurveyStore(mock.Object, default(IAzureTable <QuestionRow>), new Mock <IInitializationStatusService>().Object); var actualSurveys = await store.GetRecentSurveysAsync(); Assert.AreEqual("title", actualSurveys.First().Title); }
public async Task SaveSurveyCallsAddFromSurveyTableWithTenant() { var mockSurveyTable = new Mock <IAzureTable <SurveyRow> >(); var store = new SurveyStore(mockSurveyTable.Object, new Mock <IAzureTable <QuestionRow> >().Object, new Mock <IInitializationStatusService>().Object); var survey = new Survey { Title = "title", TenantId = "tenant" }; await store.SaveSurveyAsync(survey); mockSurveyTable.Verify( c => c.AddAsync( It.Is <SurveyRow>(s => s.PartitionKey == "tenant")), Times.Once()); }
public void SaveSurveyCallsAddFromSurveyTableWithTenant() { var mockSurveyTable = new Mock <IAzureTable <SurveyRow> >(); var store = new SurveyStore(mockSurveyTable.Object, new Mock <IAzureTable <QuestionRow> >().Object, null); var survey = new Survey { Title = "title", Tenant = "tenant" }; store.SaveSurvey(survey); mockSurveyTable.Verify( c => c.Add( It.Is <SurveyRow>(s => s.PartitionKey == "tenant")), Times.Once()); }
public async Task DeleteSurveyByTenantAndSlugNameDoesNotDeleteSurveyAndQuestionWhenSurveyDoesNotExist() { var mockSurveyTable = new Mock <IAzureTable <SurveyRow> >(); mockSurveyTable.Setup(t => t.GetByRowKeyAsync(It.IsAny <string>())).ReturnsAsync(null); var mockQuestionTable = new Mock <IAzureTable <QuestionRow> >(); mockQuestionTable.Setup(t => t.GetByPartitionKeyAsync(It.IsAny <string>())).ReturnsAsync(new QuestionRow[] { }); var store = new SurveyStore(mockSurveyTable.Object, mockQuestionTable.Object, new Mock <IInitializationStatusService>().Object); await store.DeleteSurveyByTenantAndSlugNameAsync("tenant", "slug-name"); mockSurveyTable.Verify(t => t.DeleteAsync(It.IsAny <SurveyRow>()), Times.Never()); mockQuestionTable.Verify(t => t.DeleteAsync(It.IsAny <IEnumerable <QuestionRow> >()), Times.Never()); }
public void GetSurveysByTenantReturnsSlugName() { var surveyRow = new SurveyRow { PartitionKey = "tenant", SlugName = "slug" }; var surveyRowsToReturn = new[] { surveyRow }; var mock = new Mock <IAzureTable <SurveyRow> >(); mock.SetupGet(t => t.Query).Returns(surveyRowsToReturn.AsQueryable()); mock.Setup(t => t.GetRetryPolicyFactoryInstance()).Returns(new DefaultRetryPolicyFactory()); var store = new SurveyStore(mock.Object, default(IAzureTable <QuestionRow>), null); var actualSurveys = store.GetSurveysByTenant("tenant"); Assert.AreEqual("slug", actualSurveys.First().SlugName); }
public void GetSurveyByTenantAndSlugNameReturnsNullWhenNotFound() { var otherSurveyRow = new SurveyRow { RowKey = "other_row_key" }; var surveyRowsForTheQuery = new[] { otherSurveyRow }; var mock = new Mock <IAzureTable <SurveyRow> >(); mock.SetupGet(t => t.Query).Returns(surveyRowsForTheQuery.AsQueryable()); mock.Setup(t => t.GetRetryPolicyFactoryInstance()).Returns(new DefaultRetryPolicyFactory()); var store = new SurveyStore(mock.Object, default(IAzureTable <QuestionRow>), null); var survey = store.GetSurveyByTenantAndSlugName("tenant", "slug-name", false); Assert.IsNull(survey); }
public async Task GetSurveyByTenantAndSlugNameReturnsTenantIdFromPartitionKey() { string expectedRowKey = string.Format(CultureInfo.InvariantCulture, "{0}_{1}", "tenant", "slug-name"); var surveyRow = new SurveyRow { RowKey = expectedRowKey, PartitionKey = "tenant" }; var surveyRows = new[] { surveyRow }; var mock = new Mock <IAzureTable <SurveyRow> >(); mock.Setup(t => t.GetByRowKeyAsync(expectedRowKey)).ReturnsAsync(surveyRows); var store = new SurveyStore(mock.Object, default(IAzureTable <QuestionRow>), new Mock <IInitializationStatusService>().Object); var survey = await store.GetSurveyByTenantAndSlugNameAsync("tenant", "slug-name", false); Assert.AreEqual("tenant", survey.TenantId); }
public async Task GetSurveysByTenantReturnsCreatedOn() { var expectedDate = new DateTime(2000, 1, 1); var surveyRow = new SurveyRow { PartitionKey = "tenant", CreatedOn = expectedDate }; var surveyRowsToReturn = new[] { surveyRow }; var mock = new Mock <IAzureTable <SurveyRow> >(); mock.Setup(t => t.GetByPartitionKeyAsync("tenant")).ReturnsAsync(surveyRowsToReturn); var store = new SurveyStore(mock.Object, default(IAzureTable <QuestionRow>), new Mock <IInitializationStatusService>().Object); var actualSurveys = await store.GetSurveysByTenantAsync("tenant"); Assert.AreEqual(expectedDate, actualSurveys.First().CreatedOn); }
public async Task GetSurveyByTenantAndSlugNameFiltersByTenantAndSlugNameInRowKey() { string expectedRowKey = string.Format(CultureInfo.InvariantCulture, "{0}_{1}", "tenant", "slug-name"); var surveyRow = new SurveyRow { RowKey = expectedRowKey }; var mockSurveyTable = new Mock <IAzureTable <SurveyRow> >(); mockSurveyTable.Setup(t => t.GetByRowKeyAsync(expectedRowKey)).ReturnsAsync(new[] { surveyRow }).Verifiable(); var store = new SurveyStore(mockSurveyTable.Object, default(IAzureTable <QuestionRow>), new Mock <IInitializationStatusService>().Object); var survey = await store.GetSurveyByTenantAndSlugNameAsync("tenant", "slug-name", false); Assert.IsNotNull(survey); mockSurveyTable.Verify(); }
public void GetSurveysByTenantReturnsCreatedOn() { var expectedDate = new DateTime(2000, 1, 1); var surveyRow = new SurveyRow { PartitionKey = "tenant", CreatedOn = expectedDate }; var surveyRowsToReturn = new[] { surveyRow }; var mock = new Mock <IAzureTable <SurveyRow> >(); mock.SetupGet(t => t.Query).Returns(surveyRowsToReturn.AsQueryable()); mock.Setup(t => t.GetRetryPolicyFactoryInstance()).Returns(new DefaultRetryPolicyFactory()); var store = new SurveyStore(mock.Object, default(IAzureTable <QuestionRow>), null); var actualSurveys = store.GetSurveysByTenant("tenant"); Assert.AreEqual(expectedDate, actualSurveys.First().CreatedOn); }
public void GetSurveyByTenantAndSlugNameReturnsCreatedOn() { string expectedRowKey = string.Format(CultureInfo.InvariantCulture, "{0}_{1}", "tenant", "slug-name"); var expectedDate = new DateTime(2000, 1, 1); var surveyRow = new SurveyRow { RowKey = expectedRowKey, CreatedOn = expectedDate }; var surveyRowsForTheQuery = new[] { surveyRow }; var mock = new Mock <IAzureTable <SurveyRow> >(); mock.SetupGet(t => t.Query).Returns(surveyRowsForTheQuery.AsQueryable()); mock.Setup(t => t.GetRetryPolicyFactoryInstance()).Returns(new DefaultRetryPolicyFactory()); var store = new SurveyStore(mock.Object, default(IAzureTable <QuestionRow>), null); var survey = store.GetSurveyByTenantAndSlugName("tenant", "slug-name", false); Assert.AreEqual(expectedDate, survey.CreatedOn); }
public async Task GetRecentSurveysReturnsUpto10Surveys() { var surveyRowsToReturn = new List <SurveyRow>(); for (int i = 0; i < 10; i++) { surveyRowsToReturn.Add(new SurveyRow()); } var mock = new Mock <IAzureTable <SurveyRow> >(); mock.Setup(t => t.GetLatestAsync(10)).ReturnsAsync(surveyRowsToReturn); var store = new SurveyStore(mock.Object, default(IAzureTable <QuestionRow>), new Mock <IInitializationStatusService>().Object); var actualSurveys = await store.GetRecentSurveysAsync(); Assert.AreEqual(10, actualSurveys.Count()); }
public async Task DeleteSurveyByTenantAndSlugNameDeletesSurveyWithTenantAndSlugNameInRowKeyFromSurveyTable() { string expectedRowKey = string.Format(CultureInfo.InvariantCulture, "{0}_{1}", "tenant", "slug-name"); var surveyRow = new SurveyRow { RowKey = expectedRowKey }; var mockSurveyTable = new Mock <IAzureTable <SurveyRow> >(); mockSurveyTable.Setup(t => t.GetByRowKeyAsync(expectedRowKey)).ReturnsAsync(new[] { surveyRow }); var mockQuestionTable = new Mock <IAzureTable <QuestionRow> >(); mockQuestionTable.Setup(t => t.GetByPartitionKeyAsync(expectedRowKey)).ReturnsAsync(new QuestionRow[] { }); var store = new SurveyStore(mockSurveyTable.Object, mockQuestionTable.Object, new Mock <IInitializationStatusService>().Object); await store.DeleteSurveyByTenantAndSlugNameAsync("tenant", "slug-name"); mockSurveyTable.Verify(t => t.DeleteAsync(It.Is <SurveyRow>(s => s.RowKey == expectedRowKey))); }