public async Task GetByIdAsync_Should_ReturnNull_When_NoMatchingElementsFound()
        {
            var entity1 = new Persistence.Entities.BoardGame
            {
                Id           = Guid.NewGuid(),
                Name         = "test1",
                Price        = 0,
                CreationTime = DateTime.Now
            };
            var entity2 = new Persistence.Entities.BoardGame
            {
                Id           = Guid.NewGuid(),
                Name         = "test2",
                Price        = 0,
                CreationTime = DateTime.Now
            };
            var entities = new List <Persistence.Entities.BoardGame> {
                entity1, entity2
            };
            await _testContext.BoardGames.AddRangeAsync(entities, _cancellationToken);

            await _testContext.SaveChangesAsync(_cancellationToken);

            var result = await _sut.BoardGameRepository.GetByIdAsync(Guid.NewGuid(), _cancellationToken);

            result.Should().BeNull();
        }
        public async Task GetByIdAsync_Should_ReturnElementWithSpecificId()
        {
            var inputId = Guid.NewGuid();
            var entity1 = new Persistence.Entities.BoardGame
            {
                Id   = inputId,
                Name = "test1"
            };
            var entity2 = new Persistence.Entities.BoardGame
            {
                Id   = Guid.NewGuid(),
                Name = "test2"
            };
            var entities = new List <Persistence.Entities.BoardGame> {
                entity1, entity2
            };
            await _testContext.BoardGames.AddRangeAsync(entities, _cancellationToken);

            await _testContext.SaveChangesAsync(_cancellationToken);

            var result = await _sut.BoardGameRepository.GetByIdAsync(inputId, _cancellationToken);

            result.Id.Should().Be(inputId);
            result.Name.Should().Be(entity1.Name);
            result.Should().BeOfType <BoardGame>();
        }
        public async Task AddAsync_Should_AddBoardGameToDb_When_MethodCalled()
        {
            var boardGame = new BoardGame(Guid.NewGuid(), "test", 15);
            var entity    = new Persistence.Entities.BoardGame
            {
                Id           = boardGame.Id,
                Name         = boardGame.Name,
                Price        = boardGame.Price,
                CreationTime = boardGame.CreationTime
            };
            await _sut.BoardGameRepository.AddAsync(boardGame, _cancellationToken);

            await _sut.SaveChangesAsync(_cancellationToken);

            _testContext.BoardGames.SingleOrDefault(x => x.Id == boardGame.Id).Should().BeEquivalentTo(entity);
        }
        public void AddAsync_Should_ThrowArgumentException_When_ElementWithThisIdExist()
        {
            var boardGame      = new BoardGame(Guid.NewGuid(), "test", 15);
            var existingEntity = new Persistence.Entities.BoardGame
            {
                Id = boardGame.Id
            };

            _testContext.BoardGames.Add(existingEntity);
            _testContext.SaveChanges();

            Func <Task> act = async() =>
            {
                await _sut.BoardGameRepository.AddAsync(boardGame, _cancellationToken);

                await _sut.SaveChangesAsync(_cancellationToken);
            };

            act.Should().Throw <ArgumentException>();
        }
        public async Task GetAllAsync_Should_ReturnMappedListOfGameBoards_When_SomeExist()
        {
            var entity1 = new Persistence.Entities.BoardGame
            {
                Id = Guid.NewGuid()
            };
            var entity2 = new Persistence.Entities.BoardGame
            {
                Id = Guid.NewGuid()
            };
            var entities = new List <Persistence.Entities.BoardGame> {
                entity1, entity2
            };
            await _testContext.BoardGames.AddRangeAsync(entities, _cancellationToken);

            await _testContext.SaveChangesAsync(_cancellationToken);

            var result = await _sut.BoardGameRepository.GetAllAsync(_cancellationToken);

            result.Should().Contain(x => x.Id == entity1.Id);
            result.Should().Contain(x => x.Id == entity2.Id);
        }