All files / src/objects transaction.ts

90.9% Statements 50/55
76.47% Branches 13/17
83.33% Functions 5/6
90.9% Lines 50/55

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 551x 1x 1x 1x 1x 1x 1x 1x 1x 30x 30x 1x 1x 8x 8x 8x 1x 1x           1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 9x 2x 2x 7x 7x 7x 7x 7x 7x 9x 6x 6x 1x 9x 9x 9x 9x 9x 9x 1x
import {AbstractObject} from "./_abstract_object";
 
export class Transaction extends AbstractObject {
  private parsedXML: {
    description?: string,
    programName?: string,
  } | undefined;
 
  public getType(): string {
    return "TRAN";
  }
 
  public setDirty(): void {
    this.parsedXML = undefined;
    super.setDirty();
  }
 
  public getAllowedNaming() {
    return {
      maxLength: 20,
      allowNamespace: true,
    };
  }
 
  public getProgramName(): string | undefined {
    this.parse();
    return this.parsedXML?.programName;
  }
 
  public getDescription(): string | undefined {
    this.parse();
    return this.parsedXML?.description;
  }
 
  public parse() {
    if (this.parsedXML) {
      return {updated: false, runtime: 0};
    }
 
    const start = Date.now();
    this.parsedXML = {};
    const parsed = super.parseRaw2();
    if (parsed === undefined
        || parsed.abapGit === undefined
        || parsed.abapGit["asx:abap"]["asx:values"] === undefined) {
      return {updated: false, runtime: 0};
    }
 
    this.parsedXML.description = parsed.abapGit["asx:abap"]["asx:values"].TSTCT?.TTEXT;
    this.parsedXML.programName = parsed.abapGit["asx:abap"]["asx:values"].TSTC?.PGMNA;
 
    const end = Date.now();
    return {updated: true, runtime: end - start};
  }
}