コード例 #1
0
        public void Create_ValueIsNull_ReturnsResultSuccessAndSetValueToZero()
        {
            var result = IdHolderCurrentId.Create(null);

            result.IsSuccess.Should().BeTrue();
            result.Value.Value.Should().Be(0);
        }
コード例 #2
0
        public void Create_ValueIsLessGreaterZero_ReturnsResultSuccessAndValueSet()
        {
            var result = IdHolderCurrentId.Create(3);

            result.IsSuccess.Should().BeTrue();
            result.Value.Value.Should().Be(3);
        }
コード例 #3
0
        public async Task <long> NextAsync(string name)
        {
            if (await idHolderRepository.ExistsAsync(name))
            {
                var entity = await idHolderRepository.GetAsync(name);

                var idHolderName      = IdHolderName.Create(entity.Name);
                var idHolderCurrentId = IdHolderCurrentId.Create(entity.CurrentId);
                var idHolder          = new IdHolder(idHolderName.Value, idHolderCurrentId.Value);
                entity.CurrentId = idHolder.Next();
                await idHolderRepository.UpdateAsync(entity);

                return(idHolder.CurrentId.Value);
            }
            else
            {
                var idHolderName      = IdHolderName.Create(name);
                var idHolderCurrentId = IdHolderCurrentId.Create(StartFromDefault);
                var result            = Result.Combine(idHolderName, idHolderCurrentId);
                if (result.IsSuccess)
                {
                    var idHolder = new IdHolder(idHolderName.Value, idHolderCurrentId.Value);
                    await CreateIdHolderTableEntityAsync(idHolder);

                    return(StartFromDefault);
                }
                else
                {
                    throw new Exception(result.Error);
                }
            }
        }
コード例 #4
0
        public void Next_ReturnsIncrementValue()
        {
            var result            = IdHolderCurrentId.Create(3);
            var idHolderCurrentId = result.Value;

            var next = idHolderCurrentId.Next();

            next.Should().Be(4);
            idHolderCurrentId.Value.Should().Be(4);
        }
コード例 #5
0
        public void Next_ReturnsIncrementedValue()
        {
            var idHolderName      = IdHolderName.Create("name");
            var idHolderCurrentId = IdHolderCurrentId.Create(1);
            var idHolder          = new IdHolder(idHolderName.Value, idHolderCurrentId.Value);

            var next = idHolder.Next();

            next.Should().Be(2);
            idHolderCurrentId.Value.Value.Should().Be(2);
        }
コード例 #6
0
        public async Task CreateAsync(CreateIdHolderDto createIdHolderDto)
        {
            var exists = await ExistsAsync(createIdHolderDto.Name);

            if (exists)
            {
                throw new ArgumentException($"IdHolder Name { createIdHolderDto.Name } is in use");
            }

            var idHolderName      = IdHolderName.Create(createIdHolderDto.Name);
            var idHolderCurrentId = IdHolderCurrentId.Create(createIdHolderDto.StartFrom);
            var result            = Result.Combine(idHolderName, idHolderCurrentId);

            if (result.IsSuccess)
            {
                var idHolder = new IdHolder(idHolderName.Value, idHolderCurrentId.Value);
                await CreateIdHolderTableEntityAsync(idHolder);
            }
            else
            {
                throw new Exception(result.Error);
            }
        }
コード例 #7
0
        public void Create_ValueIsLessThanZero_ReturnsResultFail()
        {
            var result = IdHolderCurrentId.Create(-3);

            result.IsFailure.Should().BeTrue();
        }
コード例 #8
0
ファイル: IdHolder.cs プロジェクト: superviktor/SolvedIssues
 public IdHolder(IdHolderName idHolderName, IdHolderCurrentId idHolderCurrentId)
 {
     Name      = idHolderName;
     CurrentId = idHolderCurrentId;
 }