mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-10-22 20:16:22 +00:00
Revamped a part of the rule test code.
- clean way of constructing triggers - processor can be constructed in a number of ways. - cleaner transaction matcher using collections instead of arrays
This commit is contained in:
@@ -21,6 +21,8 @@ use FireflyIII\Models\TransactionJournal;
|
||||
*/
|
||||
class AbstractTrigger
|
||||
{
|
||||
/** @var bool */
|
||||
public $stopProcessing;
|
||||
/** @var string */
|
||||
protected $checkValue;
|
||||
/** @var TransactionJournal */
|
||||
@@ -38,6 +40,20 @@ class AbstractTrigger
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $triggerValue
|
||||
* @param bool $stopProcessing
|
||||
*
|
||||
* @return static
|
||||
*/
|
||||
public static function makeFromStrings(string $triggerValue, bool $stopProcessing)
|
||||
{
|
||||
$self = new static;
|
||||
$self->triggerValue = $triggerValue;
|
||||
$self->stopProcessing = $stopProcessing;
|
||||
return $self;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param RuleTrigger $trigger
|
||||
*
|
||||
@@ -45,9 +61,10 @@ class AbstractTrigger
|
||||
*/
|
||||
public static function makeFromTrigger(RuleTrigger $trigger)
|
||||
{
|
||||
$self = new self;
|
||||
$self->trigger = $trigger;
|
||||
$self->triggerValue = $trigger->trigger_value;
|
||||
$self = new static;
|
||||
$self->trigger = $trigger;
|
||||
$self->triggerValue = $trigger->trigger_value;
|
||||
$self->stopProcessing = $trigger->stop_processing;
|
||||
|
||||
return $self;
|
||||
}
|
||||
@@ -58,10 +75,11 @@ class AbstractTrigger
|
||||
*/
|
||||
public static function makeFromTriggerAndJournal(RuleTrigger $trigger, TransactionJournal $journal)
|
||||
{
|
||||
$self = new self;
|
||||
$self->trigger = $trigger;
|
||||
$self->triggerValue = $trigger->trigger_value;
|
||||
$self->journal = $journal;
|
||||
$self = new static;
|
||||
$self->trigger = $trigger;
|
||||
$self->triggerValue = $trigger->trigger_value;
|
||||
$self->stopProcessing = $trigger->stop_processing;
|
||||
$self->journal = $journal;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -38,9 +38,40 @@ class TriggerFactory
|
||||
$class = self::getTriggerClass($triggerType);
|
||||
$obj = $class::makeFromTriggerValue($trigger->trigger_value);
|
||||
|
||||
// this is a massive HACK. TODO.
|
||||
$obj->databaseObject = $trigger;
|
||||
|
||||
return $obj;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $triggerType
|
||||
* @param string $triggerValue
|
||||
*
|
||||
* @return AbstractTrigger
|
||||
* @throws FireflyException
|
||||
*/
|
||||
public static function makeTriggerFromStrings(string $triggerType, string $triggerValue, bool $stopProcessing)
|
||||
{
|
||||
/** @var AbstractTrigger $class */
|
||||
$class = self::getTriggerClass($triggerType);
|
||||
$obj = $class::makeFromStrings($triggerValue, $stopProcessing);
|
||||
|
||||
return $obj;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a map with triggertypes, mapped to the class representing that type
|
||||
*/
|
||||
protected static function getTriggerTypes()
|
||||
{
|
||||
if (!self::$triggerTypes) {
|
||||
self::$triggerTypes = Domain::getRuleTriggers();
|
||||
}
|
||||
|
||||
return self::$triggerTypes;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the class name to be used for triggers with the given name
|
||||
*
|
||||
@@ -49,7 +80,7 @@ class TriggerFactory
|
||||
* @return TriggerInterface|string
|
||||
* @throws FireflyException
|
||||
*/
|
||||
public static function getTriggerClass(string $triggerType): string
|
||||
private static function getTriggerClass(string $triggerType): string
|
||||
{
|
||||
$triggerTypes = self::getTriggerTypes();
|
||||
|
||||
@@ -64,16 +95,4 @@ class TriggerFactory
|
||||
|
||||
return $class;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a map with triggertypes, mapped to the class representing that type
|
||||
*/
|
||||
protected static function getTriggerTypes()
|
||||
{
|
||||
if (!self::$triggerTypes) {
|
||||
self::$triggerTypes = Domain::getRuleTriggers();
|
||||
}
|
||||
|
||||
return self::$triggerTypes;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user