|
| 1 | +using Moq; |
| 2 | +using NRedisStack.RedisStackCommands; |
| 3 | +using NRedisStack.Search; |
| 4 | +using NRedisStack.Search.FT.CREATE; |
| 5 | +using StackExchange.Redis; |
| 6 | +using System.Text.Json; |
| 7 | +using Xunit; |
| 8 | + |
| 9 | +namespace NRedisStack.Tests |
| 10 | +{ |
| 11 | + public class TransactionsTests : AbstractNRedisStackTest, IDisposable |
| 12 | + { |
| 13 | + Mock<IDatabase> _mock = new Mock<IDatabase>(); |
| 14 | + private readonly string key = "TRX_TESTS"; |
| 15 | + public TransactionsTests(RedisFixture redisFixture) : base(redisFixture) { } |
| 16 | + |
| 17 | + public void Dispose() |
| 18 | + { |
| 19 | + redisFixture.Redis.GetDatabase().KeyDelete(key); |
| 20 | + } |
| 21 | + |
| 22 | + [Fact] |
| 23 | + public async Task TestJsonTransactions() |
| 24 | + { |
| 25 | + IDatabase db = redisFixture.Redis.GetDatabase(); |
| 26 | + db.Execute("FLUSHALL"); |
| 27 | + var transaction = new Transactions(db); |
| 28 | + string jsonPerson = JsonSerializer.Serialize(new Person { Name = "Shachar", Age = 23 }); |
| 29 | + var setResponse = transaction.Json.SetAsync(key, "$", jsonPerson); |
| 30 | + var getResponse = transaction.Json.GetAsync(key); |
| 31 | + |
| 32 | + transaction.Execute(); |
| 33 | + |
| 34 | + Assert.Equal("True", setResponse.Result.ToString()); |
| 35 | + Assert.Equal("{\"Name\":\"Shachar\",\"Age\":23}", getResponse.Result.ToString()); |
| 36 | + } |
| 37 | + |
| 38 | + [Fact] |
| 39 | + public async Task TestModulsTransaction() |
| 40 | + { |
| 41 | + IDatabase db = redisFixture.Redis.GetDatabase(); |
| 42 | + db.Execute("FLUSHALL"); |
| 43 | + var tran = new Transactions(db); |
| 44 | + |
| 45 | + tran.Bf.ReserveAsync("bf-key", 0.001, 100); |
| 46 | + tran.Bf.AddAsync("bf-key", "1"); |
| 47 | + tran.Cms.InitByDimAsync("cms-key", 100, 5); |
| 48 | + tran.Cf.ReserveAsync("cf-key", 100); |
| 49 | + tran.Graph.QueryAsync("graph-key", "CREATE ({name:'shachar',age:23})"); |
| 50 | + tran.Json.SetAsync("json-key", "$", "{}"); |
| 51 | + tran.Ft.CreateAsync("ft-key", new FTCreateParams(), new Schema().AddTextField("txt")); |
| 52 | + tran.Tdigest.CreateAsync("tdigest-key", 100); |
| 53 | + tran.Ts.CreateAsync("ts-key", 100); |
| 54 | + tran.TopK.ReserveAsync("topk-key", 100, 100, 100); |
| 55 | + |
| 56 | + Assert.False(db.KeyExists("bf-key")); |
| 57 | + Assert.False(db.KeyExists("cms-key")); |
| 58 | + Assert.False(db.KeyExists("cf-key")); |
| 59 | + Assert.False(db.KeyExists("graph-key")); |
| 60 | + Assert.False(db.KeyExists("json-key")); |
| 61 | + Assert.Equal(0, db.FT()._List().Length); |
| 62 | + Assert.False(db.KeyExists("tdigest-key")); |
| 63 | + Assert.False(db.KeyExists("ts-key")); |
| 64 | + Assert.False(db.KeyExists("topk-key")); |
| 65 | + |
| 66 | + tran.Execute(); |
| 67 | + |
| 68 | + Assert.True(db.KeyExists("bf-key")); |
| 69 | + Assert.True(db.KeyExists("cms-key")); |
| 70 | + Assert.True(db.KeyExists("cf-key")); |
| 71 | + Assert.True(db.KeyExists("graph-key")); |
| 72 | + Assert.True(db.KeyExists("json-key")); |
| 73 | + Assert.True(db.FT()._List().Length == 1); |
| 74 | + Assert.True(db.KeyExists("tdigest-key")); |
| 75 | + Assert.True(db.KeyExists("ts-key")); |
| 76 | + Assert.True(db.KeyExists("topk-key")); |
| 77 | + |
| 78 | + Assert.True(db.BF().Exists("bf-key", "1")); |
| 79 | + Assert.True(db.CMS().Info("cms-key").Width == 100); |
| 80 | + Assert.True(db.CF().Info("cf-key").Size > 0); |
| 81 | + Assert.True(db.GRAPH().List().Count > 0); |
| 82 | + Assert.False(db.JSON().Get("json-key").IsNull); |
| 83 | + Assert.NotNull(db.FT().Info("ft-key")); |
| 84 | + Assert.NotNull(db.TDIGEST().Info("tdigest-key")); |
| 85 | + Assert.NotNull(db.TS().Info("ts-key")); |
| 86 | + Assert.NotNull(db.TOPK().Info("topk-key")); |
| 87 | + } |
| 88 | + } |
| 89 | +} |
0 commit comments