public async Task UpdateClient_ShouldIgnoreClientIdInObject_WhenClientObjectHasIdSet()
        {
            // Arrange
            const int clientId    = 1;
            var       inputClient = new Client
            {
                ClientId = 111
            };

            using (var context = new AppDbContext(_dbContextOptions))
            {
                await context.Clients.AddAsync(new Client { ClientId = clientId });

                await context.SaveChangesAsync();
            }

            // Act
            using (var context = new AppDbContext(_dbContextOptions))
            {
                var service = new ClientsDataService(context);
                var result  = await service.UpdateClient(clientId, inputClient);

                // Assert
                result.ClientId.Should().Be(clientId);
            }
        }
        public async Task UpdateClient_ShouldUpdateAllClientProperties_WhenClientObjectProvided()
        {
            // Arrange
            const int clientId       = 1;
            var       expectedClient = new Client
            {
                ClientId = 1,
                Name     = "1",
                Status   = ClientStatus.Active,
                Address  = "1",
                Email    = "1",
                Fax      = "1",
                Phone    = "1"
            };

            using (var context = new AppDbContext(_dbContextOptions))
            {
                await context.Clients.AddAsync(new Client { ClientId = clientId });

                await context.SaveChangesAsync();
            }

            // Act
            using (var context = new AppDbContext(_dbContextOptions))
            {
                var service = new ClientsDataService(context);
                var result  = await service.UpdateClient(clientId, expectedClient);

                // Assert
                result.Should().BeEquivalentTo(expectedClient);
            }
        }
        public void UpdateClient_ShouldThrowArgumentNullException_WhenClientIsNull()
        {
            // Arrange
            // Act
            using (var context = new AppDbContext(_dbContextOptions))
            {
                var         service = new ClientsDataService(context);
                Func <Task> action  = async() => await service.UpdateClient(0, null);

                // Assert
                action.Should().Throw <ArgumentNullException>();
            }
        }
        public void UpdateClient_ShouldThrowClientNotFoundException_WhenClientNotFound()
        {
            // Arrange
            using (var context = new AppDbContext(_dbContextOptions))
            {
                context.Clients.AddRange(new Client(), new Client());
                context.SaveChanges();
            }

            // Act
            using (var context = new AppDbContext(_dbContextOptions))
            {
                var         service = new ClientsDataService(context);
                Func <Task> action  = async() => await service.UpdateClient(0, new Client());

                // Assert
                action.Should().Throw <ClientNotFoundException>();
            }
        }