public void ImportantMethodToTest(Person person)
 {
     if (..important conditionsTested...)
     {
         _personWriter.Update(person);
     }
 }
Exemplo n.º 2
0
        public void Handle(QueueSpy.Messages.BrokerEvent brokerEvent)
        {
            var queueDeleted = (Messages.QueueDeleted)brokerEvent;

            dataWriter.Update <Queue>(queueDeleted.QueueId, x => {
                x.Deleted   = queueDeleted.DateTimeUTC;
                x.IsCurrent = false;
            });
        }
Exemplo n.º 3
0
        public void Handle(QueueSpy.Messages.ChangePassword command)
        {
            var hash = passwordService.Hash(command.NewPassword);

            dataWriter.Update <User> (command.UserId, x => {
                x.PasswordHash = hash.PasswordHash;
                x.Salt         = hash.Salt;
            });
        }
Exemplo n.º 4
0
        public void Handle(QueueSpy.Messages.BrokerEvent brokerEvent)
        {
            var connectionLost = (Messages.ConnectionLost)brokerEvent;

            dataWriter.Update <Executor.Connection> (connectionLost.ConnectionId, x => {
                x.IsConnected  = false;
                x.Disconnected = DateTime.UtcNow;
            });
        }
Exemplo n.º 5
0
        public void Should_be_able_to_update_a_user()
        {
            var user = new User {
                Email        = "*****@*****.**",
                PasswordHash = "biff",
                Salt         = "foo"
            };

            var id = dataWriter.Insert(user);

            dataWriter.Update <User> (id, x => {
                x.PasswordHash = "updated_pw_hash";
                x.Salt         = "updated_salt";
            });

            dataWriter.Delete <User> (id);
        }
Exemplo n.º 6
0
 public void Handle(QueueSpy.Messages.BrokerEvent command)
 {
     dataWriter.Update <Executor.Broker> (command.BrokerId, x => {
         x.ContactOK = false;
     });
 }
Exemplo n.º 7
0
        public void Handle(QueueSpy.Messages.BrokerEvent brokerEvent)
        {
            var vhostDeleted = (Messages.VHostDeleted)brokerEvent;

            dataWriter.Update <Executor.VHost> (vhostDeleted.VHostId, x => x.Active = false);
        }
Exemplo n.º 8
0
        public void Handle(QueueSpy.Messages.BrokerEvent brokerEvent)
        {
            var consumerCancelled = (Messages.ConsumerCancelled)brokerEvent;

            dataWriter.Update <Executor.Consumer> (consumerCancelled.ConsumerId, x => x.IsConsuming = false);
        }
Exemplo n.º 9
0
        public void GenerateDifference(IDataReader source, IDataReader target, Table table, IDataWriter dataWriter, JobSettings settings)
        {
            if (source.FieldCount != target.FieldCount)
            {
                throw new MismatchedSchemaException($"Schema difference detected while importing {table.BasicName}. Please ensure the schemas match before syncing");
            }
            List <object>         sourceRecord    = ReadRecord(source);
            List <object>         targetRecord    = ReadRecord(target);
            List <object>         targetsToDelete = new List <object>();
            List <List <object> > recordsToInsert = new List <List <object> >();
            List <List <object> > recordsToUpdate = new List <List <object> >();

            while (true)
            {
                int?comparison;
                if (sourceRecord == null && targetRecord == null)
                {
                    break;
                }
                else if (sourceRecord == null)
                {
                    comparison = 1;
                }
                else if (targetRecord == null)
                {
                    comparison = -1;
                }
                else
                {
                    comparison = CompareObjects(source[table.PrimaryKey], target[table.PrimaryKey]);
                }

                if (sourceRecord != null)
                {
                    dataWriter.Entry(SerializeRecordAsDictionary(sourceRecord, table));
                }

                if (comparison == null)
                {
                    throw new NotSupportedKeyException($"Could not compare key {table.PrimaryKey} of {table.Name}. DbSync does not support comparison of keys of it's type");
                }
                bool consumeTarget = false;
                bool consumeSource = false;
                //record exists in both
                if (comparison == 0)
                {
                    var identical = true;
                    for (int i = 0; i < sourceRecord.Count; i++)
                    {
                        if (!table.Fields[i].IsAuditingColumn)
                        {
                            if (CompareObjects(sourceRecord[i], targetRecord[i]) != 0)
                            {
                                identical = false;
                            }
                        }
                    }
                    if (!identical)
                    {
                        dataWriter.Update(SerializeRecordAsDictionary(sourceRecord, table));
                    }
                    consumeSource = true;
                    consumeTarget = true;
                }
                //target contains a record not in source
                else if (comparison == 1)
                {
                    if ((table.MergeStrategy ?? settings.MergeStrategy) != Merge.Strategy.Override)
                    {
                        dataWriter.Delete(target[table.PrimaryKey]);
                    }
                    consumeTarget = true;
                }
                //source contains a record not in target
                else if (comparison == -1)
                {
                    dataWriter.Add(SerializeRecordAsDictionary(sourceRecord, table));
                    consumeSource = true;
                }
                if (consumeSource)
                {
                    sourceRecord = ReadRecord(source);
                }
                if (consumeTarget)
                {
                    targetRecord = ReadRecord(target);
                }
            }
        }
Exemplo n.º 10
0
 public void Handle(QueueSpy.Messages.CancelAccount command)
 {
     dataWriter.Update <User> (command.UserId, x => x.Active = false);
 }