/// <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); }
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); }