コード例 #1
0
        public void ShouldThrowIfMemberDoesNotExist()
        {
            // Arrange
            var saasUserId   = "5120CC44-C9CE-49B1-9ABA-6B7E5CF29E8B";
            var connectionId = "B47FCAE8-1817-4C78-8BBE-9D125B83E1BE";
            var userAgent    = "testUserAgent";

            var updateMemberActivityRequest = new UpdateMemberActivityRequest(saasUserId, connectionId, userAgent);

            _memberRepositoryMock.Setup(x => x.GetMemberBySaasUserIdAsync(It.IsAny <string>()))
            .ReturnsAsync((Member)null)
            .Verifiable();

            // Act
            Func <Task> act = async() => await _memberService.UpdateActivityAsync(updateMemberActivityRequest);

            // Assert
            act.Should().Throw <NetKitChatNotFoundException>().And.Message.Should()
            .Be($"Unable to update activity. Member SaasUserId:{updateMemberActivityRequest.SaasUserId} is not found.");

            VerifyMocks();
        }
コード例 #2
0
ファイル: MemberService.cs プロジェクト: Softeq/NetKit.Chat
        public async Task UpdateActivityAsync(UpdateMemberActivityRequest request)
        {
            var member = await UnitOfWork.MemberRepository.GetMemberBySaasUserIdAsync(request.SaasUserId);

            if (member == null)
            {
                throw new NetKitChatNotFoundException($"Unable to update activity. Member {nameof(request.SaasUserId)}:{request.SaasUserId} is not found.");
            }
            member.Status       = UserStatus.Online;
            member.LastActivity = _dateTimeProvider.GetUtcNow();
            await UnitOfWork.MemberRepository.UpdateMemberAsync(member);

            var client = await UnitOfWork.ClientRepository.GetClientWithMemberAsync(request.ConnectionId);

            if (client == null)
            {
                throw new NetKitChatNotFoundException($"Unable to update activity. Client {nameof(request.ConnectionId)}:{request.ConnectionId} is not found.");
            }
            client.UserAgent          = request.UserAgent;
            client.LastActivity       = member.LastActivity;
            client.LastClientActivity = _dateTimeProvider.GetUtcNow();
            await UnitOfWork.ClientRepository.UpdateClientAsync(client);
        }