public void GetOfflineChanges_ItemsNoItemsInTheCurrentRepository()
 {
     ChangePublisher changePublisher = new ChangePublisher();
     SynchItem newTree =
         new SynchItem();
     var listOfChanges = changePublisher.GetOfflineChanges(newTree);
     Assert.IsNotNull(listOfChanges);
     Assert.AreEqual(listOfChanges.Count,listOfChanges.Count(c=>c.Value==OperationType.Delete));
     Assert.AreEqual(11,listOfChanges.Count);
 }
 public void GetOfflineChanges_ItemsToBeDeleted()
 {
     ChangePublisher changePublisher = new ChangePublisher();
     SynchItem newTree =
         new SynchItem{SynchItemData = new SynchItemData{Name="root",Identifier="root"},Items=new List<SynchItem>{
             new SynchItem{SynchItemData=new SynchItemData{Name="100",Identifier=@"root\100"},Items=new List<SynchItem>{
                 new SynchItem{SynchItemData=new SynchItemData{Name="110",Identifier=@"root\100\110"},Items=new List<SynchItem>{
                     new SynchItem{SynchItemData=new SynchItemData{Name="112",Identifier=@"root\100\110\112"}}}},
                 new SynchItem{SynchItemData=new SynchItemData{Name="120",Identifier=@"root\100\120"},Items=new List<SynchItem>{
                     new SynchItem{SynchItemData=new SynchItemData{Name="121",Identifier=@"root\100\120\121"}},
                     new SynchItem{SynchItemData=new SynchItemData{Name="122",Identifier=@"root\100\120\122"}},
                     new SynchItem{SynchItemData=new SynchItemData{Name="123",Identifier=@"root\100\120\123"}}}}}},
             new SynchItem{SynchItemData=new SynchItemData{Name="200",Identifier=@"root\200"}},
             new SynchItem{SynchItemData=new SynchItemData{Name="300",Identifier=@"root\300"},Items=new List<SynchItem>{
                 new SynchItem{SynchItemData=new SynchItemData{Name="330",Identifier=@"root\300\330"}, Items=new List<SynchItem>{
                     new SynchItem{SynchItemData=new SynchItemData{Name="331",Identifier=@"root\300\330\331"},Items=new List<SynchItem>{
                         new SynchItem{SynchItemData=new SynchItemData{Name="331",Identifier=@"root\300\330\331\331"}}}},
                     new SynchItem{SynchItemData=new SynchItemData{Name="332", Identifier=@"root\300\330\332"}, Items= new List<SynchItem>{
                         new SynchItem{SynchItemData=new SynchItemData{Name="332", Identifier=@"root\300\330\332\332"}}}}}}}}}};
     var listOfChanges = changePublisher.GetOfflineChanges(newTree);
     Assert.IsNotNull(listOfChanges);
     Assert.AreEqual(listOfChanges.Count, listOfChanges.Count(c => c.Value == OperationType.Delete));
     Assert.AreEqual(4, listOfChanges.Count);
 }
        public void GetOfflineChanges_WrongBackup()
        {
            ChangePublisher changePublisher = new ChangePublisher();
            SynchItem newTree =
                new SynchItem
                {
                    SynchItemData = new SynchItemData { Name = "newroot", Identifier = "newroot" },
                    Items = new List<SynchItem>{
                    new SynchItem{SynchItemData=new SynchItemData{Name="100",Identifier=@"newroot\100"},Items=new List<SynchItem>{
                        new SynchItem{SynchItemData=new SynchItemData{Name="110",Identifier=@"newroot\100\110"},Items=new List<SynchItem>{
                            new SynchItem{SynchItemData=new SynchItemData{Name="111",Identifier=@"newroot\100\110\111",Size=2}},
                            new SynchItem{SynchItemData=new SynchItemData{Name="112",Identifier=@"newroot\100\110\112"}}}},
                        new SynchItem{SynchItemData=new SynchItemData{Name="120",Identifier=@"newroot\100\120"},Items=new List<SynchItem>{
                            new SynchItem{SynchItemData=new SynchItemData{Name="123",Identifier=@"newroot\100\120\123"}}}}}},
                    new SynchItem{SynchItemData=new SynchItemData{Name="200",Identifier=@"newroot\200"}},
                    new SynchItem{SynchItemData=new SynchItemData{Name="300",Identifier=@"newroot\300"},Items=new List<SynchItem>{
                        new SynchItem{SynchItemData=new SynchItemData{Name="310",Identifier=@"newroot\300\310",Size=0}},
                        new SynchItem{SynchItemData=new SynchItemData{Name="320",Identifier=@"newroot\300\320"}},
                        new SynchItem{SynchItemData=new SynchItemData{Name="330",Identifier=@"newroot\300\330"}, Items=new List<SynchItem>{
                            new SynchItem{SynchItemData=new SynchItemData{Name="331",Identifier=@"newroot\300\330\331"},Items=new List<SynchItem>{
                                new SynchItem{SynchItemData=new SynchItemData{Name="331",Identifier=@"newroot\300\330\331\331"}}}},
                            new SynchItem{SynchItemData=new SynchItemData{Name="332", Identifier=@"newroot\300\330\332"}, Items= new List<SynchItem>{
                                new SynchItem{SynchItemData=new SynchItemData{Name="332", Identifier=@"newroot\300\330\332\332"}},
                                new SynchItem{SynchItemData=new SynchItemData{Name="332", Identifier=@"newroot\300\330\332\334"}},
                                new SynchItem{SynchItemData=new SynchItemData{Name="332", Identifier=@"newroot\300\330\332\335"}},
                                new SynchItem{SynchItemData=new SynchItemData{Name="333", Identifier=@"newroot\300\330\332\333",Size=34}}}}}}}}}
                };

            changePublisher.GetOfflineChanges(newTree);
        }
 public void GetOfflineChanges_NoCurrentRepositorySent()
 {
     ChangePublisher changePublisher = new ChangePublisher();
     SynchItem newTree =null;
     changePublisher.GetOfflineChanges(newTree);
 }
        public void GetOfflineChanges_NoBackupFile()
        {
            if(File.Exists("backup.xml"))
            {
                File.Copy("backup.xml","backup1.xml",true);
                File.Delete("backup.xml");
            }
            try
            {
                ChangePublisher changePublisher = new ChangePublisher();
                SynchItem newTree =
                    new SynchItem
                    {
                        SynchItemData = new SynchItemData { Name = "root", Identifier = "root" },
                        Items = new List<SynchItem>{
                    new SynchItem{SynchItemData=new SynchItemData{Name="100",Identifier=@"root\100"},Items=new List<SynchItem>{
                        new SynchItem{SynchItemData=new SynchItemData{Name="110",Identifier=@"root\100\110"},Items=new List<SynchItem>{
                            new SynchItem{SynchItemData=new SynchItemData{Name="111",Identifier=@"root\100\110\111",Size=2}},
                            new SynchItem{SynchItemData=new SynchItemData{Name="112",Identifier=@"root\100\110\112"}}}},
                        new SynchItem{SynchItemData=new SynchItemData{Name="120",Identifier=@"root\100\120"},Items=new List<SynchItem>{
                            new SynchItem{SynchItemData=new SynchItemData{Name="123",Identifier=@"root\100\120\123"}}}}}},
                    new SynchItem{SynchItemData=new SynchItemData{Name="200",Identifier=@"root\200"}},
                    new SynchItem{SynchItemData=new SynchItemData{Name="300",Identifier=@"root\300"},Items=new List<SynchItem>{
                        new SynchItem{SynchItemData=new SynchItemData{Name="310",Identifier=@"root\300\310",Size=0}},
                        new SynchItem{SynchItemData=new SynchItemData{Name="320",Identifier=@"root\300\320"}},
                        new SynchItem{SynchItemData=new SynchItemData{Name="330",Identifier=@"root\300\330"}, Items=new List<SynchItem>{
                            new SynchItem{SynchItemData=new SynchItemData{Name="331",Identifier=@"root\300\330\331"},Items=new List<SynchItem>{
                                new SynchItem{SynchItemData=new SynchItemData{Name="331",Identifier=@"root\300\330\331\331"}}}},
                            new SynchItem{SynchItemData=new SynchItemData{Name="332", Identifier=@"root\300\330\332"}, Items= new List<SynchItem>{
                                new SynchItem{SynchItemData=new SynchItemData{Name="332", Identifier=@"root\300\330\332\332"}},
                                new SynchItem{SynchItemData=new SynchItemData{Name="332", Identifier=@"root\300\330\332\334"}},
                                new SynchItem{SynchItemData=new SynchItemData{Name="332", Identifier=@"root\300\330\332\335"}},
                                new SynchItem{SynchItemData=new SynchItemData{Name="333", Identifier=@"root\300\330\332\333",Size=34}}}}}}}}}
                    };

                var listOfChanges = changePublisher.GetOfflineChanges(newTree);
                Assert.IsEmpty(listOfChanges);
            }
            catch (Exception)
            {

                throw;
            }
            finally
            {
                if (File.Exists("backup1.xml"))
                {
                    File.Copy("backup1.xml", "backup.xml", true);
                    File.Delete("backup1.xml");
                }

            }
        }
        public void GetOfflineChanges_MixtureOfItems()
        {
            ChangePublisher changePublisher = new ChangePublisher();
            SynchItem newTree =
                new SynchItem
                {
                    SynchItemData = new SynchItemData { Name = "root", Identifier = "root" },
                    Items = new List<SynchItem>{
                    new SynchItem{SynchItemData=new SynchItemData{Name="100",Identifier=@"root\100"},Items=new List<SynchItem>{
                        new SynchItem{SynchItemData=new SynchItemData{Name="110",Identifier=@"root\100\110"},Items=new List<SynchItem>{
                            new SynchItem{SynchItemData=new SynchItemData{Name="111",Identifier=@"root\100\110\111",Size=2}},
                            new SynchItem{SynchItemData=new SynchItemData{Name="112",Identifier=@"root\100\110\112"}}}},
                        new SynchItem{SynchItemData=new SynchItemData{Name="120",Identifier=@"root\100\120"},Items=new List<SynchItem>{
                            new SynchItem{SynchItemData=new SynchItemData{Name="123",Identifier=@"root\100\120\123"}}}}}},
                    new SynchItem{SynchItemData=new SynchItemData{Name="200",Identifier=@"root\200"}},
                    new SynchItem{SynchItemData=new SynchItemData{Name="300",Identifier=@"root\300"},Items=new List<SynchItem>{
                        new SynchItem{SynchItemData=new SynchItemData{Name="310",Identifier=@"root\300\310",Size=0}},
                        new SynchItem{SynchItemData=new SynchItemData{Name="320",Identifier=@"root\300\320"}},
                        new SynchItem{SynchItemData=new SynchItemData{Name="330",Identifier=@"root\300\330"}, Items=new List<SynchItem>{
                            new SynchItem{SynchItemData=new SynchItemData{Name="331",Identifier=@"root\300\330\331"},Items=new List<SynchItem>{
                                new SynchItem{SynchItemData=new SynchItemData{Name="331",Identifier=@"root\300\330\331\331"}}}},
                            new SynchItem{SynchItemData=new SynchItemData{Name="332", Identifier=@"root\300\330\332"}, Items= new List<SynchItem>{
                                new SynchItem{SynchItemData=new SynchItemData{Name="332", Identifier=@"root\300\330\332\332"}},
                                new SynchItem{SynchItemData=new SynchItemData{Name="332", Identifier=@"root\300\330\332\334"}},
                                new SynchItem{SynchItemData=new SynchItemData{Name="332", Identifier=@"root\300\330\332\335"}},
                                new SynchItem{SynchItemData=new SynchItemData{Name="333", Identifier=@"root\300\330\332\333",Size=34}}}}}}}}}
                };

            var listOfChanges = changePublisher.GetOfflineChanges(newTree);
            Assert.IsNotNull(listOfChanges);
            Assert.AreEqual(3, listOfChanges.Count(c => c.Value == OperationType.Update));
            Assert.AreEqual(2, listOfChanges.Count(c => c.Value == OperationType.Insert));
            Assert.AreEqual(2, listOfChanges.Count(c => c.Value == OperationType.Delete));
            Assert.AreEqual(7, listOfChanges.Count);
        }