public async void MemberWithNoOrders_SetsOrderCountTo0() { Mock<IVeilDataAccess> dbStub = TestHelpers.GetVeilDataAccessFake(); SetupVeilDataAccessWithUser(dbStub, memberUser); SetupVeilDataAccessWithWebOrders(dbStub, new List<WebOrder>()); ReportsController controller = new ReportsController(dbStub.Object); var result = await controller.MemberList() as ViewResult; Assert.That(result != null); Assert.That(result.Model, Is.InstanceOf<DateFilteredListViewModel<MemberListItemViewModel>>()); var model = (DateFilteredListViewModel<MemberListItemViewModel>)result.Model; var items = model.Items; Assert.That(items.First().OrderCount, Is.EqualTo(0)); }
public async void DateFilter_StartAndEndDate_SetsStartDateToMidnight() { DateTime start = new DateTime(2015, 11, 21); DateTime end = new DateTime(2015, 11, 22); Mock<IVeilDataAccess> dbStub = TestHelpers.GetVeilDataAccessFake(); SetupVeilDataAccessWithUser(dbStub, memberUser, memberUser2); SetupVeilDataAccessWithWebOrders(dbStub, new List<WebOrder>()); ReportsController controller = new ReportsController(dbStub.Object); var result = await controller.MemberList(start, end) as ViewResult; Assert.That(result != null); Assert.That(result.Model, Is.InstanceOf<DateFilteredListViewModel<MemberListItemViewModel>>()); var model = (DateFilteredListViewModel<MemberListItemViewModel>)result.Model; Assert.That(model.StartDate.HasValue); Assert.That(model.StartDate.Value, Is.EqualTo(start)); Assert.That(model.EndDate.HasValue); }
public async void DateFilter_TwoMembersWithSameTotals_ThenOrdersByAverageOrderDescendingOfOrdersInDateRange() { Mock<IVeilDataAccess> dbStub = TestHelpers.GetVeilDataAccessFake(); SetupVeilDataAccessWithUser(dbStub, memberUser, memberUser2); SetupVeilDataAccessWithWebOrders(dbStub, new List<WebOrder> { new WebOrder { MemberId = memberId, OrderSubtotal = 10m, TaxAmount = 10m, ShippingCost = 10m, OrderDate = new DateTime(2015, 11, 22) }, new WebOrder { MemberId = memberId, OrderSubtotal = 10m, TaxAmount = 10m, ShippingCost = 10m, OrderDate = new DateTime(2010, 01, 01) }, new WebOrder { MemberId = memberId2, OrderSubtotal = 5m, TaxAmount = 5m, ShippingCost = 5m, OrderDate = new DateTime(2015, 11, 22) }, new WebOrder { MemberId = memberId2, OrderSubtotal = 5m, TaxAmount = 5m, ShippingCost = 5m, OrderDate = new DateTime(2015, 11, 22) }, new WebOrder { MemberId = memberId2, OrderSubtotal = 5m, TaxAmount = 5m, ShippingCost = 5m, OrderDate = new DateTime(2010, 01, 01) } }); ReportsController controller = new ReportsController(dbStub.Object); var result = await controller.MemberList(start: new DateTime(2015, 11, 22), optionalEnd: new DateTime(2015, 11, 22)) as ViewResult; Assert.That(result != null); Assert.That(result.Model, Is.InstanceOf<DateFilteredListViewModel<MemberListItemViewModel>>()); var model = (DateFilteredListViewModel<MemberListItemViewModel>)result.Model; var items = model.Items; Assert.That(items.First().TotalSpentOnOrders, Is.GreaterThan(0)); Assert.That(items.First().TotalSpentOnOrders, Is.EqualTo(items.Last().TotalSpentOnOrders)); Assert.That(items.First().AverageOrderTotal, Is.GreaterThanOrEqualTo(items.Last().AverageOrderTotal)); Assert.That(items.First().UserName, Is.EqualTo(memberUser.UserName)); Assert.That(items.Last().UserName, Is.EqualTo(memberUser2.UserName)); }
public async void DateFilter_NullEndDate_DefaultsToTodayAtJustBeforeMidnight() { Mock<IVeilDataAccess> dbStub = TestHelpers.GetVeilDataAccessFake(); SetupVeilDataAccessWithUser(dbStub, memberUser, memberUser2); SetupVeilDataAccessWithWebOrders(dbStub, new List<WebOrder>()); ReportsController controller = new ReportsController(dbStub.Object); var result = await controller.MemberList(start: new DateTime(2015, 11, 21), optionalEnd: null) as ViewResult; Assert.That(result != null); Assert.That(result.Model, Is.InstanceOf<DateFilteredListViewModel<MemberListItemViewModel>>()); var model = (DateFilteredListViewModel<MemberListItemViewModel>)result.Model; Assert.That(model.EndDate.HasValue); Assert.That(model.EndDate.Value, Is.EqualTo(DateTime.Today.AddDays(1)).Within(1).Seconds); }
public async void DateFilter_MemberWithSomeOrdersInDateRange_SetsCorrectAverageOrderTotal() { Mock<IVeilDataAccess> dbStub = TestHelpers.GetVeilDataAccessFake(); SetupVeilDataAccessWithUser(dbStub, memberUser); SetupVeilDataAccessWithWebOrders(dbStub, new List<WebOrder> { new WebOrder { MemberId = memberId, OrderSubtotal = 1m, TaxAmount = 0m, ShippingCost = 1m, OrderDate = new DateTime(2015, 11, 22) }, /* $2 */ new WebOrder { MemberId = memberId, OrderSubtotal = 10m, TaxAmount = 10m, ShippingCost = 10m, OrderDate = new DateTime(2010, 01, 01) }, /* $30 */ new WebOrder { MemberId = memberId, OrderSubtotal = 2m, TaxAmount = 0m, ShippingCost = 2m, OrderDate = new DateTime(2015, 11, 22) }, /* $4 */ new WebOrder { MemberId = memberId, OrderSubtotal = 10m, TaxAmount = 10m, ShippingCost = 10m, OrderDate = new DateTime(2010, 01, 01) } /* $30 */ }); ReportsController controller = new ReportsController(dbStub.Object); var result = await controller.MemberList(start: new DateTime(2015, 11, 22), optionalEnd: new DateTime(2015, 11, 22)) as ViewResult; Assert.That(result != null); Assert.That(result.Model, Is.InstanceOf<DateFilteredListViewModel<MemberListItemViewModel>>()); var model = (DateFilteredListViewModel<MemberListItemViewModel>)result.Model; var items = model.Items; Assert.That(items.First().AverageOrderTotal, Is.EqualTo(3m)); }
public async void DateFilter_MemberWithOrders_SetsCorrectTotalSpentOnOrders() { Mock<IVeilDataAccess> dbStub = TestHelpers.GetVeilDataAccessFake(); SetupVeilDataAccessWithUser(dbStub, memberUser); SetupVeilDataAccessWithWebOrders(dbStub, new List<WebOrder> { new WebOrder { MemberId = memberId, OrderSubtotal = 5m, TaxAmount = 5m, ShippingCost = 10m, OrderDate = new DateTime(2015, 11, 22) }, new WebOrder { MemberId = memberId, OrderSubtotal = 5m, TaxAmount = 5m, ShippingCost = 10m, OrderDate = new DateTime(2015, 11, 22) }, new WebOrder { MemberId = memberId, OrderSubtotal = 5m, TaxAmount = 5m, ShippingCost = 10m, OrderDate = new DateTime(2015, 11, 22) }, new WebOrder { MemberId = memberId, OrderSubtotal = 5m, TaxAmount = 5m, ShippingCost = 10m, OrderDate = new DateTime(2015, 11, 22) }, new WebOrder { MemberId = memberId, OrderSubtotal = 5m, TaxAmount = 5m, ShippingCost = 10m, OrderDate = new DateTime(2015, 11, 22) } }); ReportsController controller = new ReportsController(dbStub.Object); var result = await controller.MemberList(start: DateTime.MinValue, optionalEnd: DateTime.MaxValue) as ViewResult; Assert.That(result != null); Assert.That(result.Model, Is.InstanceOf<DateFilteredListViewModel<MemberListItemViewModel>>()); var model = (DateFilteredListViewModel<MemberListItemViewModel>)result.Model; var items = model.Items; Assert.That(items.First().TotalSpentOnOrders, Is.EqualTo(100m)); }
public async void DateFilter_MemberWithThreeOrdersInDateRange_SetsOrderCountToThree() { Mock<IVeilDataAccess> dbStub = TestHelpers.GetVeilDataAccessFake(); SetupVeilDataAccessWithUser(dbStub, memberUser); SetupVeilDataAccessWithWebOrders(dbStub, new List<WebOrder> { new WebOrder { MemberId = memberId, OrderDate = new DateTime(2015, 11, 22) }, new WebOrder { MemberId = memberId, OrderDate = new DateTime(2010, 01, 01) }, new WebOrder { MemberId = memberId, OrderDate = new DateTime(2015, 11, 22) }, new WebOrder { MemberId = memberId, OrderDate = new DateTime(2015, 11, 22) }, new WebOrder { MemberId = memberId, OrderDate = new DateTime(2010, 01, 01) } }); ReportsController controller = new ReportsController(dbStub.Object); var result = await controller.MemberList(start: new DateTime(2015, 11, 22), optionalEnd: new DateTime(2015, 11, 22)) as ViewResult; Assert.That(result != null); Assert.That(result.Model, Is.InstanceOf<DateFilteredListViewModel<MemberListItemViewModel>>()); var model = (DateFilteredListViewModel<MemberListItemViewModel>)result.Model; var items = model.Items; Assert.That(items.First().OrderCount, Is.EqualTo(3)); }
public async void DateFilter_MemberWithNoOrders_SetsTotalSpentOnOrders0() { Mock<IVeilDataAccess> dbStub = TestHelpers.GetVeilDataAccessFake(); SetupVeilDataAccessWithUser(dbStub, memberUser); SetupVeilDataAccessWithWebOrders(dbStub, new List<WebOrder>()); ReportsController controller = new ReportsController(dbStub.Object); var result = await controller.MemberList(start: DateTime.MinValue, optionalEnd: DateTime.MinValue) as ViewResult; Assert.That(result != null); Assert.That(result.Model, Is.InstanceOf<DateFilteredListViewModel<MemberListItemViewModel>>()); var model = (DateFilteredListViewModel<MemberListItemViewModel>)result.Model; var items = model.Items; Assert.That(items.First().TotalSpentOnOrders, Is.EqualTo(0)); }
public async void TwoMembersWithDifferentTotals_OrdersByTotalSpentDescending() { Mock<IVeilDataAccess> dbStub = TestHelpers.GetVeilDataAccessFake(); SetupVeilDataAccessWithUser(dbStub, memberUser, memberUser2); SetupVeilDataAccessWithWebOrders(dbStub, new List<WebOrder> { new WebOrder { MemberId = memberId, OrderSubtotal = 10m, TaxAmount = 10m, ShippingCost = 10m }, new WebOrder { MemberId = memberId2, OrderSubtotal = 5m, TaxAmount = 5m, ShippingCost = 5m } }); ReportsController controller = new ReportsController(dbStub.Object); var result = await controller.MemberList() as ViewResult; Assert.That(result != null); Assert.That(result.Model, Is.InstanceOf<DateFilteredListViewModel<MemberListItemViewModel>>()); var model = (DateFilteredListViewModel<MemberListItemViewModel>)result.Model; var items = model.Items; Assert.That(items.First().TotalSpentOnOrders, Is.GreaterThanOrEqualTo(items.Last().TotalSpentOnOrders)); Assert.That(items.First().UserName, Is.EqualTo(memberUser.UserName)); Assert.That(items.Last().UserName, Is.EqualTo(memberUser2.UserName)); }