execute method
Future<void>
execute({
- required CancelToken cancelToken,
- required TestReport report,
- required TestController tester,
Sets the formatted date to a variable on the TestController
.
Implementation
@override
Future<void> execute({
required CancelToken cancelToken,
required TestReport report,
required TestController tester,
}) async {
final date = tester.resolveVariable(this.date);
final format = tester.resolveVariable(this.format);
final variableName = tester.resolveVariable(this.variableName) ?? '_date';
assert(format?.isNotEmpty == true);
assert(variableName.isNotEmpty == true);
final name = "$id('$variableName', '$date', '$format')";
log(
name,
tester: tester,
);
DateTime dateTime;
if (date == null || (date is String && date.isNotEmpty != true)) {
dateTime = DateTime.now();
} else if (date is DateTime) {
dateTime = date.toUtc();
} else if (date is int) {
dateTime = DateTime.fromMillisecondsSinceEpoch(
date,
isUtc: true,
);
} else if (date is String) {
if (date.contains('T') == true) {
try {
dateTime = DateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'").parse(
date,
true,
);
} catch (e) {
dateTime = DateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'").parse(
date,
true,
);
}
} else {
dateTime = DateTime.fromMillisecondsSinceEpoch(
int.parse(date),
isUtc: true,
);
}
} else {
throw Exception('Unknown type for date: [$date]');
}
dateTime = DateTime.fromMillisecondsSinceEpoch(
dateTime.millisecondsSinceEpoch +
Duration(
days: offsetDays,
hours: offsetHours,
minutes: offsetMinutes,
seconds: offsetSeconds)
.inMilliseconds);
if (utc != true) {
dateTime = dateTime.toLocal();
}
tester.setTestVariable(
variableName: variableName,
value: DateFormat(format).format(dateTime),
);
}