public void FromDbReaderWithOneRecord_CompareResult_ExpectSame()
        {
            _readerStub.Read().Returns(true, false);

            var sut    = new SingleResultCommandInvoker <string>(_serviceCommand);
            var result = sut.Invoke(_serviceManager);

            Assert.AreEqual(_expected, result);
        }
        public void WhenReaderWithContentAndContentCheckerReturnsTrue_ExpectTrue()
        {
            _readerStub.Read().Returns(true);
            _serviceCommand.ResultContentChecker(_readerStub).Returns(true);
            var sut = new DoesResultExistCommandInvoker(_serviceCommand);

            var result = sut.Invoke(_serviceManager);

            Assert.IsTrue(result);
        }
Beispiel #3
0
        public void FromDbReaderWithOneRecord_CompareResult_ExpectSame()
        {
            _readerStub.Read().Returns(true, false);
            _serviceCommand.MapResult(_readerStub).Returns(_returnedResult);

            var sut    = new FirstResultOrDefaultCommandInvoker <string>(_serviceCommand);
            var result = sut.Invoke(_serviceManager);

            Assert.AreEqual(_returnedResult, result);
        }
        //protected override async Task<TResult> ExecuteAsync(IDbManager dbManager, IDbCommand command, CancellationToken cancellationToken)
        //{
        //    using (var reader = await dbManager.ExecuteReaderAsync(command, cancellationToken))
        //        return GetSingleResultOrDefault(reader);
        //}

        private TResult GetSingleResultOrDefault(IDbReader reader)
        {
            if (!reader.Read())
            {
                return(default(TResult));
            }

            var result = Command.MapResult(reader);

            if (reader.Read())
            {
                throw new InvalidOperationException("Too many results");
            }

            return(result);
        }
Beispiel #5
0
        public virtual TModel BuildFrom(IDbReader reader)
        {
            if (!reader.Read())
            {
                return(null);
            }

            var model = new TModel();

            Properties.ForEach(property =>
            {
                if (!reader.IsDbNull(property.Name))
                {
                    property.SetValue(model, reader[property.Name], null);
                }
            });

            ManyToOneProperties.ForEach(property =>
            {
                var propertyName = property.Name + "Id";

                if (!reader.IsDbNull(propertyName))
                {
                    var manyToOneObject = Activator.CreateInstance(property.PropertyType);
                    var idProperty      = property.PropertyType.GetRuntimeProperty("Id");
                    idProperty.SetValue(manyToOneObject, reader[propertyName], null);

                    property.SetValue(model, manyToOneObject, null);
                }
            });

            return(model);
        }
Beispiel #6
0
        //protected override async Task<TResult> ExecuteAsync(IDbManager dbManager, IDbCommand command, CancellationToken cancellationToken)
        //{
        //    using (var reader = await dbManager.ExecuteReaderAsync(command, cancellationToken))
        //        return GetFirstResult(reader);
        //}

        private TResult GetFirstResult(IDbReader reader)
        {
            if (!reader.Read())
            {
                throw new InvalidOperationException("No results found");
            }

            return(Command.MapResult(reader));
        }
        //protected override async Task<IEnumerable<TResult>> ExecuteAsync(IDbManager dbManager, IDbCommand command, CancellationToken cancellationToken)
        //{
        //    using (var reader = await dbManager.ExecuteReaderAsync(command, cancellationToken))
        //        return GetManyResults(reader);
        //}

        private IEnumerable <TResult> GetManyResults(IDbReader reader)
        {
            var results = new List <TResult>();

            while (reader.Read())
            {
                results.Add(Command.MapResult(reader));
            }

            return(results);
        }
        public void InvokeCommand_ResultAndExpectedAreEqual()
        {
            var expected = new List <string>()
            {
                "result1", "result2", "result3"
            };

            _fakeReader.Read().Returns(true, true, true, false);
            _serviceCommand.MapResult(_fakeReader).Returns("result1", "result2", "result3");

            var sut = new ManyResultsCommandInvoker <string>(_serviceCommand);

            var result = sut.Invoke(_serviceManager);

            Assert.AreEqual(expected, result);
        }
        //protected override async Task<TResult> ExecuteAsync(IDbManager dbManager, IDbCommand command, CancellationToken cancellationToken)
        //{
        //    using (var reader = await dbManager.ExecuteReaderAsync(command, cancellationToken))
        //        return GetFirstResultOrDefault(reader);
        //}

        private TResult GetFirstResultOrDefault(IDbReader reader)
        {
            return(reader.Read() ? Command.MapResult(reader) : default(TResult));
        }
        //protected override async Task<bool> ExecuteAsync(IDbManager dbManager, IDbCommand command, CancellationToken cancellationToken)
        //{
        //    using (var reader = await dbManager.ExecuteReaderAsync(command, cancellationToken))
        //        return DoesResultExist(reader);
        //}

        private bool DoesResultExist(IDbReader reader)
        => reader.Read() && Command.ResultContentChecker(reader);
Beispiel #11
0
 private static void ExecuteMethod(IDbReader dbReader)
 {
     //m.b. some logic
     dbReader.Read();
 }
 public bool IsToggleEnabled(string toggle)
 {
     return(_dbReader.Read(toggle));
 }