public void UpdateStatusesAndCommands(string date1, string date2, string strExpextedStatus1, string strExpextedStatus2)
        {
            var expextedStatus1 = Enum.Parse <ItemStatusEnum>(strExpextedStatus1);
            var expextedStatus2 = Enum.Parse <ItemStatusEnum>(strExpextedStatus2);

            var item1 = new SynchronizedItem(null, false, date1 == null ? null :
                                             new TestItem(DateTime.Parse(date1)));
            var item2 = new SynchronizedItem(null, false, date2 == null ? null :
                                             new TestItem(DateTime.Parse(date2)));

            var matcher = new SynchronizedItemMatcher();

            matcher.UpdateStatusesAndCommands(item1, item2);

            Assert.Equal(expextedStatus1, item1.Status.StatusEnum);
            Assert.Equal(expextedStatus2, item2.Status.StatusEnum);
            Assert.NotNull(item1.SyncCommand.CommandAction);
            Assert.NotNull(item2.SyncCommand.CommandAction);
        }
        public void UpdateStatusesAndCommandsForEquals()
        {
            var lastUpdate = DateTime.Now;

            var item1 = new SynchronizedItem(null, false, new TestItem(lastUpdate));
            var item2 = new SynchronizedItem(null, false, new TestItem(lastUpdate));

            // Чтобы потом проверить, что команд не стало.
            item1.SyncCommand.SetCommandAction(() => { return(Task.FromResult(true)); });
            item2.SyncCommand.SetCommandAction(() => { return(Task.FromResult(true)); });

            var matcher = new SynchronizedItemMatcher();

            matcher.UpdateStatusesAndCommands(item1, item2);

            Assert.Equal(ItemStatusEnum.Equally, item1.Status.StatusEnum);
            Assert.Equal(ItemStatusEnum.Equally, item2.Status.StatusEnum);
            Assert.Null(item1.SyncCommand.CommandAction);
            Assert.Null(item2.SyncCommand.CommandAction);
        }
        public void UpdateStatusesAndCommandsForLoadError(string loadError1, string loadError2)
        {
            var itemViewModel1 = new SynchronizedItem(null, false, new TestItem(DateTime.Now)
            {
                LastLoadError = loadError1
            });
            var itemViewModel2 = new SynchronizedItem(null, false, new TestItem(DateTime.Now)
            {
                LastLoadError = loadError2
            });

            // Чтобы потом проверить, что команд не стало.
            itemViewModel1.SyncCommand.SetCommandAction(() => { return(Task.FromResult(true)); });
            itemViewModel2.SyncCommand.SetCommandAction(() => { return(Task.FromResult(true)); });

            var matcher = new SynchronizedItemMatcher();

            matcher.UpdateStatusesAndCommands(itemViewModel1, itemViewModel2);

            Assert.Equal(ItemStatusEnum.LoadError, itemViewModel1.Status.StatusEnum);
            Assert.Equal(ItemStatusEnum.LoadError, itemViewModel2.Status.StatusEnum);
            Assert.Null(itemViewModel1.SyncCommand.CommandAction);
            Assert.Null(itemViewModel2.SyncCommand.CommandAction);
        }