public void GetMunros_WhenCalledWithSpecificCategory_ReturnsOnlyMunrosWithThatCategory(int numMuns, int numTops, HillCategory category) { const int numBlanks = 20; var fakeDataContext = FakeMunroDataContext.GenerateFakeMunroDataContext(numMuns, numTops, numBlanks, 10, 1000); var service = new MunroService(fakeDataContext, testMapper); var result = service.GetMunros(new MunroQuery { Category = category }).ToList(); switch (category) { case HillCategory.Munro: Assert.Equal(numMuns, result.Count); Assert.All(result, munro => Assert.Equal("MUN", munro.HillCategory)); break; case HillCategory.Top: Assert.Equal(numTops, result.Count); Assert.All(result, munro => Assert.Equal("TOP", munro.HillCategory)); break; case HillCategory.Either: Assert.Equal(numMuns + numTops, result.Count); Assert.All(result, munro => Assert.NotEqual("", munro.HillCategory)); break; } Assert.NotEqual(result.Count, fakeDataContext.Munros.Count()); }
public void ShouldReturnGreaterThanOrEqualOfHeightMetres_And_SortHeightMetresDescending_Munros() { var munrosService = new MunroService(_invokeHandler, _expressionBuilder); var conditions = new List <Condition> { new Condition { ColumnName = nameof(MunroModel.HeightMetres), Type = ConditionType.GreaterThanOrEqual, Values = new object[] { 1000.0 } } }; var sorts = new List <Sort> { new Sort { ColumnName = nameof(MunroModel.HeightMetres), Type = SortDirectionType.Descending } }; var result = munrosService.GetMunrosByQuery(_munros, conditions, sorts, null); Assert.True(result.IsSuccess); Assert.NotNull(result.Result); Assert.IsNotEmpty(result.Result); Assert.AreEqual(result.Result.Count(), 2); Assert.That(result.Result, Is.Ordered.Descending.By("HeightMetres")); }
public void GetMunros_WhenCalledWithValidMinAndMaxHeightsEitherCategory_ReturnsOnlyMunrosWithinHeightRange() { var fakeMunros = FakeMunroDataContext.GenerateFakeMunros(10, 10, 5, 600, 1500); const int minimumHeight = 650; const int maximumHeight = 1250; var count = fakeMunros.Count(fm => !string.IsNullOrEmpty(fm.HillCategoryPost1997) && fm.HeightInMetres >= minimumHeight && fm.HeightInMetres <= maximumHeight); var fakeDataContext = new FakeMunroDataContext(fakeMunros); var service = new MunroService(fakeDataContext, testMapper); var result = service.GetMunros(new MunroQuery { MinHeightInMetres = minimumHeight, MaxHeightInMetres = maximumHeight }).ToList(); Assert.Equal(count, result.Count); Assert.NotEqual(fakeMunros.Count, result.Count); Assert.All(result, munro => Assert.InRange(munro.HeightInMetres, minimumHeight, maximumHeight)); }
public MunroControllerTest() { var dataContext = new MunroDataContext(); var service = new MunroService(dataContext, MockAutoMapper.CreateMockMapper()); controller = new MunrosController(service); }
public void ShouldReturnErrorIfEmptyMunrosList() { var munrosService = new MunroService(_invokeHandler, _expressionBuilder); var result = munrosService.GetMunrosByQuery(null, null, null, null); Assert.Null(result.Exception); Assert.False(result.IsSuccess); Assert.Null(result.Result); Assert.AreEqual(ResultCode.ObjectMissing, result.Code); }
public void ShouldReturn_Limit_Munros(int limit) { var munrosService = new MunroService(_invokeHandler, _expressionBuilder); var result = munrosService.GetMunrosByQuery(_munros, null, null, limit); Assert.True(result.IsSuccess); Assert.NotNull(result.Result); Assert.IsNotEmpty(result.Result); Assert.AreEqual(result.Result.Count(), limit); }
public void GetMunros_WhenCalledWithDefaultMunroQuery_ReturnsAllMunrosWithAPost1997Category() { const int numberOfMuns = 10; const int numberOfTops = 10; var fakeMunros = FakeMunroDataContext.GenerateFakeMunros(numberOfMuns, numberOfTops, 20, 600, 1500); var fakeDataContext = new FakeMunroDataContext(fakeMunros); var service = new MunroService(fakeDataContext, testMapper); var result = service.GetMunros(new MunroQuery()).ToList(); Assert.Equal(result.Count, numberOfMuns + numberOfTops); Assert.All(result, munro => Assert.NotEqual("", munro.HillCategory)); }
public void GetMunros_WhenCalledWithLimit_ReturnsLimitNumberOfValidMunros(int limit, int numMuns, int numTops) { var fakeMunros = FakeMunroDataContext.GenerateFakeMunros(numMuns, numTops, 0, 600, 1500); var fakeDataContext = new FakeMunroDataContext(fakeMunros); var service = new MunroService(fakeDataContext, testMapper); var result = service.GetMunros(new MunroQuery { Limit = limit }).ToList(); Assert.Equal(result.Count, Math.Min(limit, numMuns + numTops)); Assert.All(result, munro => Assert.NotEqual("", munro.HillCategory)); }
public void ShouldReturnEqualHillCategoryMUN_And_EqualHillCategoryTOP_And_RangeOfHeightMetres_SortAscendingByName_And_Limit_Munros() { var munrosService = new MunroService(_invokeHandler, _expressionBuilder); var conditions = new List <Condition> { new Condition { ColumnName = nameof(MunroModel.HillCategory), Type = ConditionType.Equal, Values = new object[] { HillCategory.MUN } }, new Condition { ColumnName = nameof(MunroModel.HillCategory), Type = ConditionType.Equal, Values = new object[] { HillCategory.TOP } }, new Condition { ColumnName = nameof(MunroModel.HeightMetres), Type = ConditionType.Range, Values = new object[] { 940.0, 2000.0 } } }; var sorts = new List <Sort> { new Sort { ColumnName = nameof(MunroModel.HeightMetres), Type = SortDirectionType.Descending }, new Sort { ColumnName = nameof(MunroModel.Name), Type = SortDirectionType.Ascending } }; var result = munrosService.GetMunrosByQuery(_munros, conditions, sorts, 2); Assert.True(result.IsSuccess); Assert.NotNull(result.Result); Assert.IsNotEmpty(result.Result); Assert.AreEqual(result.Result.Count(), 2); Assert.That(result.Result, Is.Ordered.Descending.By("HeightMetres").Then.Ascending.By("Name")); }
public void GetMunros_WhenCalledWithEitherCategorySortByNameDescThenByNameAsc_ReturnsMunrosInCorrectDescendingOrder() { var fakeMunros = FakeMunroDataContext.GenerateFakeMunros(20, 15, 10, 500, 2000); var orderedFakeMunros = fakeMunros.Where(m => !string.IsNullOrEmpty(m.HillCategoryPost1997)) .OrderByDescending(m => m.Name).ToList(); var fakeDataContext = new FakeMunroDataContext(fakeMunros); var service = new MunroService(fakeDataContext, testMapper); var result = service.GetMunros(new MunroQuery { SortBy = "desc(name),asc(name)" }).ToList(); Assert.Equal(orderedFakeMunros.Count, result.Count); Assert.Equal(orderedFakeMunros.Select(m => m.Name), result.Select(m => m.Name)); }
public void ShouldReturnGreaterThanOrEqualOfHeightMetresMunros() { var munrosService = new MunroService(_invokeHandler, _expressionBuilder); var conditions = new List <Condition> { new Condition { ColumnName = nameof(MunroModel.HeightMetres), Type = ConditionType.GreaterThanOrEqual, Values = new object[] { 1000.0 } } }; var result = munrosService.GetMunrosByQuery(_munros, conditions, null, null); Assert.True(result.IsSuccess); Assert.NotNull(result.Result); Assert.IsNotEmpty(result.Result); Assert.AreEqual(result.Result.Count(), 2); }
public void GetMunros_WhenCalledSortByWithEmptyStringBetweenCriteria_ReturnsMunrosInCorrectOrder() { var fakeMunros = FakeMunroDataContext.GenerateFakeMunros(20, 15, 10, 500, 2000); var orderedFakeMunros = fakeMunros.Where(m => !string.IsNullOrEmpty(m.HillCategoryPost1997)) .OrderByDescending(m => m.Name).ToList(); var fakeDataContext = new FakeMunroDataContext(fakeMunros); var service = new MunroService(fakeDataContext, testMapper); var query = new MunroQuery { SortBy = "desc(name),,asc(name)" }; var result = service.GetMunros(query).ToList(); Assert.Equal(2, query.SortingCriterias.Count); Assert.Equal(orderedFakeMunros.Count, result.Count); Assert.Equal(orderedFakeMunros.Select(m => m.Name), result.Select(m => m.Name)); }