Esempio n. 1
0
		protected bool Equals(DocumentsChanges other)
		{
			return string.Equals(FieldOldValue, other.FieldOldValue)
			       && string.Equals(FieldNewValue, other.FieldNewValue)
			       && string.Equals(FieldOldType, other.FieldOldType)
                   && string.Equals(FieldName, other.FieldName)
                   && string.Equals(FieldNewType, other.FieldNewType)
                   && Change ==  other.Change;
		}
Esempio n. 2
0
 protected bool Equals(DocumentsChanges other)
 {
     return(string.Equals(FieldOldValue, other.FieldOldValue) &&
            string.Equals(FieldNewValue, other.FieldNewValue) &&
            string.Equals(FieldOldType, other.FieldOldType) &&
            string.Equals(FieldName, other.FieldName) &&
            string.Equals(FieldNewType, other.FieldNewType) &&
            Change == other.Change);
 }
Esempio n. 3
0
        public void CanDetectManyObjectChanges() 
        {
            using (var store = NewDocumentStore())
            {
                using (var session = store.OpenSession())
                {
                    session.Store(new UserData
                    {
                        Id = 123,
                        Name = "user1",
                        Salary = 12.5,
                        Date = DateTime.Now,
                        Exam1Marks = new[] { 88, 99, 77 }
                    }, "UserDatas/1");
                    session.Store(new UserData
                    {
                        Id = 1234,
                        Name = "user2",
                        Salary = 12.51,
                        Date = new DateTime(2014, 1, 1)
                    }, "UserDatas/2");
                    session.Store(new UserData
                    {
                        Id = 1235,
                        Name = "user3",
                        Salary = 12.45,
                        Date = new DateTime(2014, 1, 2)
                    }, "UserDatas/3");

                    IDictionary<string, DocumentsChanges[]> resChanges1 = session.Advanced.WhatChanged();
                    int supposedChangesNumber = 3;
                    Assert.Equal(supposedChangesNumber, resChanges1.Count);
                    Assert.True(resChanges1.ContainsKey("UserDatas/1"));
                    Assert.True(resChanges1.ContainsKey("UserDatas/2"));
                    Assert.True(resChanges1.ContainsKey("UserDatas/3"));
                    session.SaveChanges();
                    IDictionary<string, DocumentsChanges[]> resChanges2 = session.Advanced.WhatChanged();
                    supposedChangesNumber = 0;
                    Assert.Equal(supposedChangesNumber, resChanges2.Count);
                }

                using (IDocumentSession session = store.OpenSession())
                {
                    var userdata2 = session.Load<UserData>("UserDatas/2");
                    userdata2.Salary = 556;

                    var userdata1 = session.Load<UserData>("UserDatas/1");
                    userdata1.Exam1Marks[0] = 56;
                    userdata1.Salary = 54.7;

                    IDictionary<string, DocumentsChanges[]> changes3 = session.Advanced.WhatChanged();

                    int ExpectedChangesCount = 2;
                    Assert.Equal(ExpectedChangesCount, changes3.Count);
                    Assert.True(changes3.ContainsKey("UserDatas/1"));
                    Assert.True(changes3.ContainsKey("UserDatas/2"));
                    var supposedChanges = new DocumentsChanges
                    {
                        Change  = DocumentsChanges.ChangeType.FieldChanged,
                        FieldName = "Salary",
                        FieldNewType = "Float",
                        FieldNewValue = "556",
                        FieldOldType = "Float",
                        FieldOldValue = "12.51"
                    };
                    DocumentsChanges[] data2 = { };
                    if (changes3.TryGetValue("UserDatas/2", out data2))
                    {
                        Assert.Equal(data2.Length, 1);
                        Assert.Equal(data2[0], supposedChanges);
                    }

                    DocumentsChanges[] data1 = { };
                    if (changes3.TryGetValue("UserDatas/1", out data1))
                    {
                        Assert.Equal(data1.Length, ExpectedChangesCount); //UserDatas/1 was changed twice
                    }

                    session.SaveChanges();
                    userdata1 = session.Load<UserData>("UserDatas/1");
                    int[] newMark = { 67, 65 };
                    List<int> list = userdata1.Exam1Marks.ToList();
                    list.AddRange(newMark);
                    userdata1.Exam1Marks = list.ToArray();
                    IDictionary<string, DocumentsChanges[]> changes4 = session.Advanced.WhatChanged();
                    DocumentsChanges[] data4 = { };
                    if (changes4.TryGetValue("UserDatas/1", out data4))
                    {
                        Assert.Equal(data4.Length, 2);
                    }


                    session.SaveChanges();


                    userdata1 = session.Load<UserData>("UserDatas/1");
                    int numToRemove = 99;
                    int numIndex = Array.IndexOf(userdata1.Exam1Marks, numToRemove);
                    userdata1.Exam1Marks = userdata1.Exam1Marks.Where((val, idx) => idx != numIndex).ToArray();
                    numToRemove = 77;
                    numIndex = Array.IndexOf(userdata1.Exam1Marks, numToRemove);
                    userdata1.Exam1Marks = userdata1.Exam1Marks.Where((val, idx) => idx != numIndex).ToArray();

                    var userdata = session.Load<UserData>("UserDatas/3");


                    session.Delete(userdata);
                    session.Store(new UserData
                    {
                        Id = 2235,
                        Name = "user4",
                        Salary = 32.45,
                        Date = new DateTime(2014, 2, 2)
                    }, "UserDatas/4");

                    ExpectedChangesCount = 3;
                    IDictionary<string, DocumentsChanges[]> changes7 = session.Advanced.WhatChanged();
                    Assert.Equal(ExpectedChangesCount, changes7.Count);
                    Assert.True(changes7.ContainsKey("UserDatas/1"));
                    Assert.True(changes7.ContainsKey("UserDatas/3"));
                    Assert.True(changes7.ContainsKey("UserDatas/4"));

                    session.SaveChanges();
                }
            }
        }
Esempio n. 4
0
        public void CanDetectObjectUpdateChanges() 
        {
            using (var store = NewDocumentStore())
            {
                using (var session = store.OpenSession())
                {
                    session.Store(new UserData
                    {
                        Id = 123,
                        Name = "user1",
                        Salary = 12.5,
                        Date = DateTime.Now,
                        Exam1Marks = new[] { 88, 99, 77 },
                        Exam2Marks = new[] { 77, 78, 79 }
                    }, "UserDatas/1");
                    session.Store(new UserData
                    {
                        Id = 1234,
                        Name = "user2",
                        Salary = 12.51,
                        Date = new DateTime(2014, 1, 1)
                    }, "UserDatas/2");
                    session.Store(new UserData
                    {
                        Id = 1235,
                        Name = "user3",
                        Salary = 12.45,
                        Date = new DateTime(2014, 1, 2)
                    }, "UserDatas/3");

                    session.SaveChanges();
                }

                using (var session = store.OpenSession())
                {
                    var userdata2 = session.Load<UserData>("UserDatas/2");
                    userdata2.Salary = 556;

                    var userdata1 = session.Load<UserData>("UserDatas/1");
                    userdata1.Exam1Marks[0] = 56;
                    userdata1.Exam2Marks[0] = 88;
                    userdata1.Salary = 54.7;

                    IDictionary<string, DocumentsChanges[]> changes3 = session.Advanced.WhatChanged();

                    int supposedChangesNumber = 2;
                    Assert.Equal(supposedChangesNumber, changes3.Count);
                    Assert.True(changes3.ContainsKey("UserDatas/1"));
                    Assert.True(changes3.ContainsKey("UserDatas/2"));
                    var supposedChanges = new DocumentsChanges
                    {
                        Change = DocumentsChanges.ChangeType.FieldChanged,
                        FieldName = "Salary",
                        FieldNewType = "Float",
                        FieldNewValue = "556",
                        FieldOldType = "Float",
                        FieldOldValue = "12.51"
                    };
                    DocumentsChanges[] data2;
                    if (changes3.TryGetValue("UserDatas/2", out data2))
                    {
                        Assert.Equal(data2.Length, 1);
                        Assert.Equal(data2[0], supposedChanges);
                    }

                    DocumentsChanges[] data1;
                    if (changes3.TryGetValue("UserDatas/1", out data1))
                    {
                        Assert.Equal(data1.Length, 3);
                    }

                    session.SaveChanges();
  

                    }
            }
        }