public void UniqueIndexExceptionIsRecognized()
        {
            // --- Arrange
            var child1 = new ChildRecord
            {
                Name  = "Child1",
                Value = 1
            };
            var child2 = new ChildRecord
            {
                Name  = "Child2",
                Value = 1
            };

            // --- Act
            UniqueIndexViolationException exCaught = null;

            try
            {
                using (var ctx = DataAccessFactory.CreateContext <ITestDataOperations>())
                {
                    ctx.InsertChild(child1);
                    ctx.InsertChild(child2);
                }
            }
            catch (UniqueIndexViolationException ex)
            {
                exCaught = ex;
            }

            // --- Assert
            // ReSharper disable once PossibleNullReferenceException
            exCaught.TableName.ShouldEqual("dbo.Child");
            exCaught.IndexName.ShouldEqual("IX_Child_Value");
        }
 public void UniqueIndexViolationException_Test()
 {
     var error = new UniqueIndexViolationError { IndexName = "Name", ViolationMessage = "ViolationMessage", IndexFields = new MobileList<string> { "s", "s1" } };
     var exception = new UniqueIndexViolationException(new MobileObservableCollection<UniqueIndexViolationError> { error });
     var uniqueIndexError = JsonConvert.DeserializeObject<MobileList<UniqueIndexViolationError>>(exception.Message, new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.All });
     var element = uniqueIndexError.FirstOrDefault();
     Assert.IsFalse(string.IsNullOrWhiteSpace(exception.Message));
     Assert.AreEqual(error.IndexName, element.IndexName);
     Assert.AreEqual(error.ViolationMessage, element.ViolationMessage);
     Assert.AreEqual(error.IndexFields.Count, element.IndexFields.Count);
 }