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:
James Cole
2016-02-17 21:03:59 +01:00
parent 1cf0125d1b
commit 6c22bad77a
5 changed files with 178 additions and 83 deletions

View File

@@ -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;
}
/**

View File

@@ -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;
}
}