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();
        }
예제 #2
0
        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);
        }
예제 #3
0
        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>();
        }
예제 #4
0
 private void Awake()
 {
     configuration = GetComponent <DrawConfiguration>();
 }
예제 #5
0
        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();
        }