public void AddRangeToSet_AddToExistingSetData() { UseConnection(repository => { var set1 = new RavenSet { Id = repository.GetId(typeof(RavenSet), "Set1"), Scores = new Dictionary <string, double> { { "value1", 0.0 }, { "value2", 0.0 } } }; var set2 = new RavenSet { Id = repository.GetId(typeof(RavenSet), "Set2"), Scores = new Dictionary <string, double> { { "value2", 0.0 } } }; using (var session = repository.OpenSession()) { session.Store(set1); session.Advanced.AddExpire(set1, DateTime.UtcNow); session.Store(set2); session.Advanced.AddExpire(set2, DateTime.UtcNow); session.SaveChanges(); } var values = new[] { "test1", "test2", "test3" }; Commit(repository, x => x.AddRangeToSet("Set1", values)); using (var session = repository.OpenSession()) { var testSet1 = GetTestSet(session, set1.Id); Assert.NotNull(testSet1); Assert.Equal(5, testSet1.Scores.Count); var testSet2 = GetTestSet(session, set2.Id); Assert.NotNull(testSet2); Assert.Equal(1, testSet2.Scores.Count); } }); }
public void AddToSet_WithScore_AddsARecordWithScore_WhenBothKeyAndValueAreNotExist() { UseConnection(repository => { Commit(repository, x => x.AddToSet("my-key", "my-value", 3.2)); using (var session = repository.OpenSession()) { RavenSet record = session.Query <RavenSet>().Single(); var id = repository.GetId(typeof(RavenSet), "my-key"); Assert.Equal(id, record.Id); Assert.Equal("my-value", record.Scores.Keys.Single()); Assert.Equal(3.2, record.Scores["my-value"], 3); } }); }
public void AddToSet_AddsARecord_IfThereIsNo_SuchKeyAndValue() { UseConnection(repository => { Commit(repository, x => x.AddToSet("my-key", "my-value")); using (var session = repository.OpenSession()) { RavenSet record = session.Query <RavenSet>().Single(); var id = repository.GetId(typeof(RavenSet), "my-key"); Assert.Equal(id, record.Id); Assert.Equal("my-value", record.Scores.Keys.Single()); Assert.Equal(0.0, record.Scores["my-value"], 2); } }); }
public void PersistSet_ClearsTheSetExpirationData() { UseConnection(repository => { var set1 = new RavenSet { Id = repository.GetId(typeof(RavenSet), "Set1"), Scores = new Dictionary <string, double> { { "value1", 0.0 } } }; var set2 = new RavenSet { Id = repository.GetId(typeof(RavenSet), "Set2"), Scores = new Dictionary <string, double> { { "value2", 0.0 } } }; using (var session = repository.OpenSession()) { session.Store(set1); session.Advanced.AddExpire(set1, DateTime.UtcNow); session.Store(set2); session.Advanced.AddExpire(set2, DateTime.UtcNow); session.SaveChanges(); } Commit(repository, x => x.PersistSet("Set1")); using (var session = repository.OpenSession()) { var testSet1 = GetTestSet(session, set1.Id); var expireAt = session.Advanced.GetExpire(testSet1); Assert.Null(expireAt); var testSet2 = GetTestSet(session, set2.Id); expireAt = session.Advanced.GetExpire(testSet2); Assert.NotNull(expireAt); } }); }
public void AddToSet_WithScore_UpdatesAScore_WhenBothKeyAndValueAreExist() { UseConnection(repository => { Commit(repository, x => { x.AddToSet("my-key", "my-value"); x.AddToSet("my-key", "my-value", 3.2); }); using (var session = repository.OpenSession()) { RavenSet record = session.Query <RavenSet>().Single(); Assert.Equal(3.2, record.Scores["my-value"], 3); } }); }
public void ExpireSet_SetsSetExpirationData() { UseConnection(repository => { var set1 = new RavenSet { Id = repository.GetId(typeof(RavenSet), "Set1"), Scores = new Dictionary <string, double> { { "value1", 0.0 } } }; var set2 = new RavenSet { Id = repository.GetId(typeof(RavenSet), "Set2"), Scores = new Dictionary <string, double> { { "value2", 0.0 } } }; using (var session = repository.OpenSession()) { session.Store(set1); session.Store(set2); session.SaveChanges(); } Commit(repository, x => x.ExpireSet("Set1", TimeSpan.FromDays(1))); using (var session = repository.OpenSession()) { var testSet1 = GetTestSet(session, set1.Id); var expireAt = session.Advanced.GetExpire(testSet1); Assert.True(DateTime.UtcNow.AddMinutes(-1) < expireAt && expireAt <= DateTime.UtcNow.AddDays(1)); var testSet2 = GetTestSet(session, set2.Id); Assert.NotNull(testSet2); expireAt = session.Advanced.GetExpire(testSet2); Assert.Null(expireAt); } }); }
public void AddToSet_DoesNotAddARecord_WhenBothKeyAndValueAreExist() { UseConnection(repository => { Commit(repository, x => { x.AddToSet("my-key", "my-value"); x.AddToSet("my-key", "my-value"); }); using (var session = repository.OpenSession()) { RavenSet record = session.Query <RavenSet>().Single(); var recordCount = record.Scores.Count; Assert.Equal(1, recordCount); } }); }
public void AddToSet_AddsARecord_WhenKeyIsExists_ButValuesAreDifferent() { UseConnection(repository => { Commit(repository, x => { x.AddToSet("my-key", "my-value"); x.AddToSet("my-key", "another-value"); }); using (var session = repository.OpenSession()) { RavenSet record = session.Query <RavenSet>().Single(); var recordCount = record.Scores.Count; Assert.Equal(2, recordCount); } }); }
public override void AddToSet(string key, string value, double score) { using (var repository = new Repository()) { var set = repository.Session.Query <RavenSet>().FirstOrDefault(t => t.Key == key && t.Value == value); if (set == null) { set = new RavenSet { Id = Guid.NewGuid().ToString(), Key = key, Value = value }; } set.Score = score; repository.Save(set); } }