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 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 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))); }