/// <summary>
        /// Generate xsd file
        /// </summary>
        /// <param name="businessActionsRepository">Business action data</param>
        /// <returns>Return xsd schema</returns>
        private XmlDocument GenerateXsdSchema(BusinessActionsRepository businessActionsRepository)
        {
            using (Stream stream = File.Open(
                       Path.Combine(ConsoleApp.AccipioDirectoryPath, XsdTemplateFileName),
                       FileMode.Open))
            {
                XmlDocument xmlDocument = new XmlDocument();
                xmlDocument.Load(stream);

                XmlElement xmlElement = xmlDocument.DocumentElement;

                //string nameSpace = xmlElement.GetAttribute("xmlns:xs");
                XmlNamespaceManager namespaceManager = new XmlNamespaceManager(xmlDocument.NameTable);
                namespaceManager.AddNamespace("xs", XmlNsXs);

                // change xmlns name and targetNamespace
                SetXmlDocumentNamespaces(xmlDocument);

                XmlNode xmlNode = xmlElement.SelectSingleNode(
                    "//xs:element[@name='steps']/xs:complexType/xs:sequence/xs:choice",
                    namespaceManager);
                FillTestSuiteSchemaTemplate(xmlDocument, xmlNode, businessActionsRepository);

                return(xmlDocument);
            }
        }
        /// <summary>
        /// Fills the test suite template XSD with the required business actions nodes.
        /// </summary>
        /// <param name="testSuiteSchemaDocument"><see cref="XmlDocument"/> which contains the test suite template XSD.</param>
        /// <param name="testActionsParentNode">Parent node where the test actions should be filled.</param>
        /// <param name="businessActionsRepository">Business action data</param>
        private void FillTestSuiteSchemaTemplate(
            XmlDocument testSuiteSchemaDocument,
            XmlNode testActionsParentNode,
            BusinessActionsRepository businessActionsRepository)
        {
            foreach (BusinessAction businessAction in businessActionsRepository.EnumerateActions())
            {
                XmlNode newNode = testSuiteSchemaDocument.CreateNode(
                    XmlNodeType.Element,
                    "xs",
                    "element",
                    XmlNsXs);

                // add attribute name
                XmlAttribute xmlAttribute = testSuiteSchemaDocument.CreateAttribute("name");
                xmlAttribute.Value = businessAction.ActionName;
                newNode.Attributes.Append(xmlAttribute);

                // add attribute minOccurs
                xmlAttribute       = testSuiteSchemaDocument.CreateAttribute("minOccurs");
                xmlAttribute.Value = "1";
                newNode.Attributes.Append(xmlAttribute);

                AddBusinessActionParameters(businessAction, testSuiteSchemaDocument, newNode);

                // append child node
                testActionsParentNode.AppendChild(newNode);
            }
        }
        public int Execute(IEnumerable <string> args)
        {
            List <string> unhandledArguments = options.Parse(args);

            if (unhandledArguments.Count > 0)
            {
                throw new ArgumentException("There are some unsupported options.");
            }

            if (String.IsNullOrEmpty(businessActionsXmlFileName))
            {
                throw new ArgumentException("Missing business actions XML file name.");
            }

            if (String.IsNullOrEmpty(testSuiteSchemaNamespace))
            {
                throw new ArgumentException("Missing XML namespace for the new test suite schema.");
            }

            // set output file name
            testSuiteSchemaFileName = Path.Combine(outputDir, Path.GetFileName(Path.ChangeExtension(businessActionsXmlFileName, "xsd")));

            // create instance of class XmlValidationHelper
            XmlValidationHelper helper = new XmlValidationHelper();

            // validating XML with schema file
            // xml document must have at least one action element

            helper.ValidateXmlDocument(
                businessActionsXmlFileName,
                Path.Combine(ConsoleApp.AccipioDirectoryPath, AccipioActionsXsdFileName));

            // parse XML file
            BusinessActionsRepository businessActionsRepository = ParseXmlToObject(businessActionsXmlFileName);

            // generating XSD schema file with business actions validation parameters
            XmlDocument xmlSchemaDocument = GenerateXsdSchema(businessActionsRepository);

            // write xsd schema to file
            AccipioHelper.EnsureDirectoryPathExists(testSuiteSchemaFileName, true);
            using (Stream xsdSchemaDocument = File.Open(testSuiteSchemaFileName, FileMode.Create))
            {
                xmlSchemaDocument.Save(xsdSchemaDocument);
            }

            System.Console.WriteLine(string.Format(
                                         CultureInfo.InvariantCulture,
                                         "XSD schema file '{0}' was created",
                                         Path.GetFullPath(testSuiteSchemaFileName)));

            return(0);
        }
        public void MoreParametersInTestStep()
        {
            ITestCodeGenerator testCodeGenerator = new TemplatedTestCodeGenerator(
                @"Templates/TestRunners/CSharpMbUnitTestRunner.vm",
                "IT3Suite.cs");

            TestSuite testSuite = new TestSuite("IT3Suite")
            {
                Description      = "Following test suite defines acceptance test cases for Iteration3 (Content Delivery) in MiMi project.",
                TestRunnerName   = "MiMi",
                Namespace        = "Hsl.Ganesha.AcceptanceTests",
                IsParallelizable = true,
            };

            TestCase testCase = new TestCase("TopicWithoutContent")
            {
                TestCaseDescription = "Subscribe onDemand news to category SALA through SP Gui, where particular topic news does not exists. Check received SMS on phone."
            };

            testCase.AddTestCaseTag("CD.SMS.ImmediateRequest");

            TestCaseStep testCaseStep;

            testCaseStep = new TestCaseStep("AssertTopicDescription");
            testCaseStep.AddParameter(new TestStepParameter("topic", "SALA"));
            testCaseStep.AddParameter(new TestStepParameter("sequenceNumberInList", "3"));
            testCaseStep.AddParameter(new TestStepParameter("topicDescription", "šala dneva"));
            testCaseStep.AddParameter(new TestStepParameter("isBool", "true"));
            testCase.AddStep(testCaseStep);
            testSuite.AddTestCase(testCase);

            BusinessActionsRepository businessActionsRepository = new BusinessActionsRepository();
            BusinessAction            businessAction;

            businessAction =
                new BusinessAction("AssertTopicDescription")
            {
                Description =
                    "Assert each topic has correct description with the content '{0}' in AllServices list."
            };
            businessAction.AddParameter(new BusinessActionParameter("topic", typeof(string), "string", 0));
            businessAction.AddParameter(new BusinessActionParameter("sequenceNumberInList", typeof(int), "integer", 1));
            businessAction.AddParameter(new BusinessActionParameter("topicDescription", typeof(string), "string", 2));
            businessAction.AddParameter(new BusinessActionParameter("isBool", typeof(bool), "boolean", 3));
            businessActionsRepository.AddAction(businessAction);

            testSuite.BusinessActionsRepository = businessActionsRepository;

            // execution
            testCodeGenerator.Generate(testSuite);
        }
Exemple #5
0
        public void GenerateTestSpec()
        {
            TestSuite testSuite = new TestSuite("TestSuiteId")
            {
                Description = "Test Sute Description."
            };

            // Business Action Data
            const string ActionNavigateToDescription   = "Navigate to url '{0}'";
            const string ActionSelectModuleDescription = "Select module name '{0}'";
            const string ActionDetailsDescription      = "Select details";

            BusinessActionsRepository businessActionsRepository = new BusinessActionsRepository();
            BusinessAction            businessAction            = new BusinessAction("NavigateTo");

            businessAction.Description = ActionNavigateToDescription;
            businessActionsRepository.AddAction(businessAction);
            businessAction             = new BusinessAction("SelectModule");
            businessAction.Description = ActionSelectModuleDescription;
            businessActionsRepository.AddAction(businessAction);
            businessAction             = new BusinessAction("Details");
            businessAction.Description = ActionDetailsDescription;
            businessActionsRepository.AddAction(businessAction);
            testSuite.BusinessActionsRepository = businessActionsRepository;

            // Test case
            TestCase testCase = new TestCase("Open Page")
            {
                TestCaseDescription = "Open page in web browser"
            };
            TestCaseStep      testCaseStep      = new TestCaseStep("NavigateTo");
            TestStepParameter testStepParameter =
                new TestStepParameter("url", "http://test.aspx");

            testCaseStep.AddParameter(testStepParameter);
            testCase.AddStep(testCaseStep);
            testCaseStep      = new TestCaseStep("SelectModule");
            testStepParameter = new TestStepParameter("name", "Mobi-Info");
            testCaseStep.AddParameter(testStepParameter);
            testCase.AddStep(testCaseStep);
            testCase.AddStep(new TestCaseStep("Details"));
            testSuite.AddTestCase(testCase);

            ITestCodeGenerator generator = new TemplatedTestCodeGenerator(
                @"Templates/TestRunners/HtmlTestCodeGenerator.vm",
                "TestSuiteId.html");

            generator.Generate(testSuite);
        }
        public void ParseBusinessActionsTest()
        {
            using (Stream stream = File.OpenRead("../../AccipioTests/Samples/OnlineBankingBusinessActions.xml"))
            {
                IBusinessActionXmlParser  parser = new BusinessActionsXmlParser(stream);
                BusinessActionsRepository businessActionsRepository = parser.Parse();

                // test id of actions
                Assert.AreEqual(businessActionsRepository.EnumerateActions().Count, 8);
                IList <BusinessAction> actions = businessActionsRepository.EnumerateActions();

                int i = 0;
                Assert.AreEqual(actions[i++].ActionName, "AssertOperationSuccessful");
                Assert.AreEqual(actions[i++].ActionName, "ClickActionTransfer");
                Assert.AreEqual(actions[i++].ActionName, "ConfirmTransfer");
                Assert.AreEqual(actions[i++].ActionName, "EnterDestinationAccountNumber");
                Assert.AreEqual(actions[i++].ActionName, "EnterTransferAmount");
                Assert.AreEqual(actions[i++].ActionName, "GoToPortal");
                Assert.AreEqual(actions[i++].ActionName, "SignIn");
                Assert.AreEqual(actions[i++].ActionName, "ViewAccount");
            }
        }
 public void MissingBusinessActionDataEntryTest()
 {
     BusinessActionsRepository businessActionsRepository = new BusinessActionsRepository();
     BusinessAction            entry = businessActionsRepository.GetAction("NoAction");
 }
        public void GenerateTestFromTemplate()
        {
            ITestCodeGenerator testCodeGenerator = new TemplatedTestCodeGenerator(
                @"Templates/TestRunners/CSharpMbUnitTestRunner.vm",
                "Banking.cs");

            TestSuite testSuite = new TestSuite("Banking")
            {
                Description      = "Class description.",
                TestRunnerName   = "OnlineBanking",
                Namespace        = "OnlineBankingNamespace",
                IsParallelizable = true,
            };

            TestCase testCase = new TestCase("ViewAccountTestCase")
            {
                TestCaseDescription = "Tests case description."
            };

            testCase.AddTestCaseTag("R15");
            testCase.AddTestCaseTag("R21.1");
            testCase.AddStep(new TestCaseStep("GoToPortal"));

            TestCaseStep testCaseStep = new TestCaseStep("SignIn");

            testCaseStep.AddParameter(new TestStepParameter("username", "john"));
            testCaseStep.AddParameter(new TestStepParameter("password", "doe"));
            testCase.AddStep(testCaseStep);

            testCaseStep = new TestCaseStep("AssertIsUserIdCorrect");
            testCaseStep.AddParameter(new TestStepParameter("userId", "1"));
            testCase.AddStep(testCaseStep);

            testCase.AddStep(new TestCaseStep("AssertOperationSuccessful"));
            testSuite.AddTestCase(testCase);

            BusinessActionsRepository businessActionsRepository = new BusinessActionsRepository();
            BusinessAction            businessAction            =
                new BusinessAction("GoToPortal")
            {
                Description =
                    "Open the online banking portal web site in the browser."
            };

            businessActionsRepository.AddAction(businessAction);
            businessAction =
                new BusinessAction("SignIn")
            {
                Description = "Sign in user '{0}'."
            };
            businessAction.AddParameter(new BusinessActionParameter("username", typeof(string), "string", 0));
            businessAction.AddParameter(new BusinessActionParameter("password", typeof(string), "string", 1));
            businessActionsRepository.AddAction(businessAction);
            businessAction =
                new BusinessAction("AssertIsUserIdCorrect")
            {
                Description = "Assert if user id is correct."
            };
            businessAction.AddParameter(new BusinessActionParameter("userId", typeof(int), "integer", 0));
            businessActionsRepository.AddAction(businessAction);
            businessAction =
                new BusinessAction("AssertOperationSuccessful")
            {
                Description = "Assert the operation was successful."
            };
            businessActionsRepository.AddAction(businessAction);

            testSuite.BusinessActionsRepository = businessActionsRepository;
            testCodeGenerator.Generate(testSuite);
        }