Book a Demo

Author Topic: Changing Status field with Scripting  (Read 3254 times)

pawel.skrzypkowski

  • EA Novice
  • *
  • Posts: 1
  • Karma: +0/-0
    • View Profile
Changing Status field with Scripting
« on: October 24, 2018, 11:48:40 pm »
Hello everyone!
I'm new to EA and scripting. I'm trying to change Status field of each testset and testcase which has this field null or empty. My script:
var goodStatus = Repository.GetElementByGuid("{20B7B91E-E77F-447e-AAC1-DA5DD2C2F157}").Status;
function doJob(jobArray) {
   var packageArray = new Array();
   for(var i=0; i<jobArray.length; i++){
      packageArray.push(Repository.GetPackageByGuid(jobArray));
   }
   var caseArray = new Array();
   for(var i=0;i<packageArray.length;i++){
      for(var j=0; j<packageArray.Elements.Count; j++){
         caseArray.push(packageArray.Elements.GetAt(j));
      }
   }
   var k = 0;
   for(var i=0; i<caseArray.length; i++){
      if(caseArray.Status == null || caseArray.Status == ""){
         caseArray.Status = goodStatus;
         caseArray.Update()
         Session.Output(caseArray.Name);
         k++;
      }
      for(var j=0; j<caseArray.Elements.Count; j++){
         if(caseArray.Elements.GetAt(j).Status == null || caseArray.Elements.GetAt(j).Status == ""){
            caseArray.Elements.GetAt(j).Status = goodStatus;
            caseArray.Elements.GetAt(j).Update()
            Session.Output(caseArray.Elements.GetAt(j).Name);
            k++;
         }
      }
   }
   Session.Output(packageArray[0].Update());
   Session.Output(k);
}

doJob(["{F728384C-3826-4af1-8B4F-DACFFAEEE548}", "{9A565DD8-7D0A-4058-95D7-ED3BA62C721B}"]);


This script didtn't throw any error but Status field didn't change. Do you know what i am doing wrong?

thank's for help

Geert Bellekens

  • EA Guru
  • *****
  • Posts: 13453
  • Karma: +571/-33
  • Make EA work for YOU!
    • View Profile
    • Enterprise Architect Consultant and Value Added Reseller
Re: Changing Status field with Scripting
« Reply #1 on: October 25, 2018, 01:50:40 am »
if caseArray is an array and not an EA.Element, how can caseArray.Status ever work?

Geert

qwerty

  • EA Guru
  • *****
  • Posts: 13584
  • Karma: +396/-301
  • I'm no guru at all
    • View Profile
Re: Changing Status field with Scripting
« Reply #2 on: October 25, 2018, 08:35:49 am »
IOW:
Code: [Select]
for(var i=0; i<caseArray.length; i++){
      if(caseArray.Status == null || caseArray.Status == ""){
 
You need to get the element from caseArray and work on that.

q.

Arshad

  • EA User
  • **
  • Posts: 286
  • Karma: +20/-1
    • View Profile
Re: Changing Status field with Scripting
« Reply #3 on: October 25, 2018, 05:26:42 pm »
Using the below code for setting the status .

Code: [Select]
!INC Local Scripts.EAConstants-JScript

/*
 * Script Name:
 * Author:
 * Purpose:
 * Date:
 */
 
 var goodStatus = "Approved";
function doJob(jobArray) {
   var packageArray = new Array();
   for(var i=0; i<jobArray.length; i++){
  packageArray.push(Repository.GetPackageByGuid(jobArray[i]));
   }
   var caseArray = new Array();
   for(var i=0;i<packageArray.length;i++){
      for(var j=0; j<packageArray[i].Elements.Count; j++){
         caseArray.push(packageArray[i].Elements.GetAt(j));
      }
   }
   var k = 0;
   for(var i=0; i<caseArray.length; i++){
      //if(caseArray[i].Status == null || caseArray.Status == ""){
         caseArray[i].Status = goodStatus;
         caseArray[i].Update()
         Session.Output(caseArray[i].Name);
         k++;
      //}
      for(var j=0; j<caseArray[i].Elements.Count; j++){
         if(caseArray.Elements.GetAt(j).Status == null || caseArray.Elements.GetAt(j).Status == ""){
            caseArray.Elements.GetAt(j).Status = goodStatus;
            caseArray.Elements.GetAt(j).Update()
            Session.Output(caseArray.Elements.GetAt(j).Name);
            k++;
         }
      }
   }
   Session.Output(packageArray[0].Update());
   Session.Output(k);
}

doJob(["{7C1F48ED-4507-4adb-ACBD-F848626E85B2}"]);//{5C1F6946-A582-4808-B7EF-6AE2660A9741}", "{E68B375C-A886-42f3-B4AE-A4E62D98E8A3}"]);




Note  : replace the GUIDs with your model GUIDs



HTH
Arshad