Пример #1
0
            public void SaveChanges_CallsSaveChangesAsyncOnTheContext_WhenCalledWithoutCancellationToken()
            {
                // Arrange
                IContext context = Substitute.For <IContext>();
                IAbstractRepositoryFactory <IContext> abstractRepositoryFactory = Substitute.For <IAbstractRepositoryFactory <IContext> >();
                UnitOfWork <IContext> unitOfWork = new UnitOfWork <IContext>(context, abstractRepositoryFactory);

                // Act
                unitOfWork.SaveChangesAsync();

                // Assert
                context.Received(1).SaveChangesAsync();
            }
Пример #2
0
            public void Repository_CallesRepositoryOnTheAbstractRepositoryFactory_IfCalledWithGernericId()
            {
                // Arrange
                IContext context = Substitute.For <IContext>();
                IAbstractRepositoryFactory <IContext> abstractRepositoryFactory = Substitute.For <IAbstractRepositoryFactory <IContext> >();
                IUnitOfWork unitofWork = new UnitOfWork <IContext>(context, abstractRepositoryFactory);

                // Act
                unitofWork.Repository <ConcreteEntityGuid, Guid>();

                // Assert
                abstractRepositoryFactory.Received(1).Repository <ConcreteEntityGuid, Guid>();
            }
Пример #3
0
            public void Constructor_ThrowsArgumentNullException_IfAbstractRepositoryFactoryIsNull()
            {
                // Arrange
                IContext context = Substitute.For <IContext>();
                IAbstractRepositoryFactory <IContext> abstractRepositoryFactory = default;
                UnitOfWork <IContext> unitOfWork;
                ArgumentException     argumentException;

                // Act
                argumentException = Assert.Throws <ArgumentNullException>(() => unitOfWork = new UnitOfWork <IContext>(context, abstractRepositoryFactory));

                // Assert
                Assert.NotNull(argumentException);
            }
Пример #4
0
            public void Equals_ReturnsFalse_WhenOtherObjectIsDifferentType()
            {
                // Arrange
                IContext contextL = Substitute.For <IContext>();
                IAbstractRepositoryFactory <IContext> abstractRepositoryFactoryL = Substitute.For <IAbstractRepositoryFactory <IContext> >();
                object unitofWorkL = new UnitOfWork <IContext>(contextL, abstractRepositoryFactoryL);
                object unitOfWorkR = "Not a UnitOfWork Type ;)";

                bool actual;

                // Act
                actual = unitofWorkL.Equals(unitOfWorkR);

                // Assert
                Assert.False(actual);
            }
Пример #5
0
            public void EqualEqual_ReturnsFalse_WhenRightIsNull()
            {
                // Arrange
                IContext contextL = Substitute.For <IContext>();
                IAbstractRepositoryFactory <IContext> abstractRepositoryFactoryL = Substitute.For <IAbstractRepositoryFactory <IContext> >();
                UnitOfWork <IContext> unitofWorkL = new UnitOfWork <IContext>(contextL, abstractRepositoryFactoryL);
                UnitOfWork <IContext> unitOfWorkR = default;

                bool actual;

                // Act
                actual = unitofWorkL == unitOfWorkR;

                // Assert
                Assert.False(actual);
            }
Пример #6
0
            public void BangEqual_ReturnsFalse_IfTheUnitOfWorksAreEqual()
            {
                // Arrange
                IContext contextL = Substitute.For <IContext>();
                IAbstractRepositoryFactory <IContext> abstractRepositoryFactoryL = Substitute.For <IAbstractRepositoryFactory <IContext> >();
                UnitOfWork <IContext> unitofWorkL = new UnitOfWork <IContext>(contextL, abstractRepositoryFactoryL);
                UnitOfWork <IContext> unitOfWorkR = unitofWorkL;

                bool actual;

                // Act
                actual = unitofWorkL != unitOfWorkR;

                // Assert
                Assert.False(actual);
            }
Пример #7
0
            public void Equals_ReturnsTrue_WhenReferencesAreEqual()
            {
                // Arrange
                IContext contextL = Substitute.For <IContext>();
                IAbstractRepositoryFactory <IContext> abstractRepositoryFactoryL = Substitute.For <IAbstractRepositoryFactory <IContext> >();
                UnitOfWork <IContext> unitofWorkL = new UnitOfWork <IContext>(contextL, abstractRepositoryFactoryL);
                UnitOfWork <IContext> unitOfWorkR = unitofWorkL;

                bool actual;

                // Act
                actual = unitofWorkL.Equals(unitOfWorkR);

                // Assert
                Assert.True(actual);
            }
Пример #8
0
            public void BangEqual_ReturnsTrue_WhenLeftIsNull()
            {
                // Arrange
                IContext contextR = Substitute.For <IContext>();
                IAbstractRepositoryFactory <IContext> abstractRepositoryFactoryR = Substitute.For <IAbstractRepositoryFactory <IContext> >();
                UnitOfWork <IContext> unitOfWorkR = new UnitOfWork <IContext>(contextR, abstractRepositoryFactoryR);
                UnitOfWork <IContext> unitofWorkL = default;

                bool actual;

                // Act
                actual = unitofWorkL != unitOfWorkR;

                // Assert
                Assert.True(actual);
            }
Пример #9
0
            public void EqualEqual_ReturnsFalse_WhenContextAbstractRepositoryFactoryAndReferencesAreDifferent()
            {
                // Arrange
                IContext contextL = Substitute.For <IContext>();
                IAbstractRepositoryFactory <IContext> abstractRepositoryFactoryL = Substitute.For <IAbstractRepositoryFactory <IContext> >();
                UnitOfWork <IContext> unitofWorkL = new UnitOfWork <IContext>(contextL, abstractRepositoryFactoryL);

                IContext contextR = Substitute.For <IContext>();
                IAbstractRepositoryFactory <IContext> abstractRepositoryFactoryR = Substitute.For <IAbstractRepositoryFactory <IContext> >();
                UnitOfWork <IContext> unitOfWorkR = new UnitOfWork <IContext>(contextR, abstractRepositoryFactoryR);

                bool actual;

                // Act
                actual = unitofWorkL == unitOfWorkR;

                // Assert
                Assert.False(actual);
            }
Пример #10
0
            public void Equals_ReturnsFalse_WhenObjectReferencesAreDifferent()
            {
                // Arrange
                IContext contextL = Substitute.For <IContext>();
                IAbstractRepositoryFactory <IContext> abstractRepositoryFactoryL = Substitute.For <IAbstractRepositoryFactory <IContext> >();
                object unitofWorkL = new UnitOfWork <IContext>(contextL, abstractRepositoryFactoryL);

                IContext contextR = contextL;
                IAbstractRepositoryFactory <IContext> abstractRepositoryFactoryR = abstractRepositoryFactoryL;
                object unitOfWorkR = new UnitOfWork <IContext>(contextR, abstractRepositoryFactoryR);

                bool actual;

                // Act
                actual = unitofWorkL.Equals(unitOfWorkR);

                // Assert
                Assert.False(actual);
            }
Пример #11
0
            public void BangEqual_ReturnsTrue_WhenReferencesAreDifferent()
            {
                // Arrange
                IContext contextL = Substitute.For <IContext>();
                IAbstractRepositoryFactory <IContext> abstractRepositoryFactoryL = Substitute.For <IAbstractRepositoryFactory <IContext> >();
                UnitOfWork <IContext> unitofWorkL = new UnitOfWork <IContext>(contextL, abstractRepositoryFactoryL);

                IContext contextR = contextL;
                IAbstractRepositoryFactory <IContext> abstractRepositoryFactoryR = abstractRepositoryFactoryL;
                UnitOfWork <IContext> unitOfWorkR = new UnitOfWork <IContext>(contextR, abstractRepositoryFactoryR);

                bool actual;

                // Act
                actual = unitofWorkL != unitOfWorkR;

                // Assert
                Assert.True(actual);
            }
Пример #12
0
            public void GetHashCode_ReturnsTheSameHashCodes_IfReferencesAreTheSame()
            {
                // Arrange
                IContext contextL = Substitute.For <IContext>();
                IAbstractRepositoryFactory <IContext> abstractRepositoryFactoryL = Substitute.For <IAbstractRepositoryFactory <IContext> >();
                UnitOfWork <IContext> unitofWorkL = new UnitOfWork <IContext>(contextL, abstractRepositoryFactoryL);
                int hashCodeL;

                UnitOfWork <IContext> unitOfWorkR = unitofWorkL;
                int  hashCodeR;
                bool theSameHashCode;

                // Act
                hashCodeL       = unitofWorkL.GetHashCode();
                hashCodeR       = unitOfWorkR.GetHashCode();
                theSameHashCode = hashCodeL == hashCodeR;

                // Assert
                Assert.True(theSameHashCode);
            }
Пример #13
0
            public void GetHashCode_ReturnsDifferentHashCodes_IfAbstractRepositoryFactoryAndReferencesAreDifferent()
            {
                // Arrange
                IContext contextL = Substitute.For <IContext>();
                IAbstractRepositoryFactory <IContext> abstractRepositoryFactoryL = Substitute.For <IAbstractRepositoryFactory <IContext> >();
                UnitOfWork <IContext> unitofWorkL = new UnitOfWork <IContext>(contextL, abstractRepositoryFactoryL);
                int hashCodeL;

                IContext contextR = contextL;
                IAbstractRepositoryFactory <IContext> abstractRepositoryFactoryR = Substitute.For <IAbstractRepositoryFactory <IContext> >();
                UnitOfWork <IContext> unitOfWorkR = new UnitOfWork <IContext>(contextR, abstractRepositoryFactoryR);
                int  hashCodeR;
                bool theSameHashCode;

                // Act
                hashCodeL       = unitofWorkL.GetHashCode();
                hashCodeR       = unitOfWorkR.GetHashCode();
                theSameHashCode = hashCodeL == hashCodeR;

                // Assert
                Assert.False(theSameHashCode);
            }
Пример #14
0
        public bool Equals(IAbstractRepositoryFactory <TContext> x, IAbstractRepositoryFactory <TContext> y)
        {
            if (x is null)
            {
                return(false);
            }

            if (y is null)
            {
                return(false);
            }

            if (!ReferenceEquals(x, y))
            {
                return(false);
            }

            if (GetHashCode(x) != GetHashCode(y))
            {
                return(false);
            }

            return(true);
        }
Пример #15
0
 public int GetHashCode(IAbstractRepositoryFactory <TContext> obj)
 => obj is null ? 0 : RuntimeHelpers.GetHashCode(obj);
Пример #16
0
 public LookupDataRepository(IAbstractRepositoryFactory abstractRepositoryFactory, ICacheFactory cacheFactory)
 {
     _abstractRepositoryFactory = abstractRepositoryFactory;
     _cache = cacheFactory.Create();
 }
Пример #17
0
 public UnitOfWork(TContext context, IAbstractRepositoryFactory <TContext> abstractRepositoryFactory)
 {
     AbstractRepositoryFactory = abstractRepositoryFactory ?? throw new ArgumentNullException(nameof(abstractRepositoryFactory));
     Context = context ?? throw new ArgumentNullException(nameof(context));
 }