public void AddAsync_EntityDoesNotAlreadyExist_ReturnsEntity()
        {
            var firstEntity = new Employee
            {
                Id = 1,
            };

            var secondEntity = new Employee
            {
                Id = 2,
            };

            var data = new List <Employee>
            {
                firstEntity
            };

            var mockSet       = data.AsQueryable().BuildMockDbSet();
            var mockDbContext = Substitute.For <IDatabaseContext>();

            mockDbContext.Set <Employee>().Returns(mockSet);
            var mockLogger = Substitute.For <ILogger <EmployeeDal> >();
            var dal        = new EmployeeDal(mockDbContext, mockLogger);

            var result = Task.Run(async() => await dal.AddAsync(secondEntity)).GetAwaiter().GetResult();

            Assert.That(result, Is.EqualTo(secondEntity));
        }
        public void AddAsync_NullEntity_ThrowsArgumentNullException()
        {
            var mockDbContext = Substitute.For <IDatabaseContext>();
            var mockLogger    = Substitute.For <ILogger <EmployeeDal> >();
            var dal           = new EmployeeDal(mockDbContext, mockLogger);
            var e             = Assert.Throws <ArgumentNullException>(() => dal.AddAsync(null).GetAwaiter().GetResult());

            Assert.That(e.Message, Does.Contain("entity"));
        }
        public void AddAsync_EntityAlreadyExists_ReturnsNull()
        {
            var entity = new Employee
            {
                Id = 1,
            };

            var data = new List <Employee>
            {
                entity
            };

            var mockSet = data.AsQueryable().BuildMockDbSet();

            var mockDbContext = Substitute.For <IDatabaseContext>();

            mockDbContext.Set <Employee>().Returns(mockSet);
            var mockLogger = Substitute.For <ILogger <EmployeeDal> >();
            var dal        = new EmployeeDal(mockDbContext, mockLogger);

            var result = Task.Run(async() => await dal.AddAsync(entity)).GetAwaiter().GetResult();

            Assert.That(result, Is.Null);
        }