-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTraceModelTest.php
More file actions
109 lines (77 loc) · 2.24 KB
/
TraceModelTest.php
File metadata and controls
109 lines (77 loc) · 2.24 KB
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
<?php
namespace SyncEngine\Tests\Model;
use SyncEngine\Model\TraceModel;
use SyncEngine\Service\ExecuteData;
use SyncEngine\Service\Trace\TraceNode;
use SyncEngine\Structure\Data\ResourceData;
use SyncEngine\Tests\TestCase\BaseTestCase;
class TraceModelTest extends BaseTestCase
{
public function testTrace(): void
{
$traceModel = TraceModel::create();
$traceModel->disableAutoSave();
$traceModel->start();
$trace = $traceModel->getCurrentTrace();
$this->assertArrayHasKey( 'time_start', $trace->normalize() );
/**
* Start trace.
*/
$traceModel->enterTrace( 'Foo' );
$fooNode = $trace->getCurrentNode();
$this->assertEquals( 'Foo', $fooNode->getRef() );
/**
* One level deep.
*/
$traceModel->enterTrace( 'Bar' );
$barNode = $trace->getCurrentNode();
$this->assertEquals( 'Bar', $barNode->getRef() );
$this->assertEquals( 'Foo.Bar', $trace->getCurrentNode()->getKey() );
$this->assertEquals( $barNode, $trace->get( 'trace.Foo.trace.Bar' ) );
/**
* Go back one level.
*/
$traceModel->leaveTrace( 'Bar' );
$this->assertEquals( $fooNode, $trace->getCurrentNode() );
$this->assertEquals( $fooNode, $trace->get( 'trace.Foo' ) );
/**
* One level deep.
*/
$traceModel->enterTrace( 'Bar' );
$this->assertEquals( $barNode, $trace->getCurrentNode() );
$this->assertEquals( 2, $barNode['count'] );
/**
* Log
*/
$traceModel->addLog( 'Test Log' );
$traces = $trace->getCurrentTraces();
$traces = ResourceData::create( $traces )->normalize();
$messages = array_column( $traces, 'message' );
$this->assertTrue( in_array( 'Test Log', $messages, true ) );
}
public function testTraceNodeReferenceData(): void
{
$reference = new ExecuteData(
[
new ExecuteData( ['one' => 1] ),
new ExecuteData( ['two' => 2] )
]
);
$config = [
'_label' => 'test',
'_class' => 'test',
'_ref' => 'test',
'sub' => [
'_label' => 'Sub',
'_class' => 'sub',
'_ref' => 'sub',
],
'data' => $reference,
];
$compare = ResourceData::create( $config )->normalize();
$compare['sub'] = 'sub';
$node = TraceNode::create( $config );
$normalized = ResourceData::create( $node->getConfig() )->normalize();
$this->assertEquals( $compare, $normalized );
}
}