Zum Ende der Metadaten springen
Zum Anfang der Metadaten

Businesstest-Skript

Jedes Businesstest-Skript ist automatisch von der Klasse org.nuclos.server.businesstest.execution.BusinessTestScript abgeleitet und hat dadurch unter anderem folgende Methoden zur Verfügung:

void attempt(Callable c)

Führt das übergebene Callable (z.B. eine Groovy Closure) aus und fängt auftretende Exceptions ab. Dabei wird ggf. der "Fehler"- oder "Warnung"-Zähler erhöht, abhängig vom Typ der Exception.
Die Ausführung des Scripts an sich wird dabei jedoch nicht abgebrochen, wie das normalerweise bei Exceptions der Fall wäre.

void fail(String message)

Lässt den Test fehlschlagen und trägt die angegebene message als Ergebnis ein.
Sollte nur in Ausnahmefällen verwendet werden, da meistens Assertions die bessere Alternative sind (welche jedoch einen Fehler melden, wenn sie fehlschlagen, statt nur einer Warnung).

<T> T withUser(String user, Callable<T> c)

Führt das übergebene Callable als der angegebene User aus. Hierzu wird im Hintergrund ein neuer Thread gestartet und als der entsprechende User eingeloggt. Das Callable läuft dann auf diesem Thread und unterliegt allen Rechten und Einschränkungen des Users.
Die Methode liefert den Rückgabewert des Callables zurück.

Beispiel:

 

Entitätsklassen

Für jedes vorhandene BO wird eine entsprechende Entitätsklasse generiert, über die auf die Attribute des BOs zugegriffen werden kann, und die einige Hilfsmethoden bereitstellt.

Getter und Setter für Attribute

Analog zur Serverregel-API: Für jedes Attribut eines BOs gibt es einen Getter und Setter. Für Referenz-Attribute zusätzlich einen Getter und Setter für die ID.
In Groovy können diese Methoden wie einfache Properties benutzt werden.

Beispiel:

get(Long id) - Datensatz über die ID holen

Statische Methode der Entitätsklasse - entspricht QueryProvider.getById() der Serverregel-API.

Beispiel:

save() - Datensatz speichern

Speichert den aktuellen Datensatz - entspricht BusinessObjectProvider.insert() oder BusinessObjectProvider.update(), je nachdem ob der Datensatz neu ist.
Eine manuelle Unterscheidung ist hier nicht mehr nötig.

Beispiel:

delete() - Datensatz löschen

Löscht den aktuellen Datensatz - entspricht BusinessObjectProvider.delete().
Der Datensatz muss hierfür bereits gespeichert gewesen sein.

Beispiel:

first() - Ersten Datensatz holen

Holt den ersten Datensatz dieses BOs, den die Datenbank liefert (ohne bestimmte Reihenfolge).
Wird vor allem in den automatisch generierten Tests verwendet, wenn keine sinnvolleren Suchkriterien zur Verfügung stehen.

Beispiel:

list(int limit) - Mehrere Datensätze holen

Analog zu first(), jedoch werden gleich mehrere Datensätze geholt. limit ist optional - falls nicht angegeben, ist der Default-Wert 100.

Beispiel:

query(String where) - Komplexe SQL-ähnliche Abfragen

Hierüber können komplexe Suchen durchgeführt werden. Der Parameter muss ein Query-String sein, wie ihn auch der REST-Service akzeptiert (siehe dazu Dokumentation des "where" Parameters unter: 4. Businessobjekte (BO) lesen).

Beispiel:

Dependents (Subform-Datensätze)

Wenn ein BO von anderen BOs referenziert wird, wird für jede dieser Referenzen eine Methode der Form get<ReferenzBO>By<Attributname>() auf dem referenzierten BO generiert. Diese Methode liefert eine Collection der Dependents, welcher auch neue Datensätze hinzugefügt werden können.

Beispiel:

Hinzufügen und Löschen eines Subform-Datensatzes

BOs mit Statusmodell

Falls das BO ein Statusmodell hat:

changeStat(int state) - Statuswechsel

Wechselt in den angegebenen Zielstatus - entspricht StatemodelProvider.changeState().

Beispiel:

BOs mit Benutzerregeln

Falls dem BOs Benutzerregeln (CustomRules) zugewiesen sind, steht für jede Regel eine Methode der Form execute<Regel-Name>() zur Verfügung.

Beispiel (Order hat die CustomRule "LockOrder"):

BOs mit "Aktionen"

Falls dem BOs "Aktionen" (aka NuclosProcess) zugewiesen sind, steht für jede Aktion eine Methode der Form changeProcess<Aktionsname>() zur Verfügung. Zusätzlich gibt es eine Method unsetProcess(), um die Aktion zu entfernen.

Beispiel (Order hat die Aktion "Priority order"):

  • Keine Stichwörter