public void Can_Assign()
        {
            //Arrange
            var registration = new DataProcessingRegistration
            {
                OrganizationId = A <int>()
            };
            var oversightOptionId = A <int>();
            var oversightOption   = new DataProcessingOversightOption();

            ExpectGetAvailableOptionReturns(registration, oversightOptionId, oversightOption);

            //Act
            var result = _sut.Assign(registration, oversightOptionId);

            //Assert
            Assert.True(result.Ok);
            Assert.Same(oversightOption, result.Value);
            Assert.True(registration.OversightOptions.Contains(oversightOption));
        }
        public void Can_Remove()
        {
            //Arrange
            var oversightOptionId = A <int>();
            var oversightOption   = new DataProcessingOversightOption {
                Id = oversightOptionId
            };
            var registration = new DataProcessingRegistration
            {
                OrganizationId   = A <int>(),
                OversightOptions = { oversightOption }
            };

            ExpectGetOptionReturns(registration, oversightOptionId, oversightOption);

            //Act
            var result = _sut.Remove(registration, oversightOptionId);

            //Assert
            Assert.True(result.Ok);
            Assert.Empty(registration.OversightOptions);
        }
        public void Cannot_Assign_If_OversightOption_Is_Already_Assigned()
        {
            //Arrange
            var oversightOptionId = A <int>();
            var oversightOption   = new DataProcessingOversightOption {
                Id = oversightOptionId
            };
            var registration = new DataProcessingRegistration
            {
                OrganizationId   = A <int>(),
                OversightOptions = { oversightOption }
            };

            ExpectGetAvailableOptionReturns(registration, oversightOptionId, oversightOption);

            //Act
            var result = _sut.Assign(registration, oversightOptionId);

            //Assert
            Assert.True(result.Failed);
            Assert.Equal(OperationFailure.Conflict, result.Error.FailureType);
        }