public async Task QueryBy_Complex() { //Arrange DateTime dateTime = new DateTime(2021, 1, 5, 21, 10, 23); IConnectionMultiplexer connectionMultiplexer = FakesFactory.CreateConnectionMultiplexerFake(); StockRepository stubStockRepository = FakesFactory.CreateStockRepositoryFake(connectionMultiplexer); StockEntity teslaEntity = new StockEntity("TESLA", StockSector.Technology, 229.00, 12.5); teslaEntity.IsActive = false; teslaEntity.CreatedDateTime = dateTime; await stubStockRepository.AddAsync(teslaEntity); StockEntity microsoftEntity = new StockEntity("MICROSOFT", StockSector.Technology, 204.00, 9.5); microsoftEntity.CreatedDateTime = dateTime.AddSeconds(60); await stubStockRepository.AddAsync(microsoftEntity); StockEntity rheinEnergyEntity = new StockEntity("Rhein Energy", StockSector.Energy, 294.21, 8.5); rheinEnergyEntity.CreatedDateTime = dateTime.AddSeconds(120); await stubStockRepository.AddAsync(rheinEnergyEntity); //Act QueryProvider provider = new RedisQueryProvider(connectionMultiplexer); RedisQuery <StockEntity> redisQuery = new RedisQuery <StockEntity>(provider); IQueryable <StockEntity> query = redisQuery.Where(s => (s.IsActive == false && s.FirstLetterOfName == 'T' && s.CreatedDateTime == dateTime && (s.LastByteOfName == (byte)'L' || s.LengthOfNameInt < 6)) || (s.CreatedDateTime > dateTime.AddSeconds(90) && s.LengthOfNameUlong == (ulong)"Rhein Energy".Length)); List <StockEntity> result = query.ToList(); //Assert Assert.Equal(2, result.Count); Assert.Equal(" {{StockEntity:IsActive-Boolean:False}} {{StockEntity:FirstLetterOfName-Int32:84:=}} {{Intersection}} {{StockEntity:CreatedDateTime-DateTime:637454778230000000:=}} {{Intersection}} {{StockEntity:LastByteOfName-Int32:76:=}} {{StockEntity:LengthOfNameInt-Int32:6:<}} {{Union}}{{Intersection}} {{StockEntity:CreatedDateTime-DateTime:637454779130000000:>}} {{StockEntity:LengthOfNameUlong-UInt64:12:=}} {{Intersection}}{{Union}}", query.ToString()); }
public async Task QueryBy_DateTime() { //Arrange DateTime dateTime = new DateTime(2021, 1, 5, 21, 10, 23); IConnectionMultiplexer connectionMultiplexer = FakesFactory.CreateConnectionMultiplexerFake(); StockRepository stubStockRepository = FakesFactory.CreateStockRepositoryFake(connectionMultiplexer); StockEntity teslaEntity = new StockEntity("TESLA", StockSector.Technology, 229.00, 12.5); teslaEntity.CreatedDateTime = dateTime; await stubStockRepository.AddAsync(teslaEntity); StockEntity microsoftEntity = new StockEntity("MICROSOFT", StockSector.Technology, 204.00, 9.5); microsoftEntity.CreatedDateTime = dateTime.AddSeconds(60); await stubStockRepository.AddAsync(microsoftEntity); StockEntity appleEntity = new StockEntity("APPLE", StockSector.Technology, 294.21, 8.5); appleEntity.CreatedDateTime = dateTime.AddSeconds(120); await stubStockRepository.AddAsync(appleEntity); //Act QueryProvider provider = new RedisQueryProvider(connectionMultiplexer); RedisQuery <StockEntity> redisQuery = new RedisQuery <StockEntity>(provider); IQueryable <StockEntity> query = redisQuery.Where(s => (s.CreatedDateTime < dateTime.AddSeconds(90))); List <StockEntity> result = query.ToList(); //Assert Assert.Equal(2, result.Count); }
public async Task QueryBy_Boolean() { //Arrange IConnectionMultiplexer connectionMultiplexer = FakesFactory.CreateConnectionMultiplexerFake(); StockRepository stubStockRepository = FakesFactory.CreateStockRepositoryFake(connectionMultiplexer); StockEntity teslaEntity = new StockEntity("TESLA", StockSector.Technology, 229.00, 12.5); teslaEntity.IsActive = false; await stubStockRepository.AddAsync(teslaEntity); StockEntity microsoftEntity = new StockEntity("MICROSOFT", StockSector.Technology, 204.00, 9.5); await stubStockRepository.AddAsync(microsoftEntity); StockEntity appleEntity = new StockEntity("APPLE", StockSector.Technology, 294.21, 8.5); await stubStockRepository.AddAsync(appleEntity); //Act QueryProvider provider = new RedisQueryProvider(connectionMultiplexer); RedisQuery <StockEntity> redisQuery = new RedisQuery <StockEntity>(provider); IQueryable <StockEntity> query = redisQuery.Where(s => (s.IsActive == true)); List <StockEntity> result = query.ToList(); //Assert Assert.Equal(2, result.Count); }
/// <summary> /// Use existing multiplexer for performance /// </summary> /// <param name="multiplexer"></param> /// <param name="db"></param> public RedisClient(IConnectionMultiplexer multiplexer, int db) { Multiplexer = multiplexer; Db = Multiplexer.GetDatabase(db); _provider = new RedisQueryProvider <TValue>(this); Context = new QueryableObject <TValue>(_provider); }
public RedisClient(string connectionString, int db) { Multiplexer = ConnectionMultiplexer.Connect(connectionString); Db = Multiplexer.GetDatabase(db); _provider = new RedisQueryProvider <TValue>(this); Context = new QueryableObject <TValue>(_provider); }
public void QueryBy_Int32() { //Arrange and Act QueryProvider provider = new RedisQueryProvider((IConnectionMultiplexer)fixture.DI.GetService(typeof(IConnectionMultiplexer))); RedisQuery <StockEntity> redisQuery = new RedisQuery <StockEntity>(provider); IQueryable <StockEntity> query = redisQuery.Where(s => (s.LengthOfNameInt == 10)); List <StockEntity> result = query.ToList(); //Assert Assert.Equal(fixture.TestData.Count(s => (s.LengthOfNameInt == 10)), result.Count); }
public void QueryBy_Enum() { //Arrange and Act QueryProvider provider = new RedisQueryProvider((IConnectionMultiplexer)fixture.DI.GetService(typeof(IConnectionMultiplexer))); RedisQuery <StockEntity> redisQuery = new RedisQuery <StockEntity>(provider); IQueryable <StockEntity> query = redisQuery.Where(s => (s.Sector == StockSector.CommunicationServices)); List <StockEntity> result = query.ToList(); //Assert Assert.Equal(fixture.TestData.Count(s => (s.Sector == StockSector.CommunicationServices)), result.Count); }
public void QueryBy_DateTime() { //Arrange and Act QueryProvider provider = new RedisQueryProvider((IConnectionMultiplexer)fixture.DI.GetService(typeof(IConnectionMultiplexer))); RedisQuery <StockEntity> redisQuery = new RedisQuery <StockEntity>(provider); IQueryable <StockEntity> query = redisQuery.Where(s => (s.CreatedDateTime < DateTime.Now.AddMilliseconds(245))); List <StockEntity> result = query.ToList(); //Assert Assert.Equal(fixture.TestData.Count(s => (s.CreatedDateTime < DateTime.Now.AddMinutes(245))), result.Count); }
public void QueryBy_String() { //Arrange and Act QueryProvider provider = new RedisQueryProvider((IConnectionMultiplexer)fixture.DI.GetService(typeof(IConnectionMultiplexer))); RedisQuery <StockEntity> redisQuery = new RedisQuery <StockEntity>(provider); IQueryable <StockEntity> query = redisQuery.Where(s => (s.Name == "Abbott Laboratories")); List <StockEntity> result = query.ToList(); //Assert Assert.Equal(fixture.TestData.Count(s => (s.Name == "Abbott Laboratories")), result.Count); }
public void QueryBy_Complex() { //Arrange and Act QueryProvider provider = new RedisQueryProvider((IConnectionMultiplexer)fixture.DI.GetService(typeof(IConnectionMultiplexer))); RedisQuery <StockEntity> redisQuery = new RedisQuery <StockEntity>(provider); IQueryable <StockEntity> query = redisQuery.Where(s => (s.IsActive == true && s.FirstLetterOfName == 'A' && s.CreatedDateTime < DateTime.Now.AddMilliseconds(-1) && (s.LastByteOfName == (byte)'.' || s.LengthOfNameInt < 12) || (s.CreatedDateTime == DateTime.Now && s.LengthOfNameUlong == (ulong)"Accenture plc".Length))); List <StockEntity> result = query.ToList(); var count = fixture.TestData.Count(s => (s.IsActive == true && s.FirstLetterOfName == 'A' && s.CreatedDateTime < DateTime.Now.AddMilliseconds(-1) && (s.LastByteOfName == (byte)'.' || s.LengthOfNameInt < 12) || (s.CreatedDateTime == DateTime.Now && s.LengthOfNameUlong == (ulong)"Accenture plc".Length))); //Assert Assert.Equal(count, result.Count); }
public async Task QueryBy_Char() { //Arrange IConnectionMultiplexer connectionMultiplexer = FakesFactory.CreateConnectionMultiplexerFake(); StockRepository stubStockRepository = FakesFactory.CreateStockRepositoryFake(connectionMultiplexer); StockEntity teslaEntity = new StockEntity("TESLA", StockSector.Technology, 229.00, 12.5); await stubStockRepository.AddAsync(teslaEntity); StockEntity microsoftEntity = new StockEntity("MICROSOFT", StockSector.Technology, 204.00, 9.5); await stubStockRepository.AddAsync(microsoftEntity); StockEntity appleEntity = new StockEntity("APPLE", StockSector.Technology, 294.21, 8.5); await stubStockRepository.AddAsync(appleEntity); //Act QueryProvider provider = new RedisQueryProvider(connectionMultiplexer); RedisQuery <StockEntity> redisQuery = new RedisQuery <StockEntity>(provider); IQueryable <StockEntity> query = redisQuery.Where(s => (s.FirstLetterOfName == 'T')); List <StockEntity> result = query.ToList(); //Assert Assert.Single(result); }
public async Task QueryBy_Enum() { //Arrange IConnectionMultiplexer connectionMultiplexer = FakesFactory.CreateConnectionMultiplexerFake(); StockRepository stubStockRepository = FakesFactory.CreateStockRepositoryFake(connectionMultiplexer); StockEntity teslaEntity = new StockEntity("TESLA", StockSector.Technology, 229.00, 12.5); await stubStockRepository.AddAsync(teslaEntity); StockEntity microsoftEntity = new StockEntity("MICROSOFT", StockSector.Technology, 204.00, 9.5); await stubStockRepository.AddAsync(microsoftEntity); StockEntity rheinEnergyEntity = new StockEntity("Rhein Energy", StockSector.Energy, 294.21, 8.5); await stubStockRepository.AddAsync(rheinEnergyEntity); //Act QueryProvider provider = new RedisQueryProvider(connectionMultiplexer); RedisQuery <StockEntity> redisQuery = new RedisQuery <StockEntity>(provider); IQueryable <StockEntity> query = redisQuery.Where(s => (s.Sector == StockSector.Technology)); List <StockEntity> result = query.ToList(); //Assert Assert.Equal(2, result.Count); }