예제 #1
0
        /// <summary>
        ///     Initializes a new instance of the <see cref="TestViewerViewModel" /> class.
        /// </summary>
        /// <param name="test">The test.</param>
        public TestViewerViewModel(DatabaseTest test)
        {
            _test     = test;
            _testName = test.Name;
            _testType = test.TestType;

            Resolution = test.Resolution;

            PluginSettings = test.PluginSettings;

            TenantColumn = test.TenantColumn;

            OkCommand     = new DelegateCommand <Window>(OnOkClick);
            CopyCommand   = new DelegateCommand <FailureRow>(OnCopyClick);
            DeleteCommand = new DelegateCommand(OnDeleteClick);
            SaveCommand   = new DelegateCommand(OnSaveClick);
            RerunCommand  = new DelegateCommand(OnRerunClick);

            Columns = new List <string>( );

            SetTestResult(test.Failures);
        }
        /// <summary>
        ///     Loads the tests.
        /// </summary>
        private void LoadTests( )
        {
            var location = Assembly.GetExecutingAssembly( ).Location;

            string path = Path.GetDirectoryName(location);

            if (path != null)
            {
                path = Path.Combine(path, "DatabaseTests.xml");

                if (!File.Exists(path))
                {
                    MessageBox.Show("No database tests defined.");
                    return;
                }

                var doc = new XmlDocument( );
                doc.Load(path);

                var testNodes = doc.SelectNodes("/tests/test");

                var tests = new List <DatabaseTest>( );

                if (testNodes != null)
                {
                    foreach (XmlNode testNode in testNodes)
                    {
                        var test = new DatabaseTest(PluginSettings, tests);

                        if (testNode.Attributes != null)
                        {
                            test.Name        = GetAttributeValue(testNode, "name", "Unnamed");
                            test.Description = GetAttributeValue(testNode, "description", string.Empty);
                            test.TestType    = GetAttributeValue(testNode, "type", "info");

                            var entityColumns = testNode.Attributes["entityColumns"];

                            if (entityColumns != null)
                            {
                                test.EntityColumns = entityColumns.Value;
                            }

                            var hiddenColumns = testNode.Attributes["hiddenColumns"];

                            if (hiddenColumns != null)
                            {
                                test.HiddenColumns = hiddenColumns.Value;
                            }

                            var tenantColumn = testNode.Attributes ["tenantColumn"];

                            int tenantColumnVal;
                            if (tenantColumn != null && int.TryParse(tenantColumn.Value, out tenantColumnVal))
                            {
                                test.TenantColumn = tenantColumnVal;
                            }

                            var queryNode = testNode.SelectSingleNode("query");

                            if (queryNode?.FirstChild != null)
                            {
                                test.Query = queryNode.FirstChild.Value;
                            }

                            var resolutionNode = testNode.SelectSingleNode("resolution");

                            if (resolutionNode?.FirstChild != null)
                            {
                                test.Resolution = resolutionNode.FirstChild.Value;
                            }

                            tests.Add(test);
                        }
                    }
                }

                Tests = tests.OrderBy(t => t.TestType).ThenBy(t => t.Name).ToList( );
            }
        }