Пример #1
0
        public void Edit_Success()
        {
            // Arrange
            var diver = DiverFactory.CreateJohnDoe();

            // Act
            diver.Edit(
                DiverFactory.JaneDoeDiverId,
                "John Doe New",
                "John New",
                "Doe New",
                "New Skill Level",
                "3000 Dives",
                "New Slogan",
                "+41 999 88 77",
                "https://john.com",
                "joFb",
                "doe",
                "doe.john");

            // Assert
            diver.UncommittedDomainEvents.Should().ContainSingle(e =>
                                                                 e.GetType() == typeof(UserProfileEditedEvent) &&
                                                                 ((UserProfileEditedEvent)e).EditedDiverId == DiverFactory.JohnDoeDiverId &&
                                                                 ((UserProfileEditedEvent)e).EditedByDiverId == DiverFactory.JaneDoeDiverId);
        }
Пример #2
0
        public GetMassMailDetailsInteractorTests()
        {
            A.CallTo(() => diverRepository.GetAllTauchboldeUsersAsync(A <bool> ._))
            .ReturnsLazily(() => Task.FromResult <ICollection <Diver> >(
                               DiverFactory.GetTauchbolde().ToList()));

            interactor = new GetMassMailDetailsInteractor(diverRepository);
        }
Пример #3
0
        private static Diver CreateTestUser(DateTime lastNotificationCheckAt, int notificationIntervalInHours)
        {
            var result = DiverFactory.CreateJohnDoe();

            result.LastNotificationCheckAt     = lastNotificationCheckAt;
            result.NotificationIntervalInHours = notificationIntervalInHours;

            return(result);
        }
        public GetEditAvatarInteractorTests()
        {
            editJohnDoeAvatarRequest = new GetEditAvatar(DiverFactory.JohnDoeDiverId, outputPort);

            A.CallTo(() => diverRepository.FindByIdAsync(A <Guid> ._))
            .ReturnsLazily(call => Task.FromResult(
                               (Guid)call.Arguments[0] == DiverFactory.JohnDoeDiverId
                        ? DiverFactory.CreateJohnDoe()
                        : null));

            interactor = new GetEditAvatarInteractor(logger, diverRepository, currentUser);
        }
Пример #5
0
        public void ChangeAvatar()
        {
            // Arrange
            var diver = DiverFactory.CreateJaneDoe();

            // Act
            diver.ChangeAvatar("the_new_avatar_id");

            // Assert
            diver.AvatarId.Should().Be("the_new_avatar_id");
            diver.UncommittedDomainEvents.Should().ContainSingle(e => e.GetType() == typeof(AvatarChangedEvent));
        }
Пример #6
0
        public GetUserProfileInteractorTests()
        {
            A.CallTo(() => diverRepository.FindByIdAsync(A <Guid> ._))
            .ReturnsLazily((call) => Task.FromResult(
                               (Guid)call.Arguments[0] == DiverFactory.JohnDoeDiverId
                        ? DiverFactory.CreateJohnDoe()
                        : null));

            var logger = A.Fake <ILogger <GetUserProfileInteractor> >();

            interactor = new GetUserProfileInteractor(diverRepository, currentUser, userManager, logger);
        }
        public async Task Handle_CurrentDiver_Success()
        {
            // Arrange
            A.CallTo(() => currentUser.GetCurrentDiverAsync())
            .ReturnsLazily(() => Task.FromResult(DiverFactory.CreateJohnDoe()));

            // Act
            var result = await interactor.Handle(editJohnDoeAvatarRequest, CancellationToken.None);

            // Assert
            result.IsSuccessful.Should().BeTrue();
            A.CallTo(() => outputPort.Output(A <GetEditAvatarOutput> ._))
            .MustHaveHappenedOnceExactly();
        }
        public async Task Handle_OtherDiver_FailWithAccessDenied()
        {
            // Arrange
            A.CallTo(() => currentUser.GetCurrentDiverAsync())
            .ReturnsLazily(() => Task.FromResult(DiverFactory.CreateJaneDoe()));

            // Act
            var result = await interactor.Handle(editJohnDoeAvatarRequest, CancellationToken.None);

            // Assert
            result.IsSuccessful.Should().BeFalse();
            result.ResultCategory.Should().Be(ResultCategory.AccessDenied);
            A.CallTo(() => outputPort.Output(A <GetEditAvatarOutput> ._))
            .MustNotHaveHappened();
        }
Пример #9
0
        public async Task Handle_OwnUser_MustBeAllowedToEdit()
        {
            // Arrange
            var request = new GetUserProfile(DiverFactory.JohnDoeDiverId, outputPort);

            A.CallTo(() => currentUser.GetCurrentDiverAsync())
            .ReturnsLazily(() => Task.FromResult(DiverFactory.CreateJohnDoe()));

            // Act
            var interactorResult = await interactor.Handle(request, CancellationToken.None);

            // Assert
            interactorResult.IsSuccessful.Should().BeTrue();
            A.CallTo(() => outputPort.Output(A <GetUserProfileOutput> .That.Matches(o => o.AllowEdit == true)))
            .MustHaveHappenedOnceExactly();
        }
Пример #10
0
        public async Task Handle_NotCurrentDiverAndNotAdmin_MustReturnAccessDenied()
        {
            // Arrange
            var request = new EditAvatar(DiverFactory.JaneDoeDiverId, validAvatarFile);

            A.CallTo(() => diverRepository.FindByIdAsync(DiverFactory.JaneDoeDiverId))
            .ReturnsLazily(() => Task.FromResult(DiverFactory.CreateJaneDoe()));

            // Act
            var useCaseResult = await interactor.Handle(request, CancellationToken.None);

            // Assert
            useCaseResult.IsSuccessful.Should().BeFalse();
            useCaseResult.ResultCategory.Should().Be(ResultCategory.AccessDenied);
            A.CallTo(() => avatarStore.StoreAvatarAsync(
                         DiverFactory.JohnDoeFirstName,
                         A <string> ._,
                         A <string> ._,
                         A <Stream> ._)).MustNotHaveHappened();
        }
Пример #11
0
        public async Task Handle_NotCurrentDiverButAdmin_MustSucceed()
        {
            // Arrange
            var request = new EditAvatar(DiverFactory.JaneDoeDiverId, validAvatarFile);

            A.CallTo(() => diverRepository.FindByIdAsync(DiverFactory.JaneDoeDiverId))
            .ReturnsLazily(() => Task.FromResult(DiverFactory.CreateJaneDoe()));
            A.CallTo(() => currentUser.GetIsDiverOrAdmin(A <Guid> ._))
            .ReturnsLazily(() => Task.FromResult(true));

            // Act
            var useCaseResult = await interactor.Handle(request, CancellationToken.None);

            // Assert
            useCaseResult.IsSuccessful.Should().BeTrue();
            A.CallTo(() => avatarStore.StoreAvatarAsync(
                         DiverFactory.JaneDoeFirstName,
                         A <string> ._,
                         A <string> ._,
                         A <Stream> ._)).MustHaveHappenedOnceExactly();
        }