示例#1
0
        public void ShouldReturnTaskOfCorrectType_WhenItemIsFound()
        {
            var mockDbSet     = new Mock <DbSet <IDbModel> >();
            var mockDbContext = new Mock <IWhenItsDoneDbContext>();

            mockDbContext.Setup(mock => mock.Set <IDbModel>()).Returns(mockDbSet.Object);

            var asyncGenericRepositoryInstace = new GenericAsyncRepository <IDbModel>(mockDbContext.Object);

            var fakeDeletedModel = new Mock <IDbModel>();

            fakeDeletedModel.SetupGet(model => model.IsDeleted).Returns(true);

            var fakeData = new List <IDbModel>()
            {
                fakeDeletedModel.Object
            }
            .AsQueryable();

            mockDbSet.As <IQueryable <IDbModel> >().Setup(m => m.Provider).Returns(fakeData.Provider);
            mockDbSet.As <IQueryable <IDbModel> >().Setup(m => m.Expression).Returns(fakeData.Expression);
            mockDbSet.As <IQueryable <IDbModel> >().Setup(m => m.ElementType).Returns(fakeData.ElementType);
            mockDbSet.As <IQueryable <IDbModel> >().Setup(m => m.GetEnumerator()).Returns(fakeData.GetEnumerator());

            var actualReturnedCollection = asyncGenericRepositoryInstace.GetDeleted();

            Assert.That(actualReturnedCollection.GetType(), Is.EqualTo(typeof(Task <IEnumerable <IDbModel> >)));
        }
示例#2
0
        public void ShouldReturnTaskWithResultCountZero_WhenItemIsNotFound()
        {
            var mockDbSet     = new Mock <DbSet <IDbModel> >();
            var mockDbContext = new Mock <IWhenItsDoneDbContext>();

            mockDbContext.Setup(mock => mock.Set <IDbModel>()).Returns(mockDbSet.Object);

            var asyncGenericRepositoryInstace = new GenericAsyncRepository <IDbModel>(mockDbContext.Object);

            // Setup data
            var fakeData = new List <IDbModel>()
            {
                new Mock <IDbModel>().Object,
                new Mock <IDbModel>().Object,
                new Mock <IDbModel>().Object,
                new Mock <IDbModel>().Object,
                new Mock <IDbModel>().Object,
                new Mock <IDbModel>().Object
            }
            .AsQueryable();

            mockDbSet.As <IQueryable <IDbModel> >().Setup(m => m.Provider).Returns(fakeData.Provider);
            mockDbSet.As <IQueryable <IDbModel> >().Setup(m => m.Expression).Returns(fakeData.Expression);
            mockDbSet.As <IQueryable <IDbModel> >().Setup(m => m.ElementType).Returns(fakeData.ElementType);
            mockDbSet.As <IQueryable <IDbModel> >().Setup(m => m.GetEnumerator()).Returns(fakeData.GetEnumerator());

            Expression <Func <IDbModel, bool> > filter = (IDbModel model) => model.Id == 1;

            var actualReturnedCollection = asyncGenericRepositoryInstace.GetAll(filter);

            Assert.That(actualReturnedCollection.Result.Count, Is.EqualTo(0));
        }
示例#3
0
        public void ChangeStateOf_Stateful_WhenCalledWithValidParameters()
        {
            // Arange
            var mockedStaful = new Mock <IStateful <IDbModel> >();

            mockedStaful.SetupSet(x => x.State = EntityState.Modified).Verifiable();

            var fakeDbSet = new Mock <DbSet <IDbModel> >();

            var fakeDbModel = new Mock <IDbModel>();


            var mockDbContext = new Mock <IWhenItsDoneDbContext>();

            mockDbContext.Setup(mock => mock.Set <IDbModel>()).Returns(fakeDbSet.Object);
            mockDbContext.Setup(mock => mock.GetStateful(It.IsAny <IDbModel>())).Returns(mockedStaful.Object);

            var asyncGenericRepositoryInstace = new GenericAsyncRepository <IDbModel>(mockDbContext.Object);

            // Act
            asyncGenericRepositoryInstace.Update(fakeDbModel.Object);

            // Assert
            mockedStaful.Verify();
        }
        public void ShouldThrowArgumentExceptionWithCorrectMessage_WhenPageSizeParameterIsNegative()
        {
            var mockDbSet     = new Mock <DbSet <IDbModel> >();
            var mockDbContext = new Mock <IWhenItsDoneDbContext>();

            mockDbContext.Setup(mock => mock.Set <IDbModel>()).Returns(mockDbSet.Object);

            var asyncGenericRepositoryInstace = new GenericAsyncRepository <IDbModel>(mockDbContext.Object);

            // Setup data
            var fakeData = new List <IDbModel>()
            {
                new Mock <IDbModel>().Object,
                new Mock <IDbModel>().Object,
                new Mock <IDbModel>().Object,
                new Mock <IDbModel>().Object,
                new Mock <IDbModel>().Object,
                new Mock <IDbModel>().Object
            }
            .AsQueryable();

            mockDbSet.As <IQueryable <IDbModel> >().Setup(m => m.Provider).Returns(fakeData.Provider);
            mockDbSet.As <IQueryable <IDbModel> >().Setup(m => m.Expression).Returns(fakeData.Expression);
            mockDbSet.As <IQueryable <IDbModel> >().Setup(m => m.ElementType).Returns(fakeData.ElementType);
            mockDbSet.As <IQueryable <IDbModel> >().Setup(m => m.GetEnumerator()).Returns(fakeData.GetEnumerator());

            var page     = 1;
            var pageSize = -5;
            Expression <Func <IDbModel, bool> > filter = (IDbModel model) => model.Id == 1;

            Assert.That(
                () => asyncGenericRepositoryInstace.GetAll(filter, page, pageSize),
                Throws.InstanceOf <ArgumentException>().With.Message.Contains("Page Size must be a value equal to or greater than zero."));
        }
示例#5
0
        public void ShouldThrowArgumentNullException_WhenFilterParameterIsNull()
        {
            var mockDbSet     = new Mock <DbSet <IDbModel> >();
            var mockDbContext = new Mock <IWhenItsDoneDbContext>();

            mockDbContext.Setup(mock => mock.Set <IDbModel>()).Returns(mockDbSet.Object);

            var asyncGenericRepositoryInstace = new GenericAsyncRepository <IDbModel>(mockDbContext.Object);

            // Setup data
            var fakeData = new List <IDbModel>()
            {
                new Mock <IDbModel>().Object,
                new Mock <IDbModel>().Object,
                new Mock <IDbModel>().Object,
                new Mock <IDbModel>().Object,
                new Mock <IDbModel>().Object,
                new Mock <IDbModel>().Object
            }
            .AsQueryable();

            mockDbSet.As <IQueryable <IDbModel> >().Setup(m => m.Provider).Returns(fakeData.Provider);
            mockDbSet.As <IQueryable <IDbModel> >().Setup(m => m.Expression).Returns(fakeData.Expression);
            mockDbSet.As <IQueryable <IDbModel> >().Setup(m => m.ElementType).Returns(fakeData.ElementType);
            mockDbSet.As <IQueryable <IDbModel> >().Setup(m => m.GetEnumerator()).Returns(fakeData.GetEnumerator());

            Expression <Func <IDbModel, bool> > filter = null;

            Assert.That(
                () => asyncGenericRepositoryInstace.GetAll(filter),
                Throws.InstanceOf <ArgumentNullException>().With.Message.Contains(nameof(filter)));
        }
示例#6
0
        public void ShouldCreateAnObjectWhichImplementsIAsyncRepository()
        {
            var fakeDbSet     = new Mock <DbSet <IDbModel> >();
            var mockDbContext = new Mock <IWhenItsDoneDbContext>();

            mockDbContext.Setup(mock => mock.Set <IDbModel>()).Returns(fakeDbSet.Object);

            var asyncGenericRepository = new GenericAsyncRepository <IDbModel>(mockDbContext.Object);

            Assert.That(asyncGenericRepository, Is.InstanceOf <IAsyncRepository <IDbModel> >());
        }
示例#7
0
        public void ShouldNotThrow_WhenParametersAreCorrect()
        {
            var fakeDbSet     = new Mock <DbSet <IDbModel> >();
            var mockDbContext = new Mock <IWhenItsDoneDbContext>();

            mockDbContext.Setup(mock => mock.Set <IDbModel>()).Returns(fakeDbSet.Object);

            var asyncGenericRepository = new GenericAsyncRepository <IDbModel>(mockDbContext.Object);

            Assert.That(asyncGenericRepository, Is.Not.Null);
        }
示例#8
0
        public void ShouldInvoke_DbContextSetMethodOnce()
        {
            var fakeDbSet     = new Mock <DbSet <IDbModel> >();
            var mockDbContext = new Mock <IWhenItsDoneDbContext>();

            mockDbContext.Setup(mock => mock.Set <IDbModel>()).Returns(fakeDbSet.Object);

            var asyncGenericRepository = new GenericAsyncRepository <IDbModel>(mockDbContext.Object);

            mockDbContext.Verify(mock => mock.Set <IDbModel>(), Times.Once);
        }
示例#9
0
        public void ShouldSetCorrectValueToPrivateFieldDbSet_WhenParametersAreCorrect()
        {
            var fakeDbSet     = new Mock <DbSet <IDbModel> >();
            var mockDbContext = new Mock <IWhenItsDoneDbContext>();

            mockDbContext.Setup(mock => mock.Set <IDbModel>()).Returns(fakeDbSet.Object);

            var actualAsyncGenericRepositoryInstace = new GenericAsyncRepository <IDbModel>(mockDbContext.Object);

            var fieldName       = "dbSet";
            var bindingFlags    = BindingFlags.NonPublic | BindingFlags.Instance;
            var dbSetField      = actualAsyncGenericRepositoryInstace.GetType().GetField(fieldName, bindingFlags);
            var dbSetFieldValue = dbSetField.GetValue(actualAsyncGenericRepositoryInstace);

            Assert.That(dbSetFieldValue, Is.Not.Null.And.EqualTo(fakeDbSet.Object));
        }
示例#10
0
        public async Task ShouldInvokeDbSetFindMethodWithCorrectIdParameter_WhenParametersAreValid()
        {
            var mockDbSet     = new Mock <DbSet <IDbModel> >();
            var mockDbContext = new Mock <IWhenItsDoneDbContext>();

            mockDbContext.Setup(mock => mock.Set <IDbModel>()).Returns(mockDbSet.Object);

            var asyncGenericRepositoryInstace = new GenericAsyncRepository <IDbModel>(mockDbContext.Object);

            mockDbSet.Setup(mock => mock.Find(It.IsAny <int>())).Returns <IDbModel>(null);

            var validId = 42;
            await asyncGenericRepositoryInstace.GetByIdAsync(validId);

            mockDbSet.Verify(mock => mock.Find(validId), Times.Once());
        }
示例#11
0
        public void ShouldReturnTaskWithResultNull_WhenItemIsNotFound()
        {
            var mockDbSet     = new Mock <DbSet <IDbModel> >();
            var mockDbContext = new Mock <IWhenItsDoneDbContext>();

            mockDbContext.Setup(mock => mock.Set <IDbModel>()).Returns(mockDbSet.Object);

            var asyncGenericRepositoryInstace = new GenericAsyncRepository <IDbModel>(mockDbContext.Object);

            mockDbSet.Setup(mock => mock.Find(It.IsAny <int>())).Returns <IDbModel>(null);

            var validId             = 42;
            var actualReturnedModel = asyncGenericRepositoryInstace.GetByIdAsync(validId);

            Assert.That(actualReturnedModel.Result, Is.Null);
        }
示例#12
0
        public void ThrowArgumentExceptionWithCorrectMessage_WhenIdParameterValueIsNegative()
        {
            var mockDbSet     = new Mock <DbSet <IDbModel> >();
            var mockDbContext = new Mock <IWhenItsDoneDbContext>();

            mockDbContext.Setup(mock => mock.Set <IDbModel>()).Returns(mockDbSet.Object);

            var asyncGenericRepositoryInstace = new GenericAsyncRepository <IDbModel>(mockDbContext.Object);

            mockDbSet.Setup(mock => mock.Find(It.IsAny <int>())).Returns <IDbModel>(null);

            var invalidId = -42;

            Assert.That(
                () => asyncGenericRepositoryInstace.GetByIdAsync(invalidId),
                Throws.InstanceOf <ArgumentException>().With.Message.Contains("Id must be a positive integer."));
        }
        public void ShouldReturnTaskWithCorrectResult_WhenItemIsFound()
        {
            var mockDbSet     = new Mock <DbSet <IDbModel> >();
            var mockDbContext = new Mock <IWhenItsDoneDbContext>();

            mockDbContext.Setup(mock => mock.Set <IDbModel>()).Returns(mockDbSet.Object);

            var asyncGenericRepositoryInstace = new GenericAsyncRepository <IDbModel>(mockDbContext.Object);

            // Setup Data
            var fakeMatchingModel = new Mock <IDbModel>();

            fakeMatchingModel.SetupGet(model => model.Id).Returns(1);

            var fakeData = new List <IDbModel>()
            {
                fakeMatchingModel.Object,
                new Mock <IDbModel>().Object,
                new Mock <IDbModel>().Object,
                new Mock <IDbModel>().Object,
                new Mock <IDbModel>().Object,
                new Mock <IDbModel>().Object,
                new Mock <IDbModel>().Object
            }
            .AsQueryable();

            mockDbSet.As <IQueryable <IDbModel> >().Setup(m => m.Provider).Returns(fakeData.Provider);
            mockDbSet.As <IQueryable <IDbModel> >().Setup(m => m.Expression).Returns(fakeData.Expression);
            mockDbSet.As <IQueryable <IDbModel> >().Setup(m => m.ElementType).Returns(fakeData.ElementType);
            mockDbSet.As <IQueryable <IDbModel> >().Setup(m => m.GetEnumerator()).Returns(fakeData.GetEnumerator());

            var page     = 0;
            var pageSize = 5;
            Expression <Func <IDbModel, bool> > filter  = (IDbModel model) => model.Id == 1;
            Expression <Func <IDbModel, int> >  orderBy = (IDbModel model) => model.Id;
            Expression <Func <IDbModel, Type> > select  = (IDbModel model) => model.GetType();

            var actualReturnedCollection = asyncGenericRepositoryInstace.GetAll(filter, orderBy, select, page, pageSize);

            var expectedCollection = new List <Type>()
            {
                fakeMatchingModel.Object.GetType()
            };

            Assert.That(actualReturnedCollection.Result, Is.Not.Null.And.EquivalentTo(expectedCollection));
        }
示例#14
0
        public void ShouldReturnTaskWithResultNull_WhenItemIsNotFound()
        {
            var mockDbSet     = new Mock <DbSet <IDbModel> >();
            var mockDbContext = new Mock <IWhenItsDoneDbContext>();

            mockDbContext.Setup(mock => mock.Set <IDbModel>()).Returns(mockDbSet.Object);

            var asyncGenericRepositoryInstace = new GenericAsyncRepository <IDbModel>(mockDbContext.Object);

            var fakeData = new List <IDbModel>();

            mockDbSet.As <IDbSet <IDbModel> >().Setup(mock => mock.GetEnumerator()).Returns(fakeData.GetEnumerator());

            var actualReturnedCollection = asyncGenericRepositoryInstace.GetAllAsync();

            Assert.That(actualReturnedCollection.Result.Count, Is.EqualTo(0));
        }
示例#15
0
        public void ShouldReturnTaskOfCorrectType_WhenItemIsFound()
        {
            var mockDbSet     = new Mock <DbSet <IDbModel> >();
            var mockDbContext = new Mock <IWhenItsDoneDbContext>();

            mockDbContext.Setup(mock => mock.Set <IDbModel>()).Returns(mockDbSet.Object);

            var asyncGenericRepositoryInstace = new GenericAsyncRepository <IDbModel>(mockDbContext.Object);

            var fakeDbModel = new Mock <IDbModel>();

            mockDbSet.Setup(mock => mock.Find(It.IsAny <int>())).Returns(fakeDbModel.Object);

            var validId             = 42;
            var actualReturnedModel = asyncGenericRepositoryInstace.GetByIdAsync(validId);

            Assert.That(actualReturnedModel.GetType(), Is.EqualTo(typeof(Task <IDbModel>)));
        }
示例#16
0
        public void ShouldReturnTaskOfCorrectStatus_WhenItemIsFound()
        {
            var mockDbSet     = new Mock <DbSet <IDbModel> >();
            var mockDbContext = new Mock <IWhenItsDoneDbContext>();

            mockDbContext.Setup(mock => mock.Set <IDbModel>()).Returns(mockDbSet.Object);

            var asyncGenericRepositoryInstace = new GenericAsyncRepository <IDbModel>(mockDbContext.Object);

            var fakeDbModel = new Mock <IDbModel>();

            mockDbSet.Setup(mock => mock.Find(It.IsAny <int>())).Returns(fakeDbModel.Object);

            var validId             = 42;
            var actualReturnedModel = asyncGenericRepositoryInstace.GetByIdAsync(validId);

            Assert.That(actualReturnedModel.Status, Is.EqualTo(TaskStatus.Running).Or.EqualTo(TaskStatus.WaitingToRun).Or.EqualTo(TaskStatus.RanToCompletion));
        }
示例#17
0
        public void ThrowArgumentNullExceptionWithCorrectMessage_WhenEntityParameterIsNull()
        {
            // Arange
            IDbModel entity = null;

            var fakeDbSet = new Mock <DbSet <IDbModel> >();

            var mockDbContext = new Mock <IWhenItsDoneDbContext>();

            mockDbContext.Setup(mock => mock.Set <IDbModel>()).Returns(fakeDbSet.Object);

            var asyncGenericRepositoryInstace = new GenericAsyncRepository <IDbModel>(mockDbContext.Object);

            // Act & Assert
            Assert.That(
                () => asyncGenericRepositoryInstace.Update(entity),
                Throws.InstanceOf <ArgumentNullException>().With.Message.Contains(nameof(entity)));
        }
示例#18
0
        public void ShouldReturnTaskWithResultNull_WhenItemIsNotFound()
        {
            var mockDbSet     = new Mock <DbSet <IDbModel> >();
            var mockDbContext = new Mock <IWhenItsDoneDbContext>();

            mockDbContext.Setup(mock => mock.Set <IDbModel>()).Returns(mockDbSet.Object);

            var asyncGenericRepositoryInstace = new GenericAsyncRepository <IDbModel>(mockDbContext.Object);

            // Setting up Linq methods
            var fakeData = new List <IDbModel>().AsQueryable();

            mockDbSet.As <IQueryable <IDbModel> >().Setup(m => m.Provider).Returns(fakeData.Provider);
            mockDbSet.As <IQueryable <IDbModel> >().Setup(m => m.Expression).Returns(fakeData.Expression);
            mockDbSet.As <IQueryable <IDbModel> >().Setup(m => m.ElementType).Returns(fakeData.ElementType);
            mockDbSet.As <IQueryable <IDbModel> >().Setup(m => m.GetEnumerator()).Returns(fakeData.GetEnumerator());

            var actualReturnedCollection = asyncGenericRepositoryInstace.GetDeleted();

            Assert.That(actualReturnedCollection.Result.Count, Is.EqualTo(0));
        }
示例#19
0
        public void ShouldReturnTaskOfCorrectStatus_WhenItemIsFound()
        {
            var mockDbSet     = new Mock <DbSet <IDbModel> >();
            var mockDbContext = new Mock <IWhenItsDoneDbContext>();

            mockDbContext.Setup(mock => mock.Set <IDbModel>()).Returns(mockDbSet.Object);

            var asyncGenericRepositoryInstace = new GenericAsyncRepository <IDbModel>(mockDbContext.Object);

            // Setup Data
            var fakeMatchingModel = new Mock <IDbModel>();

            fakeMatchingModel.SetupGet(model => model.Id).Returns(1);

            var fakeData = new List <IDbModel>()
            {
                fakeMatchingModel.Object,
                new Mock <IDbModel>().Object,
                new Mock <IDbModel>().Object,
                new Mock <IDbModel>().Object,
                new Mock <IDbModel>().Object,
                new Mock <IDbModel>().Object,
                new Mock <IDbModel>().Object
            }
            .AsQueryable();

            mockDbSet.As <IQueryable <IDbModel> >().Setup(m => m.Provider).Returns(fakeData.Provider);
            mockDbSet.As <IQueryable <IDbModel> >().Setup(m => m.Expression).Returns(fakeData.Expression);
            mockDbSet.As <IQueryable <IDbModel> >().Setup(m => m.ElementType).Returns(fakeData.ElementType);
            mockDbSet.As <IQueryable <IDbModel> >().Setup(m => m.GetEnumerator()).Returns(fakeData.GetEnumerator());

            var page     = 0;
            var pageSize = 5;
            Expression <Func <IDbModel, bool> > filter  = (IDbModel model) => model.Id == 1;
            Expression <Func <IDbModel, int> >  orderBy = (IDbModel model) => model.Id;

            var actualReturnedCollection = asyncGenericRepositoryInstace.GetAll(filter, orderBy, page, pageSize);

            Assert.That(actualReturnedCollection.Status, Is.EqualTo(TaskStatus.Running).Or.EqualTo(TaskStatus.WaitingToRun).Or.EqualTo(TaskStatus.RanToCompletion));
        }
示例#20
0
        public void InvokeDbContextEntryMethodWithCorrectParameter_WhenParametersAreValid()
        {
            // Arange
            var mockedStaful = new Mock <IStateful <IDbModel> >();

            var fakeDbSet = new Mock <DbSet <IDbModel> >();

            var fakeDbModel = new Mock <IDbModel>();

            var mockDbContext = new Mock <IWhenItsDoneDbContext>();

            mockDbContext.Setup(mock => mock.Set <IDbModel>()).Returns(fakeDbSet.Object);
            mockDbContext.Setup(mock => mock.GetStateful(It.IsAny <IDbModel>())).Returns(mockedStaful.Object);

            var asyncGenericRepositoryInstace = new GenericAsyncRepository <IDbModel>(mockDbContext.Object);

            // Act
            asyncGenericRepositoryInstace.Update(fakeDbModel.Object);

            // Assert
            mockDbContext.Verify(mock => mock.GetStateful(fakeDbModel.Object), Times.Once());
        }
示例#21
0
        public void ShouldReturnTaskOfCorrectStatus_WhenItemIsFound()
        {
            var mockDbSet     = new Mock <DbSet <IDbModel> >();
            var mockDbContext = new Mock <IWhenItsDoneDbContext>();

            mockDbContext.Setup(mock => mock.Set <IDbModel>()).Returns(mockDbSet.Object);

            var asyncGenericRepositoryInstace = new GenericAsyncRepository <IDbModel>(mockDbContext.Object);

            var fakeData = new List <IDbModel>()
            {
                new Mock <IDbModel>().Object,
                new Mock <IDbModel>().Object,
                new Mock <IDbModel>().Object,
                new Mock <IDbModel>().Object
            };

            mockDbSet.As <IDbSet <IDbModel> >().Setup(mock => mock.GetEnumerator()).Returns(fakeData.GetEnumerator());

            var actualReturnedCollection = asyncGenericRepositoryInstace.GetAllAsync();

            Assert.That(actualReturnedCollection.Status, Is.EqualTo(TaskStatus.Running).Or.EqualTo(TaskStatus.WaitingToRun).Or.EqualTo(TaskStatus.RanToCompletion));
        }
示例#22
0
        public void ShouldReturnTaskOfCorrectType_WhenItemIsFound()
        {
            var mockDbSet     = new Mock <DbSet <IDbModel> >();
            var mockDbContext = new Mock <IWhenItsDoneDbContext>();

            mockDbContext.Setup(mock => mock.Set <IDbModel>()).Returns(mockDbSet.Object);

            var asyncGenericRepositoryInstace = new GenericAsyncRepository <IDbModel>(mockDbContext.Object);

            var fakeData = new List <IDbModel>()
            {
                new Mock <IDbModel>().Object,
                new Mock <IDbModel>().Object,
                new Mock <IDbModel>().Object,
                new Mock <IDbModel>().Object
            };

            mockDbSet.As <IDbSet <IDbModel> >().Setup(mock => mock.GetEnumerator()).Returns(fakeData.GetEnumerator());

            var actualReturnedCollection = asyncGenericRepositoryInstace.GetAllAsync();

            Assert.That(actualReturnedCollection.GetType(), Is.EqualTo(typeof(Task <IEnumerable <IDbModel> >)));
        }
 public ClientAsyncService(PackageDbContext dbContext)
 {
     Repository = new GenericAsyncRepository <Client>(dbContext);
 }