Beispiel #1
0
        public static void Main()
        {
            // Resolved deps.
            var output           = new ConsoleOutput();
            var characterService = new CharacterService();

            var textGenerator                  = new TextGenerator();
            var dialogModalScreenHandler       = new DialogModalScreenHandler(textGenerator, output);
            var screenNavigation               = new ScreenNavigation(dialogModalScreenHandler);
            var connectionManager              = new ConnectionManager();
            var mainMenuHandler                = new MainMenuHandler(screenNavigation, connectionManager);
            var mainMenuPrinter                = new MainMenuPrinter(output, characterService);
            var mainMenuScreenHandler          = new MainMenuScreenHandler(textGenerator, mainMenuHandler, mainMenuPrinter);
            var characterCreationHandler       = new CharacterCreationHandler(screenNavigation);
            var characterCreationPrinter       = new CharacterCreationPrinter(output, characterService);
            var characterCreationScreenHandler = new CharacterCreationScreenHandler(textGenerator, characterCreationHandler, characterCreationPrinter);

            var screenProvider = new ScreenHandlerProvider(screenNavigation, mainMenuScreenHandler, characterCreationScreenHandler, dialogModalScreenHandler);

            // Authenticated and got list of characters from API.
            var characters = new[] { "1", "2", "ivan-id" };

            mainMenuScreenHandler.UpdateState(new MainMenuState(characters));

            while (true)
            {
                Console.Clear();
                var screen = screenProvider.GetCurrentScreenHandler();

                screen.PrintState();

                var key = Console.ReadKey();
                switch (key.Key)
                {
                case ConsoleKey.Escape:
                    screen.Escape();
                    break;

                case ConsoleKey.Backspace:
                    screen.Backspace();
                    break;

                case ConsoleKey.Tab:
                    screen.Tab();
                    break;

                default:
                    screen.Type(key.KeyChar);
                    break;
                }
            }
        }
Beispiel #2
0
        public void FullLifecycle()
        {
            var creationHandler =
                new CharacterCreationHandler(new CharactersContext(new DbContextOptionsBuilder().UseSqlServer(_connectionString).Options));
            string oldName        = $"Random character with guid name {Guid.NewGuid()}";
            var    creationResult =
                creationHandler.Handle(new CharacterCreationCommand()
            {
                Name = oldName,
            }, new CancellationToken())
                .GetAwaiter()
                .GetResult();

            Assert.True(creationResult.IsSuccessful);

            var queryHandler =
                new CharacterQueryHandler(new CharactersContext(new DbContextOptionsBuilder().UseSqlServer(_connectionString).Options));
            var queryResult =
                queryHandler.Handle(new CharacterQuery(creationResult.Id), new CancellationToken())
                .GetAwaiter()
                .GetResult();

            Assert.True(queryResult.IsSuccessful);

            string newName       = $"New name with guid {Guid.NewGuid()}";
            var    updateHandler =
                new CharacterUpdateHandler(new CharactersContext(new DbContextOptionsBuilder().UseSqlServer(_connectionString).Options));
            var updateResult =
                updateHandler.Handle(new CharacterUpdateCommand(creationResult.Id, new CharacterUpdateForm()
            {
                Name = newName
            }), new CancellationToken())
                .GetAwaiter()
                .GetResult();

            Assert.True(updateResult.IsSuccessful);

            var updatedQueryResult =
                queryHandler.Handle(new CharacterQuery(creationResult.Id), new CancellationToken())
                .GetAwaiter()
                .GetResult();

            Assert.True(updatedQueryResult.IsSuccessful);

            Assert.Equal(queryResult.Data.Id, updatedQueryResult.Data.Id);
            Assert.Equal(newName, updatedQueryResult.Data.Name);
            Assert.NotEqual(queryResult.Data.Name, updatedQueryResult.Data.Name);

            var deleteHandler =
                new CharacterDeletionHandler(new CharactersContext(new DbContextOptionsBuilder().UseSqlServer(_connectionString).Options));
            var deletionResult =
                deleteHandler.Handle(new CharacterDeletionCommand(creationResult.Id), new CancellationToken())
                .GetAwaiter()
                .GetResult();

            Assert.True(deletionResult.IsSuccessful);
            var requeryResult =
                queryHandler.Handle(new CharacterQuery(creationResult.Id), new CancellationToken())
                .GetAwaiter()
                .GetResult();

            Assert.False(requeryResult.IsSuccessful);
            var deletionRetryResult =
                deleteHandler.Handle(new CharacterDeletionCommand(creationResult.Id), new CancellationToken())
                .GetAwaiter()
                .GetResult();

            Assert.False(deletionRetryResult.IsSuccessful);
        }