Beispiel #1
0
        public async Task EmptyCommand_ThrowException_Test()
        {
            //Arrange
            var command = new CreateCommand();

            //Assert
            Assert.That(async() => await _handler.Handle(command, CancellationToken.None), Throws.Exception);
        }
Beispiel #2
0
        public void CreateCommandHandlerOnSuccessHasValidDirectoryStructure()
        {
            var mockFileSystem = new MockFileSystem();

            mockFileSystem.AddDirectory(Environment.CurrentDirectory);

            var globalTuple = MockFileSystemHelper.GetGlobalTemplateMock();

            mockFileSystem.AddFile(globalTuple.Item1, globalTuple.Item2);

            var localTuple = MockFileSystemHelper.GetLocalTemplateMock();

            mockFileSystem.AddFile(localTuple.Item1, localTuple.Item2);

            var configComposer  = new ConfigComposer(mockFileSystem);
            var contentComposer = new ContentComposer(mockFileSystem);

            var handler = new CreateCommandHandler(
                configComposer,
                contentComposer,
                mockFileSystem,
                _mockTerminal.Object);

            const string projectName         = "MyUnitTestProject";
            const string outputDirectoryName = "public";

            handler.Handle(new CreateCommand
            {
                OutputDirectoryName = outputDirectoryName,
                ProjectName         = projectName
            });

            string projectRootPath = mockFileSystem.Path.Combine(
                Environment.CurrentDirectory,
                projectName);

            string projectOutputPath = mockFileSystem.Path.Combine(
                projectRootPath,
                outputDirectoryName);

            string projectContentPath = mockFileSystem.Path.Combine(
                projectRootPath,
                ReservedDirectories.ContentDirectoryName);

            Assert.Multiple(() =>
            {
                Assert.True(mockFileSystem.Directory.Exists(projectRootPath));
                Assert.True(mockFileSystem.Directory.Exists(projectOutputPath));
                Assert.True(mockFileSystem.Directory.Exists(projectContentPath));
            });
        }
Beispiel #3
0
        public async Task HandleShouldFailWhenRecordWithSameLoginAlreadyExist()
        {
            // Arrange
            var id      = Guid.NewGuid();
            var version = 1;

            var login     = "******";
            var password  = "******";
            var firstName = "FirstName";
            var lastName  = "LastName";

            var userRepositoryMock = new Mock <IUserRepository>();

            userRepositoryMock.Setup(x => x.Create(It.IsAny <User>())).Throws <UniqueKeyException>();
            var userRepository = userRepositoryMock.Object;

            var identifierProviderMock = new Mock <IIdentifierProvider>();

            identifierProviderMock.Setup(x => x.Generate()).Returns(id);
            var identifierProvider = identifierProviderMock.Object;

            var versionProviderMock = new Mock <IVersionProvider>();

            versionProviderMock.Setup(x => x.Generate()).Returns(version);
            var versionProvider = versionProviderMock.Object;

            var passwordProviderMock = new Mock <IPasswordProvider>();

            passwordProviderMock.Setup(x => x.Hash(It.IsAny <string>())).Returns("hashedPassword");
            var passwordProvider = passwordProviderMock.Object;

            var publishIntegrationEventsServiceMock = new Mock <IPublishIntegrationEventsService>();

            publishIntegrationEventsServiceMock.Setup(x => x.PublishUserCreated(It.IsAny <Guid>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>()));
            var publishIntegrationEventsService = publishIntegrationEventsServiceMock.Object;

            var command = new CreateCommand(login, password, firstName, lastName);

            var handler = new CreateCommandHandler(userRepository, identifierProvider, versionProvider, passwordProvider, publishIntegrationEventsService);

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

            // Assert
            result.Failures.Should().OnlyContain(x => x.Code == HandlerFaultCode.Conflict.Name &&
                                                 x.Message == HandlerFailures.Conflict &&
                                                 x.Target == "login");
        }
Beispiel #4
0
        public async Task Handle_ShouldPersistCategory()
        {
            var command = new CreateCommand
            {
                Name     = "General Clothes",
                Disabled = false
            };
            var handler = new CreateCommandHandler(Context);

            var result = await handler.Handle(command, CancellationToken.None);

            var entity = Context.Categories.Find(result);

            entity.ShouldNotBeNull();
            entity.Name.ShouldBe(command.Name);
        }
Beispiel #5
0
        public async Task HandleShouldReturnFailWhenDatabaseSpecificErrorOccurs()
        {
            // Arrange
            var id      = Guid.NewGuid();
            var version = 1;

            var login     = "******";
            var password  = "******";
            var firstName = "FirstName";
            var lastName  = "LastName";

            var userRepositoryMock = new Mock <IUserRepository>();

            userRepositoryMock.Setup(x => x.Create(It.IsAny <User>())).Throws <SomeDatabaseSpecificException>();
            var userRepository = userRepositoryMock.Object;

            var identifierProviderMock = new Mock <IIdentifierProvider>();

            identifierProviderMock.Setup(x => x.Generate()).Returns(id);
            var identifierProvider = identifierProviderMock.Object;

            var versionProviderMock = new Mock <IVersionProvider>();

            versionProviderMock.Setup(x => x.Generate()).Returns(version);
            var versionProvider = versionProviderMock.Object;

            var passwordProviderMock = new Mock <IPasswordProvider>();

            passwordProviderMock.Setup(x => x.Hash(It.IsAny <string>())).Returns("hashedPassword");
            var passwordProvider = passwordProviderMock.Object;

            var publishIntegrationEventsServiceMock = new Mock <IPublishIntegrationEventsService>();

            publishIntegrationEventsServiceMock.Setup(x => x.PublishUserCreated(It.IsAny <Guid>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>()));
            var publishIntegrationEventsService = publishIntegrationEventsServiceMock.Object;

            var command = new CreateCommand(login, password, firstName, lastName);

            var handler = new CreateCommandHandler(userRepository, identifierProvider, versionProvider, passwordProvider, publishIntegrationEventsService);

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

            // Assert
            result.IsFailure.Should().BeTrue();
            result.Failures.Should().OnlyContain(x => x.Message == CustomFailures.CreateUserFailure);
        }
Beispiel #6
0
        public async Task HandleShouldReturnOk()
        {
            // Arrange
            var id      = Guid.NewGuid();
            var version = 1;

            var login     = "******";
            var password  = "******";
            var firstName = "FirstName";
            var lastName  = "LastName";

            var userRepositoryMock = new Mock <IUserRepository>();

            userRepositoryMock.Setup(x => x.Create(It.IsAny <User>())).Returns(Task.CompletedTask);
            var userRepository = userRepositoryMock.Object;

            var identifierProviderMock = new Mock <IIdentifierProvider>();

            identifierProviderMock.Setup(x => x.Generate()).Returns(id);
            var identifierProvider = identifierProviderMock.Object;

            var versionProviderMock = new Mock <IVersionProvider>();

            versionProviderMock.Setup(x => x.Generate()).Returns(version);
            var versionProvider = versionProviderMock.Object;

            var passwordProviderMock = new Mock <IPasswordProvider>();

            passwordProviderMock.Setup(x => x.Hash(It.IsAny <string>())).Returns("hashedPassword");
            var passwordProvider = passwordProviderMock.Object;

            var publishIntegrationEventsServiceMock = new Mock <IPublishIntegrationEventsService>();

            publishIntegrationEventsServiceMock.Setup(x => x.PublishUserCreated(It.IsAny <Guid>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>())).Returns(Task.CompletedTask);
            var publishIntegrationEventsService = publishIntegrationEventsServiceMock.Object;

            var command = new CreateCommand(login, password, firstName, lastName);

            var handler = new CreateCommandHandler(userRepository, identifierProvider, versionProvider, passwordProvider, publishIntegrationEventsService);

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

            // Assert
            result.IsFailure.Should().BeFalse();
            result.Should().BeOfType(typeof(Result <Guid>));
        }
        public async Task Handle_ShouldPersistTodoItem()
        {
            var command = new CreateCommand
            {
                Name         = "TShirt",
                SellingPrice = 90,
                Description  = "Description ..",
                BarCode      = "ABC_000001",
                CategoryId   = 1,
                Disabled     = false
            };
            var handler = new CreateCommandHandler(Context);

            var result = await handler.Handle(command, CancellationToken.None);

            var entity = Context.Products.Find(result);

            entity.ShouldNotBeNull();
            entity.Name.ShouldBe(command.Name);
        }
Beispiel #8
0
        public void CreateCommandHandlerOnSucessHasValidSettingsFile()
        {
            // TODO: validate actual JSON content - not just that the file exists.
            var mockFileSystem = new MockFileSystem();

            mockFileSystem.AddDirectory(Environment.CurrentDirectory);

            var globalTuple = MockFileSystemHelper.GetGlobalTemplateMock();

            mockFileSystem.AddFile(globalTuple.Item1, globalTuple.Item2);

            var localTuple = MockFileSystemHelper.GetLocalTemplateMock();

            mockFileSystem.AddFile(localTuple.Item1, localTuple.Item2);

            var configComposer  = new ConfigComposer(mockFileSystem);
            var contentComposer = new ContentComposer(mockFileSystem);

            var handler = new CreateCommandHandler(
                configComposer,
                contentComposer,
                mockFileSystem,
                _mockTerminal.Object);

            const string projectName = "MyUnitTestProject";

            handler.Handle(new CreateCommand
            {
                OutputDirectoryName = "public",
                ProjectName         = projectName
            });

            string projectRootPath = mockFileSystem.Path.Combine(
                Environment.CurrentDirectory,
                projectName);

            Assert.True(mockFileSystem.File.Exists(mockFileSystem.Path.Combine(
                                                       projectRootPath,
                                                       "local-config.json")));
        }
Beispiel #9
0
        public void CreateCommandHandlerOnSuccessInformsUserOfActionsPerformed()
        {
            var mockFileSystem = new MockFileSystem();

            mockFileSystem.AddDirectory(Environment.CurrentDirectory);

            var mockConfigComposer  = new Mock <IConfigComposer>();
            var mockContentComposer = new Mock <IContentComposer>();

            var handler = new CreateCommandHandler(
                mockConfigComposer.Object,
                mockContentComposer.Object,
                mockFileSystem,
                _mockTerminal.Object);

            handler.Handle(new CreateCommand
            {
                OutputDirectoryName = "public",
                ProjectName         = "MyUnitTestProject"
            });

            _mockTerminal.Verify(mock => mock.RenderText(It.IsAny <string>()), Times.Exactly(2));
        }
Beispiel #10
0
        public async Task Apply_ValidParams_AccountRootCreated()
        {
            //Arrange
            var id       = Guid.Parse("4fc67e9a-1eec-4d08-9a38-3114a2ad07ba");
            var userId   = Guid.Parse("c3216c1c-bef6-4a6a-ada7-06c038aa0da3");
            var month    = 9;
            var year     = 2020;
            var currency = "EUR";

            var accountDto = new CreateAccountDto
            {
                Currency = currency,
                Id       = id,
                Month    = month,
                Year     = year,
                OwnerId  = userId
            };

            var command = new CreateCommand(accountDto);

            var mockRepo = new Mock <IRepository <AccountRoot> >();

            mockRepo.Setup(x => x.Save(It.IsAny <AccountRoot>())).Verifiable();

            var mockMediater = new Mock <IMediator>();

            mockMediater.Setup(x => x.Publish(It.IsAny <INotification>(), It.IsAny <CancellationToken>()));

            var createCommandHandler = new CreateCommandHandler(mockRepo.Object, mockMediater.Object);

            //Act
            await createCommandHandler.Handle(command, CancellationToken.None);

            //Assert
            mockRepo.Verify();
        }