Clone() public method

public Clone ( ) : ExplorerItemModel
return ExplorerItemModel
        // ReSharper disable MethodTooLong
        public void ExplorerItemModel_Clone_ReturnsNewObjectWithAllPropertiesSet()
        
        {
            //------------Setup for test--------------------------
            var connectControlSingleton = new Mock<IConnectControlSingleton>().Object;
            var explorerItemModel = new ExplorerItemModel(connectControlSingleton, new Mock<IStudioResourceRepository>().Object);
            var parentModel = new ExplorerItemModel(connectControlSingleton, new Mock<IStudioResourceRepository>().Object);
            explorerItemModel.DisplayName = "Test1";
            var childItemModel = new ExplorerItemModel(connectControlSingleton, new Mock<IStudioResourceRepository>().Object);
            explorerItemModel.Children.Add(childItemModel);
            explorerItemModel.EnvironmentId = Guid.NewGuid();
            explorerItemModel.Parent = parentModel;
            explorerItemModel.Permissions = Permissions.Contribute;
            explorerItemModel.ResourceId = Guid.NewGuid();
            explorerItemModel.ResourcePath = "TestResourcePath";
            explorerItemModel.ResourceType = ResourceType.PluginService;
            explorerItemModel.VersionInfo = new VersionInfo { VersionNumber = "2" , Reason = "Save", ResourceId =  Guid.NewGuid()};

            var properties = typeof(ExplorerItemModel).GetProperties();

            //------------Execute Test---------------------------
            var clonedItemModel = explorerItemModel.Clone(connectControlSingleton, new Mock<IStudioResourceRepository>().Object);
            //------------Assert Results-------------------------
            Assert.AreEqual(68, properties.Length);
            Assert.AreEqual(explorerItemModel.DisplayName, clonedItemModel.DisplayName);
            Assert.AreEqual(explorerItemModel.Children.Count, clonedItemModel.Children.Count);
            Assert.AreEqual(explorerItemModel.CanConnect, clonedItemModel.CanConnect);
            Assert.AreEqual(explorerItemModel.CanDelete, clonedItemModel.CanDelete);
            Assert.AreEqual(explorerItemModel.CanDebug, clonedItemModel.CanDebug);
            Assert.AreEqual(explorerItemModel.CanDeploy, clonedItemModel.CanDeploy);
            Assert.AreEqual(explorerItemModel.CanDisconnect, clonedItemModel.CanDisconnect);
            Assert.AreEqual(explorerItemModel.CanEdit, clonedItemModel.CanEdit);
            Assert.AreEqual(explorerItemModel.CanExecute, clonedItemModel.CanExecute);
            Assert.AreEqual(explorerItemModel.CanRemove, clonedItemModel.CanRemove);
            Assert.AreEqual(explorerItemModel.CanRename, clonedItemModel.CanRename);
            Assert.AreEqual(explorerItemModel.CanShowDependencies, clonedItemModel.CanShowDependencies);
            Assert.AreEqual(explorerItemModel.CanSelectDependencies, clonedItemModel.CanSelectDependencies);
            Assert.AreEqual(explorerItemModel.EnvironmentId, clonedItemModel.EnvironmentId);
            Assert.AreEqual(explorerItemModel.Parent, clonedItemModel.Parent);
            Assert.AreEqual(explorerItemModel.Permissions, clonedItemModel.Permissions);
            Assert.AreEqual(explorerItemModel.ResourceId, clonedItemModel.ResourceId);
            Assert.AreEqual(explorerItemModel.ResourcePath, clonedItemModel.ResourcePath);
            Assert.AreEqual(explorerItemModel.ResourceType, clonedItemModel.ResourceType);
            Assert.AreEqual(explorerItemModel.VersionInfo, clonedItemModel.VersionInfo);
        }