public void PropertyChanged_Name_SameValue()
        {
            // Arrange
            var propertyChangedInvoked = false;
            var vm = new SchemaInformationViewModel
            {
                Name = "dbo"
            };

            vm.PropertyChanged += (sender, args) => propertyChangedInvoked = true;

            // Act
            vm.Name = "dbo";

            // Assert
            Assert.IsFalse(propertyChangedInvoked);
        }
        public void PropertyChanged_IsSelected_DifferentValue()
        {
            // Arrange
            var propertyChangedInvoked = false;
            var vm = new SchemaInformationViewModel
            {
                Name = "dbo"
            };

            vm.PropertyChanged += (sender, args) => propertyChangedInvoked = true;

            // Act
            vm.SetSelectedCommand.Execute(true);

            // Assert
            Assert.IsTrue(propertyChangedInvoked);
        }
        public void PropertyChanged_IsSelected_PartialObjectSelection()
        {
            // Arrange
            var vm = new SchemaInformationViewModel
            {
                Name = "dbo"
            };

            vm.Objects.Add(CreateTable("Table1"));
            vm.Objects.Add(CreateTable("Table2"));
            vm.Objects.Add(CreateTable("Table3"));

            // Act
            vm.Objects[0].SetSelectedCommand.Execute(true);

            // Assert
            Assert.IsNull(vm.IsSelected);
        }
        public void PropertyChanged_IsSelected_ObjectSelection([Values(true, false)] bool isSelected)
        {
            // Arrange
            var vm = new SchemaInformationViewModel
            {
                Name = "dbo"
            };

            vm.Objects.Add(CreateTable("Table1"));
            vm.Objects.Add(CreateTable("Table2"));
            vm.Objects.Add(CreateTable("Table3"));

            // Act
            vm.SetSelectedCommand.Execute(isSelected);

            // Assert
            Assert.IsTrue(vm.Objects.All(c => c.IsSelected == isSelected));
        }
        private static ISchemaInformationViewModel[] GetDatabaseObjects()
        {
            TableInformationViewModel CreateTable(string tableSchema, string name, bool selected)
            {
                var messenger = new Mock <IMessenger>();

                messenger.SetupAllProperties();
                var result = new TableInformationViewModel(messenger.Object);

                result.Name   = name;
                result.Schema = tableSchema;
                if (selected)
                {
                    result.SetSelectedCommand.Execute(true);
                }
                return(result);
            }

            ColumnInformationViewModel CreateColumn(string name, bool isPrimaryKey, bool selected)
            {
                var messenger = new Mock <IMessenger>();

                messenger.SetupAllProperties();
                var result = new ColumnInformationViewModel(messenger.Object);

                result.Name         = name;
                result.IsPrimaryKey = isPrimaryKey;
                if (selected)
                {
                    result.SetSelectedCommand.Execute(true);
                }
                return(result);
            }

            var schema0 = new SchemaInformationViewModel {
                Name = "dbo"
            };

            schema0.Objects.Add(CreateTable("dbo", "Atlas", false));
            schema0.Objects[0].Columns.Add(CreateColumn("id", true, false));
            schema0.Objects[0].Columns.Add(CreateColumn("column1", false, false));
            schema0.Objects[0].Columns.Add(CreateColumn("column2", false, false));

            schema0.Objects.Add(CreateTable("dbo", "__RefactorLog", true));
            schema0.Objects[1].Columns.Add(CreateColumn("id", true, false));
            schema0.Objects[1].Columns.Add(CreateColumn("column1", false, false));
            schema0.Objects[1].Columns.Add(CreateColumn("column2", false, false));

            schema0.Objects.Add(CreateTable("dbo", "sysdiagrams", false));
            schema0.Objects[2].Columns.Add(CreateColumn("id", true, false));
            schema0.Objects[2].Columns.Add(CreateColumn("column1", false, false));
            schema0.Objects[2].Columns.Add(CreateColumn("column2", false, false));

            schema0.Objects.Add(CreateTable("dbo", "sysdiagrams", false));
            schema0.Objects[2].Columns.Add(CreateColumn("id", true, false));
            schema0.Objects[2].Columns.Add(CreateColumn("column1", false, false));
            schema0.Objects[2].Columns.Add(CreateColumn("column2", false, false));

            var schema1 = new SchemaInformationViewModel {
                Name = "unit"
            };

            schema1.Objects.Add(CreateTable("unit", "test", false));
            schema1.Objects[0].Columns.Add(CreateColumn("id", true, false));
            schema1.Objects[0].Columns.Add(CreateColumn("column1", false, false));
            schema1.Objects[0].Columns.Add(CreateColumn("column2", false, false));

            schema1.Objects.Add(CreateTable("unit", "foo", true));
            schema1.Objects[1].Columns.Add(CreateColumn("id", true, false));
            schema1.Objects[1].Columns.Add(CreateColumn("column1", false, false));
            schema1.Objects[1].Columns.Add(CreateColumn("column2", false, false));

            return(new[] { schema0, schema1 });
        }