public async Task GenerateDraw_CallsBusinessAndRepositoryLayer_ReturnsCorrectDrawNumberAsync() { // Arrange DateTime expectedSellUntilDate = new DateTime(2018, 1, 1); int expectedNumberOfBallots = 10; int expectedNumber = 222; var expectedBallots = new List <Ballot>(); int expectedMainPriceAmount = 10000; int expectedFinalNumberPriceAmount = 5; lotteryMock .Setup(mock => mock.GenerateBallotsAsync(expectedNumberOfBallots)) .ReturnsAsync(expectedBallots); Draw actualDraw = null; drawRepositoryMock.Setup(mock => mock.Insert(It.IsAny <Draw>())) .Callback((Draw draw) => { actualDraw = draw; }) .Returns(expectedNumber); var drawConfiguration = new DrawConfiguration { SellUntilDate = expectedSellUntilDate, NumberOfBallots = expectedNumberOfBallots, MainPriceAmount = expectedMainPriceAmount, FinalNumberPriceAmount = expectedFinalNumberPriceAmount }; // Act int result = await drawController.GenerateDraw(drawConfiguration); // Assert result.Should().Be(expectedNumber); actualDraw.Should().NotBeNull(); actualDraw.SellUntilDate.Should().Be(expectedSellUntilDate); actualDraw.Ballots.Should().Equal(expectedBallots); actualDraw.Prices.Should().HaveCount(2); var firstPrice = actualDraw.Prices.ElementAt(0); firstPrice.PriceType.Should().Be(PriceType.Main); firstPrice.Amount.Should().Be(expectedMainPriceAmount); var secondPrice = actualDraw.Prices.ElementAt(1); secondPrice.PriceType.Should().Be(PriceType.FinalDigit); secondPrice.Amount.Should().Be(expectedFinalNumberPriceAmount); lotteryMock.VerifyAll(); drawRepositoryMock.VerifyAll(); }
public async Task <int> GenerateDraw(DrawConfiguration drawConfiguration) { IEnumerable <Ballot> ballots = await _lottery.GenerateBallotsAsync(drawConfiguration.NumberOfBallots); var draw = new Draw { SellUntilDate = drawConfiguration.SellUntilDate, Ballots = ballots }; draw.AddPrice(PriceType.Main, drawConfiguration.MainPriceAmount); draw.AddPrice(PriceType.FinalDigit, drawConfiguration.FinalNumberPriceAmount); int drawNumber = _drawRepository.Insert(draw); return(drawNumber); }
protected override void Configure(IServiceCollection serviceCollection) { serviceCollection .AddSingleton <IMainWindow>(provider => new MainWindow(provider.GetService <MainWindowViewModel>())) .AddSingleton <MainWindowViewModel>() .AddSingleton <IDrawControl, DrawControl>( provider => provider.CreateInstance <DrawControl>(provider.GetService <IDrawLayerManager>()) ) .AddSingleton <IDrawLayerManager>( provider => { var manager = new DrawLayerManager(); //manager.AddLayer(new TestDrawLayer()); return(manager); } ) .AddSingleton <IOperationLayer, OperationLayer>() .AddSingleton <ICourseLayerManager, CourseLayerManager>() .AddSingleton <MouseController>( provider => { var mouseController = provider.CreateInstance <MouseController>(); mouseController.Init((FrameworkElement)provider.GetService <IDrawControl>()); return(mouseController); } ) .AddSingleton <ICurrentPositionController, CurrentPositionController>() .AddSingleton <ISelectableController, SelectableController>() .AddSingleton <IMapSettingsController, MapSettingsController>() .AddSingleton <IMouseOperationManager, MouseOperationManager>() .AddSingleton <SelectableObjects.IModelSelectableObjects, SelectableObjects>() .AddSingleton <ISelectableObjects>(provider => provider.GetService <SelectableObjects.IModelSelectableObjects>()) .AddSingleton <IDrawCurrentPosition, DrawCurrentPosition>() .AddSingleton <IChangeProvider, ChangeProvider>() .AddSingleton <IManagerCursor>( provider => { return(new ManagerCursor( new Dictionary <CursorType, Cursor> { { CursorType.Arrow, new Cursor(EmbeddedResources.ReadResource <ApplicationDependencyInjection>("Arrow.cur")) }, { CursorType.ArrowMove, new Cursor(EmbeddedResources.ReadResource <ApplicationDependencyInjection>("ArrowMove.cur")) }, { CursorType.ArrowAdd, new Cursor(EmbeddedResources.ReadResource <ApplicationDependencyInjection>("ArrowAdd.cur")) }, { CursorType.ArrowSelectMany, new Cursor(EmbeddedResources.ReadResource <ApplicationDependencyInjection>("ArrowRectangle.cur")) }, { CursorType.Grabbing, new Cursor(EmbeddedResources.ReadResource <ApplicationDependencyInjection>("Grabbing.cur")) }, } )); } ) .AddSingleton <IMapMoveOperation, MapMoveOperation>() .AddSingleton <IMapZoomOperation, MapZoomOperation>() .AddSingleton <ISelectOperation, SelectOperation>() .AddSingleton <IMoveOperation, MoveOperation>() .AddSingleton <ICalculateHelper, CalculateHelper>() .AddSingleton <IManagedDrawSelectableObject, DrawSelectableObject>() .AddSingleton <IDrawConfiguration>( provider => { var drawConfiguration = new DrawConfiguration(); drawConfiguration.Add( CourseDrawLayer.DrawCourseLayerKey, new SKPaint { Color = new SKColor(0, 255, 0) } ); drawConfiguration.AddGradient( CourseDrawLayer.DrawCourseLayerKey, new SKPaint { Color = new SKColor(0, 255, 0) }, new SKPaint { Color = new SKColor(255, 255, 0) }, new SKPaint { Color = new SKColor(255, 0, 0) } ); drawConfiguration.Add( OperationLayer.SelectableItemsKey, new SKPaint { Color = new SKColor(0, 255, 33) } ); drawConfiguration.Add( SplineDrawLayer.SplineDrawLayerKey, new SKPaint { Color = new SKColor(214, 127, 255) } ); return(drawConfiguration); } ); serviceCollection .AddSingleton <ICourseFile, CourseFile>(); }
private void Awake() { configuration = GetComponent <DrawConfiguration>(); }
public async Task SellBallotAsync_CallsBusinessAndRepositoryLayer_ReturnsCorrectBallotNumberAsync() { // Arrange int expectedNumberOfBallots = 10; int expectedBallotId = 111; int expectedDrawNumber = 222; int expectedCustomerNumber = 123456; DateTime expectedSellUntilDate = new DateTime(2018, 1, 1); var expectedBallot = new Ballot { Id = expectedBallotId, Number = 123456789 }; var expectedDraw = new Draw { Number = expectedDrawNumber, SellUntilDate = expectedSellUntilDate, Ballots = new List <Ballot> { expectedBallot } }; var expectedCustomer = new Customer { Number = expectedCustomerNumber, Name = "Cliff Bellman", Ballots = new List <Ballot>() }; var expectedSaleInfo = new SaleInfo() { CustomerNumber = expectedCustomerNumber, DrawNumber = expectedDrawNumber, LastNumber = null }; drawRepositoryMock .Setup(mock => mock.Get(expectedDrawNumber)) .Returns(expectedDraw); customerRepositoryMock .Setup(mock => mock.Get(expectedCustomerNumber)) .Returns(expectedCustomer); customerRepositoryMock .Setup(mock => mock.Update(expectedCustomer, expectedCustomerNumber)) .Returns(true); ballotRepositoryMock .Setup(mock => mock.Update(expectedBallot, expectedBallotId)) .Returns(true); lotteryMock .Setup(mock => mock.SellBallotAsync(expectedDraw, expectedSaleInfo.LastNumber)) .ReturnsAsync(expectedBallot); var drawConfiguration = new DrawConfiguration { SellUntilDate = expectedSellUntilDate, NumberOfBallots = expectedNumberOfBallots }; // Act int result = await shopController.SellBallotAsync(expectedSaleInfo); // Assert result.Should().Be(expectedBallot.Number); expectedCustomer.Ballots.Count.Should().Be(1); var firstBallot = expectedCustomer.Ballots.Single(); firstBallot.Should().Be(expectedBallot); lotteryMock.VerifyAll(); drawRepositoryMock.VerifyAll(); ballotRepositoryMock.VerifyAll(); customerRepositoryMock.VerifyAll(); }