public void GetCarsByGuids_GuidsNull() { var mockContext = new Mock <ApplicationContext>(); var logger = new NLogLoggerService(); var entityRepository = new EntityFrameworkEntityRepository(logger, mockContext.Object); var rightRepository = new EntityFrameworkRightRepository(logger, mockContext.Object, entityRepository); var repository = new EntityFrameworkCarRepository(logger, entityRepository, rightRepository, mockContext.Object); repository.GetCarsByGuids(Guid.NewGuid(), null); }
public void GetCarsByGuids() { var mockContext = new Mock <ApplicationContext>(); var logger = new NLogLoggerService(); var entityRepository = new EntityFrameworkEntityRepository(logger, mockContext.Object); var rightRepository = new EntityFrameworkRightRepository(logger, mockContext.Object, entityRepository); var repository = new EntityFrameworkCarRepository(logger, entityRepository, rightRepository, mockContext.Object); var agent = Guid.NewGuid(); var mockSet1 = new Mock <DbSet <Right> >(); var data1 = new List <Right> { new Right { AgentGuid = agent, EntityType = EntityType.Car, OperationTypes = new[] { OperationType.AddOrUpdate, OperationType.Select, OperationType.Delete } }, }; var queryable1 = data1.AsQueryable(); mockSet1.As <IQueryable <Right> >().Setup(m => m.Provider).Returns(queryable1.Provider); mockSet1.As <IQueryable <Right> >().Setup(m => m.Expression).Returns(queryable1.Expression); mockSet1.As <IQueryable <Right> >().Setup(m => m.ElementType).Returns(queryable1.ElementType); mockSet1.As <IQueryable <Right> >().Setup(m => m.GetEnumerator()).Returns(queryable1.GetEnumerator()); mockSet1.Setup(d => d.Add(It.IsAny <Right>())).Callback <Right>(s => data1.Add(s)); mockContext.Setup(m => m.Rights).Returns(mockSet1.Object); var mockSet = new Mock <DbSet <Car> >(); var data = new List <Car>(); var queryable = data.AsQueryable(); mockSet.As <IQueryable <Car> >().Setup(m => m.Provider).Returns(queryable.Provider); mockSet.As <IQueryable <Car> >().Setup(m => m.Expression).Returns(queryable.Expression); mockSet.As <IQueryable <Car> >().Setup(m => m.ElementType).Returns(queryable.ElementType); mockSet.As <IQueryable <Car> >().Setup(m => m.GetEnumerator()).Returns(queryable.GetEnumerator()); mockSet.Setup(d => d.Add(It.IsAny <Car>())).Callback <Car>(s => { s.Id++; data.Add(s); }); mockSet.Setup(m => m.Find(It.IsAny <object[]>())).Returns <object[]>(ids => data.FirstOrDefault(d => d.Id == (int)ids[0])); mockContext.Setup(m => m.Cars).Returns(mockSet.Object); var mockSet2 = new Mock <DbSet <EntityGuids> >(); var data2 = new List <EntityGuids>(); var queryable2 = data2.AsQueryable(); mockSet2.As <IQueryable <EntityGuids> >().Setup(m => m.Provider).Returns(queryable2.Provider); mockSet2.As <IQueryable <EntityGuids> >().Setup(m => m.Expression).Returns(queryable2.Expression); mockSet2.As <IQueryable <EntityGuids> >().Setup(m => m.ElementType).Returns(queryable2.ElementType); mockSet2.As <IQueryable <EntityGuids> >().Setup(m => m.GetEnumerator()).Returns(queryable2.GetEnumerator()); mockSet2.Setup(d => d.Add(It.IsAny <EntityGuids>())).Callback <EntityGuids>(s => data2.Add(s)); mockContext.Setup(m => m.EntityGuids).Returns(mockSet2.Object); var addOrUpdateCar = repository.AddOrUpdateCar(agent, new Car { Id = 0, Number = "1", }); var cars = entityRepository.GetEntitys(agent, EntityType.Car); Assert.AreEqual(1, cars.Count); Assert.AreEqual(addOrUpdateCar.Guid, cars[0]); var carsByGuids = repository.GetCarsByGuids(agent, new List <Guid> { addOrUpdateCar.Guid }); Assert.AreEqual(1, carsByGuids.Count); Assert.AreEqual("1", carsByGuids[0].Number); Assert.AreEqual(addOrUpdateCar.Id, carsByGuids[0].Id); Assert.AreEqual(addOrUpdateCar.Guid, carsByGuids[0].Guid); addOrUpdateCar.Number = "22"; repository.AddOrUpdateCar(agent, addOrUpdateCar); carsByGuids = repository.GetCarsByGuids(agent, new List <Guid> { addOrUpdateCar.Guid }); Assert.AreEqual(1, carsByGuids.Count); Assert.AreEqual("22", carsByGuids[0].Number); Assert.AreEqual(addOrUpdateCar.Id, carsByGuids[0].Id); Assert.AreEqual(addOrUpdateCar.Guid, carsByGuids[0].Guid); repository.DeleteCar(agent, addOrUpdateCar); cars = entityRepository.GetEntitys(agent, EntityType.Car); Assert.AreEqual(0, cars.Count); }