Пример #1
0
        public void AppDisabled()
        {
            //  ARRANGE
            var uow             = Container.Resolve <IUnitOfWork>();
            var cmdDispatcher   = Container.Resolve <ICommandHandlerDispatcher>();
            var queryDispatcher = Container.Resolve <IQueryHandlerDispatcher>();

            var cmd = new CreateAppCommand("AppDisabled", "AppDisabled", "AppDisabled", "x", "x", "x", 1);

            cmdDispatcher.Handle(cmd);

            var query = new GetAppByIdQuery("AppDisabled", cmd.AppId);
            var dto   = queryDispatcher.Handle <GetAppByIdQuery, AppDto>(query);

            //  ACT
            Thread.Sleep(2000);

            var cmd2 = new DisableAppCommand("AppDisabled", cmd.AppId);

            cmdDispatcher.Handle(cmd2);

            var query2 = new GetAppByIdQuery("AppDisabled", cmd2.AppId);
            var dto2   = queryDispatcher.Handle <GetAppByIdQuery, AppDto>(query2);

            //  ASSERT
            Assert.IsTrue(dto.IsEnabled);
            Assert.IsFalse(dto2.IsEnabled);

            uow.Commit();
        }
Пример #2
0
        public async Task <IActionResult> Post([FromBody] CreateAppCommand command)
        {
            var result = await _mediator.Send(command);

            var resource = await _mediator.Send(new GetAppQuery { Id = result.Id });

            return(CreatedAtAction("Get", _appControllerName, new { id = resource.Id }, resource));
        }
Пример #3
0
        public async Task Create_app_without_id_returns_validationerror()
        {
            // Arrange
            var command = new CreateAppCommand();
            var handler = new CreateAppCommandHandler(Substitute.For <IApplicationStore>(), new AppValidator());

            // Act
            var result = await handler.Handle(command);

            // Assert
            Assert.Contains(result.ValidationErrors, err => err.Name == "Id");
        }
Пример #4
0
        public async Task Create_app_with_invalid_characters_returns_validationerror(string appId)
        {
            // Arrange
            var command = new CreateAppCommand
            {
                Id          = appId,
                DisplayName = "Test"
            };
            var handler = new CreateAppCommandHandler(Substitute.For <IApplicationStore>(), new AppValidator());

            // Act
            var result = await handler.Handle(command);

            // Assert
            Assert.Contains(result.ValidationErrors, err => err.Name == "Id");
        }
Пример #5
0
        public void ModuleCreated()
        {
            //  ARRANGE
            var uow           = Container.Resolve <IUnitOfWork>();
            var cmdDispatcher = Container.Resolve <ICommandHandlerDispatcher>();

            var cmd  = new CreateAppCommand("CreateModule", "CreateModule", "x", "x", "x", "x", 1);
            var cmd2 = new CreateModuleCommand("CreateModule", cmd.AppId, "CreateModule", "CreateModule", "CreateModule", "CreateModule", "CreateModule", 1);

            //  ACT
            cmdDispatcher.Handle(cmd);
            cmdDispatcher.Handle(cmd2);


            //  ASSERT
            uow.Commit();
        }
Пример #6
0
        public async Task Create_app_with_nonexisting_defaultlanguage_returns_validationerror()
        {
            // Arrange
            var command = new CreateAppCommand
            {
                Id              = "test",
                DisplayName     = "Test",
                Languages       = new [] { "en", "fr" },
                DefaultLanguage = "nl"
            };
            var handler = new CreateAppCommandHandler(Substitute.For <IApplicationStore>(), new AppValidator());

            // Act
            var result = await handler.Handle(command);

            // Assert
            Assert.Contains(result.ValidationErrors, err => err.ErrorMessage == "DefaultLanguageNotInLanguages");
        }
Пример #7
0
        public async Task Create_valid_app_returns_no_errors()
        {
            // Arrange
            var command = new CreateAppCommand
            {
                Id              = "test",
                DisplayName     = "Test",
                Languages       = new [] { "en" },
                DefaultLanguage = "en"
            };
            var handler = new CreateAppCommandHandler(Substitute.For <IApplicationStore>(), new AppValidator());

            // Act
            var result = await handler.Handle(command);

            // Assert
            Assert.Equal(ResultStatus.Success, result.Status);
        }
Пример #8
0
        public void AppCreated()
        {
            //  ARRANGE
            var uow           = Container.Resolve <IUnitOfWork>();
            var cmdDispatcher = Container.Resolve <ICommandHandlerDispatcher>();

            for (var i = 0; i < 10; i++)
            {
                var cmd = new CreateAppCommand("x" + i.ToString(), "x" + i.ToString(), "x" + i.ToString(), "x", "x", "x", 1);

                //  ACT
                cmdDispatcher.Handle(cmd);
            }

            //  ASSERT

            uow.Commit();
        }
Пример #9
0
        public async Task Create_app_with_existing_id_returns_validationerror()
        {
            // Arrange
            var command = new CreateAppCommand
            {
                Id              = "test",
                DisplayName     = "A new app with existing id",
                Languages       = new[] { "en" },
                DefaultLanguage = "en"
            };
            var applicationStore = Substitute.For <IApplicationStore>();

            applicationStore.AppExists("test").Returns(true);
            var handler = new CreateAppCommandHandler(applicationStore, new AppValidator());

            // Act
            var result = await handler.Handle(command);

            // Assert
            Assert.Equal(ResultStatus.ValidationError, result.Status);
            Assert.Contains(result.ValidationErrors, err => err.ErrorMessage == "AppIdAlreadyExists");
        }
Пример #10
0
        public void ShouldNotSetupApplicationIfAlreadyConfigured([Frozen] Mock <IApplicationConfiguration> applicationConfiguration, [Frozen] Mock <TextWriter> writer, CreateAppCommand command, string[] arguments, string applicationName)
        {
            applicationConfiguration.Setup(x => x.GetApplicationId()).Returns(applicationName);

            command.Execute(arguments);

            writer.Verify(x => x.WriteLine("This directory is already configured to track application \"{0}\".", applicationName), Times.Once());
        }
Пример #11
0
        public void ShouldSetupApplicationLocallyAfterCreationIfNotConfigured([Frozen] Mock <IApplicationConfiguration> applicationConfiguration, [Frozen] Mock <IAppHarborClient> client, CreateAppCommand command, CreateResult result, User user, string[] arguments)
        {
            client.Setup(x => x.CreateApplication(It.IsAny <string>(), It.IsAny <string>())).Returns(result);
            client.Setup(x => x.GetUser()).Returns(user);
            applicationConfiguration.Setup(x => x.GetApplicationId()).Throws <ApplicationConfigurationException>();

            command.Execute(arguments);
            applicationConfiguration.Verify(x => x.SetupApplication(result.Id, user), Times.Once());
        }
Пример #12
0
        public void ShouldCreateApplicationWithOnlyName([Frozen] Mock <IAppHarborClient> client, CreateAppCommand command)
        {
            var arguments = new string[] { "foo" };

            command.Execute(arguments);
            client.Verify(x => x.CreateApplication(arguments.First(), arguments.Skip(1).FirstOrDefault()), Times.Once());
        }
Пример #13
0
        public void ShouldThrowWhenNoArguments(CreateAppCommand command)
        {
            var exception = Assert.Throws <CommandException>(() => command.Execute(new string[0]));

            Assert.Equal("An application name must be provided to create an application", exception.Message);
        }