public void Property_Entity_DirectDependency() { CreatedODataResult<TestEntity> result = new CreatedODataResult<TestEntity>( _entity, _contentNegotiator, _request, _formatters, _locationHeader); Assert.Same(_entity, result.Entity); }
public void Property_ContentNegotiator_LocationHeader() { CreatedODataResult <TestEntity> result = new CreatedODataResult <TestEntity>( _entity, _contentNegotiator, _request, _formatters, _locationHeader); Assert.Same(_locationHeader, result.LocationHeader); }
public void Property_Entity_DirectDependency() { CreatedODataResult <TestEntity> result = new CreatedODataResult <TestEntity>( _entity, _contentNegotiator, _request, _formatters, _locationHeader); Assert.Same(_entity, result.Entity); }
public void GetEntity_ReturnsCorrect() { // Arrange Mock <CreatedODataResultTest> mock = new Mock <CreatedODataResultTest>(); CreatedODataResult <CreatedODataResultTest> result = new CreatedODataResult <CreatedODataResultTest>(mock.Object); // Act & Assert Assert.Same(mock.Object, result.Entity); }
public TestCreatedObjectResult(CreatedODataResult <T> innerResult) : base(innerResult) { }
public void Property_LocationHeader_IsEvaluatedOnlyOnce() { // Arrange Uri editLink = new Uri("http://edit-link"); Mock<EntitySetLinkBuilderAnnotation> linkBuilder = new Mock<EntitySetLinkBuilderAnnotation>(); linkBuilder.Setup(b => b.BuildEditLink(It.IsAny<EntityInstanceContext>(), ODataMetadataLevel.Default, null)) .Returns(editLink); CustomersModelWithInheritance model = new CustomersModelWithInheritance(); model.Model.SetAnnotationValue(model.Customer, new ClrTypeAnnotation(typeof(TestEntity))); model.Model.SetEntitySetLinkBuilder(model.Customers, linkBuilder.Object); ODataPath path = new ODataPath(new EntitySetPathSegment(model.Customers)); HttpRequestMessage request = new HttpRequestMessage(); request.SetEdmModel(model.Model); request.SetODataPath(path); TestController controller = new TestController { Request = request, Configuration = new HttpConfiguration() }; CreatedODataResult<TestEntity> createdODataResult = new CreatedODataResult<TestEntity>(_entity, controller); // Act Uri locationHeader = createdODataResult.LocationHeader; // Assert linkBuilder.Verify( (b) => b.BuildEditLink(It.IsAny<EntityInstanceContext>(), ODataMetadataLevel.Default, null), Times.Once()); }
public void GetInnerActionResult_ReturnsNegotiatedContentResult_IfRequestAsksForContent() { // Arrange HttpRequestMessage request = new HttpRequestMessage(); request.Headers.TryAddWithoutValidation("Prefer", "return-content"); CreatedODataResult<TestEntity> createdODataResult = new CreatedODataResult<TestEntity>(_entity, _contentNegotiator, request, _formatters, _locationHeader); // Act IHttpActionResult result = createdODataResult.GetInnerActionResult(); // Assert NegotiatedContentResult<TestEntity> negotiatedResult = Assert.IsType<NegotiatedContentResult<TestEntity>>(result); Assert.Equal(HttpStatusCode.Created, negotiatedResult.StatusCode); Assert.Same(request, negotiatedResult.Request); Assert.Same(_contentNegotiator, negotiatedResult.ContentNegotiator); Assert.Same(_entity, negotiatedResult.Content); Assert.Same(_formatters, negotiatedResult.Formatters); }
public void Property_ContentNegotiator_LocationHeader() { CreatedODataResult<TestEntity> result = new CreatedODataResult<TestEntity>( _entity, _contentNegotiator, _request, _formatters, _locationHeader); Assert.Same(_locationHeader, result.LocationHeader); }
public void Property_EntityIdHeader_IsEvaluatedLazilyAndOnlyOnce() { // Arrange Uri idLink = new Uri("http://id-link"); Mock<NavigationSourceLinkBuilderAnnotation> linkBuilder = new Mock<NavigationSourceLinkBuilderAnnotation>(); linkBuilder.CallBase = true; linkBuilder.Setup(b => b.BuildIdLink(It.IsAny<EntityInstanceContext>(), ODataMetadataLevel.FullMetadata)) .Returns(idLink); CustomersModelWithInheritance model = new CustomersModelWithInheritance(); model.Model.SetAnnotationValue(model.Customer, new ClrTypeAnnotation(typeof(TestEntity))); model.Model.SetNavigationSourceLinkBuilder(model.Customers, linkBuilder.Object); ODataPath path = new ODataPath(new EntitySetPathSegment(model.Customers)); HttpRequestMessage request = new HttpRequestMessage(); request.ODataProperties().Model = model.Model; request.ODataProperties().Path = path; TestController controller = new TestController { Configuration = new HttpConfiguration() }; CreatedODataResult<TestEntity> createdODataResult = new CreatedODataResult<TestEntity>(_entity, controller); // Act controller.Request = request; Uri entityIdHeader = createdODataResult.EntityId; // Assert Assert.Same(idLink, entityIdHeader); linkBuilder.Verify( b => b.BuildIdLink(It.IsAny<EntityInstanceContext>(), ODataMetadataLevel.FullMetadata), Times.Once()); }
public void Property_LocationHeader_IsEvaluatedLazily() { // Arrange Uri editLink = new Uri("http://edit-link"); Mock<NavigationSourceLinkBuilderAnnotation> linkBuilder = new Mock<NavigationSourceLinkBuilderAnnotation>(); linkBuilder.Setup(b => b.BuildEditLink(It.IsAny<EntityInstanceContext>(), ODataMetadataLevel.FullMetadata, null)) .Returns(editLink); CustomersModelWithInheritance model = new CustomersModelWithInheritance(); model.Model.SetAnnotationValue(model.Customer, new ClrTypeAnnotation(typeof(TestEntity))); model.Model.SetNavigationSourceLinkBuilder(model.Customers, linkBuilder.Object); ODataPath path = new ODataPath(new EntitySetPathSegment(model.Customers)); HttpRequestMessage request = new HttpRequestMessage(); request.ODataProperties().Model = model.Model; request.ODataProperties().Path = path; TestController controller = new TestController(); controller.Configuration = new HttpConfiguration(); CreatedODataResult<TestEntity> createdODataResult = new CreatedODataResult<TestEntity>(_entity, controller); // Act controller.Request = request; Uri locationHeader = createdODataResult.LocationHeader; // Assert Assert.Same(editLink, locationHeader); }
public void GenerateLocationHeader_ForContainment() { // Arrange CustomersModelWithInheritance model = new CustomersModelWithInheritance(); model.Model.SetAnnotationValue(model.OrderLine, new ClrTypeAnnotation(typeof(OrderLine))); var path = new DefaultODataPathHandler().Parse( model.Model, "http://localhost/", "MyOrders(1)/OrderLines"); var request = GetODataRequest(model.Model); request.ODataProperties().Model = model.Model; request.ODataProperties().Path = path; var orderLine = new OrderLine { ID = 2 }; var createdODataResult = new CreatedODataResult<OrderLine>( orderLine, _contentNegotiator, request, _formatters, _locationHeader); // Act var locationHeader = createdODataResult.GenerateLocationHeader(); // Assert Assert.Equal("http://localhost/MyOrders(1)/OrderLines(2)", locationHeader.ToString()); }
public void GetInnerActionResult_ReturnsNoContentStatusCodeResult_IfRequestAsksForNoContent() { // Arrange HttpRequestMessage request = new HttpRequestMessage(); request.Headers.TryAddWithoutValidation("Prefer", "return=minimal"); CreatedODataResult<TestEntity> createdODataResult = new CreatedODataResult<TestEntity>(_entity, _contentNegotiator, request, _formatters, _locationHeader); // Act IHttpActionResult result = createdODataResult.GetInnerActionResult(); // Assert StatusCodeResult statusCodeResult = Assert.IsType<StatusCodeResult>(result); Assert.Equal(HttpStatusCode.NoContent, statusCodeResult.StatusCode); Assert.Same(request, statusCodeResult.Request); }
public async Task CalculatePoints(UserHabitRecordsControllerTestData_MonthNoOfCount testData) { var context = this.fixture.GetCurrentDataContext(); UserHabitRecordsController control = new(context); // Add Habit, Habit Rules UserHabit habit = new UserHabit(); habit.TargetUser = DataSetupUtility.UserA; habit.ValidFrom = new DateTime(2021, 1, 1); habit.ValidTo = new DateTime(2022, 12, 31); habit.Name = "Habit_1"; habit.Category = HabitCategory.Positive; habit.Comment = habit.Name; habit.Frequency = HabitFrequency.Monthly; habit.CompleteCategory = HabitCompleteCategory.NumberOfCount; habit.CompleteCondition = testData.CompleteCondition; habit.StartDate = testData.DateInMonth; context.UserHabits.Add(habit); context.SaveChanges(); Int32 nNewHabitID = habit.ID; foreach (var rule in testData.RuleList) { rule.HabitID = nNewHabitID; context.UserHabitRules.Add(rule); } context.SaveChanges(); // Add user record. foreach (UserHabitRecord record in testData.RecordList) { record.HabitID = nNewHabitID; var rst = control.Post(record); Assert.NotNull(rst); if (rst != null) { CreatedODataResult <UserHabitRecord> rstrecord = (CreatedODataResult <UserHabitRecord>)rst.Result; Assert.NotNull(rstrecord); } } // Check on DB directly var dbrecords = (from dbrecord in context.UserHabitRecords where dbrecord.HabitID == nNewHabitID select dbrecord).ToList(); Assert.Equal(testData.RecordCount, dbrecords.Count); // Ensure rule is assigned correctly if (testData.ExpectedRuleDateList.Count > 0) { var rulecnt = 0; dbrecords.ForEach(dbr => { if (dbr.RuleID != null) { rulecnt++; var ridx = testData.ExpectedRuleDateList.FindIndex(rd => rd.Date == dbr.RecordDate.Date); Assert.NotEqual(-1, ridx); } }); Assert.Equal(testData.ExpectedRuleDateList.Count, rulecnt); } DataSetupUtility.ClearUserHabitData(context, nNewHabitID); context.SaveChanges(); await context.DisposeAsync(); }
public async Task CalculatePoints_Daily_NumberOfTimes(UserHabitRecordsControllerTestData_DailyNoOfTimes testData) { var context = this.fixture.GetCurrentDataContext(); UserHabitRecordsController control = new(context); // Add Habit, Habit Rule UserHabit habit = new UserHabit(); habit.TargetUser = DataSetupUtility.UserA; habit.ValidFrom = new DateTime(2021, 1, 1); habit.ValidTo = new DateTime(2022, 12, 31); habit.Name = "Habit_Daily_1"; habit.Category = HabitCategory.Positive; habit.Comment = habit.Name; habit.Frequency = HabitFrequency.Daily; habit.CompleteCategory = HabitCompleteCategory.NumberOfTimes; context.UserHabits.Add(habit); context.SaveChanges(); Int32 nNewHabitID = habit.ID; foreach (var rule in testData.RuleList) { rule.HabitID = habit.ID; context.UserHabitRules.Add(rule); } context.SaveChanges(); // Add user record. foreach (DateTime dt in testData.RecordDatesList) { UserHabitRecord record = new UserHabitRecord(); record.HabitID = habit.ID; record.RecordDate = dt; record.Comment = "Test1"; var rst = control.Post(record); Assert.NotNull(rst); if (rst != null) { CreatedODataResult <UserHabitRecord> rstrecord = (CreatedODataResult <UserHabitRecord>)rst.Result; Assert.NotNull(rstrecord); } } // Check on DB directly var dbrecords = (from dbrecord in context.UserHabitRecords where dbrecord.HabitID == habit.ID orderby dbrecord.RecordDate ascending select dbrecord).ToList(); Assert.Equal(testData.ExpectedRecordList.Count, dbrecords.Count); // Ensure rule is assigned correctly if (testData.ExpectedRecordList.Count > 0) { foreach (var dbrecord in dbrecords) { var ridx = testData.ExpectedRecordList.FindIndex(rd => rd.RecordDate == dbrecord.RecordDate); Assert.NotEqual(-1, ridx); Assert.Equal(testData.ExpectedRecordList[ridx].RuleID, dbrecord.RuleID); Assert.Equal(testData.ExpectedRecordList[ridx].ContinuousCount, dbrecord.ContinuousCount); } } DataSetupUtility.ClearUserHabitData(context, nNewHabitID); context.SaveChanges(); await context.DisposeAsync(); }
public async Task CalculatePoints_Weekly_NumberOfTimes(UserHabitRecordsControllerTestData_WeekNoOfTimes testData) { var context = this.fixture.GetCurrentDataContext(); UserHabitRecordsController control = new(context); // Add Habit, Habit Rule UserHabit habit = new UserHabit(); habit.TargetUser = DataSetupUtility.UserA; habit.ValidFrom = new DateTime(2021, 1, 1); habit.ValidTo = new DateTime(2022, 12, 31); habit.Name = "Habit_1"; habit.Category = HabitCategory.Positive; habit.Comment = habit.Name; habit.Frequency = HabitFrequency.Weekly; habit.CompleteCategory = HabitCompleteCategory.NumberOfTimes; habit.CompleteCondition = testData.CompleteCondition; habit.StartDate = (int)testData.Dow; context.UserHabits.Add(habit); context.SaveChanges(); Int32 nNewHabitID = habit.ID; UserHabitRule rule1 = new UserHabitRule(); rule1.HabitID = habit.ID; rule1.RuleID = 1; rule1.ContinuousRecordFrom = 1; rule1.ContinuousRecordTo = 2; rule1.Point = 1; context.UserHabitRules.Add(rule1); UserHabitRule rule2 = new UserHabitRule(); rule2.HabitID = habit.ID; rule2.RuleID = 2; rule2.ContinuousRecordFrom = 2; rule1.ContinuousRecordTo = 3; rule2.Point = 2; context.UserHabitRules.Add(rule2); UserHabitRule rule3 = new UserHabitRule(); rule3.HabitID = habit.ID; rule3.RuleID = 3; rule3.ContinuousRecordFrom = 3; rule3.Point = 4; context.UserHabitRules.Add(rule3); context.SaveChanges(); // Add user record. //Boolean lastRst = false; foreach (DateTime dt in testData.RecordDatesList) { UserHabitRecord record = new UserHabitRecord(); record.HabitID = habit.ID; record.RecordDate = dt; record.Comment = "Test1"; var rst = control.Post(record); Assert.NotNull(rst); if (rst != null) { CreatedODataResult <UserHabitRecord> rstrecord = (CreatedODataResult <UserHabitRecord>)rst.Result; Assert.NotNull(rstrecord); //lastRst = rstrecord.Entity.RuleID.HasValue; } } // Check on DB directly var dbrecords = (from dbrecord in context.UserHabitRecords where dbrecord.HabitID == habit.ID select dbrecord).ToList(); Assert.Equal(testData.RecordCount, dbrecords.Count); // Ensure rule is assigned correctly if (testData.TargetRuleDateList.Count > 0) { var rulecnt = 0; dbrecords.ForEach(dbr => { if (dbr.RuleID != null) { rulecnt++; var ridx = testData.TargetRuleDateList.FindIndex(rd => rd.Date == dbr.RecordDate.Date); Assert.NotEqual(-1, ridx); } }); Assert.Equal(testData.TargetRuleDateList.Count, rulecnt); } DataSetupUtility.ClearUserHabitData(context, nNewHabitID); context.SaveChanges(); await context.DisposeAsync(); }