Skip to content

Commit 8eedac0

Browse files
Add a test for timestamps
1 parent c7aaa56 commit 8eedac0

1 file changed

Lines changed: 92 additions & 0 deletions

File tree

tests/Monolog/BreadcrumbHandlerTest.php

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,4 +85,96 @@ public static function handleDataProvider(): iterable
8585
$defaultBreadcrumb->withMetadata('extra', ['foo' => 'bar']),
8686
];
8787
}
88+
89+
/**
90+
* @dataProvider timestampDataProvider
91+
*
92+
* @param LogRecord|array<string, mixed> $record
93+
*/
94+
public function testTimestamp($record, Breadcrumb $expectedBreadcrumb): void
95+
{
96+
$hub = $this->createMock(HubInterface::class);
97+
$hub->expects($this->once())
98+
->method('addBreadcrumb')
99+
->with($this->callback(function (Breadcrumb $breadcrumb) use ($expectedBreadcrumb): bool {
100+
$this->assertEquals($expectedBreadcrumb->getTimestamp(), $breadcrumb->getTimestamp());
101+
102+
return true;
103+
}));
104+
105+
$handler = new BreadcrumbHandler($hub);
106+
$handler->handle($record);
107+
}
108+
109+
/**
110+
* @return iterable<string, array{LogRecord|array<string, mixed>, Breadcrumb}>
111+
*/
112+
public function timestampDataProvider(): iterable
113+
{
114+
if (Logger::API >= 3) {
115+
return $this->newTimestampProvider();
116+
}
117+
118+
return $this->oldTimestampProvider();
119+
}
120+
121+
/**
122+
* @return iterable<string, array{array<string, mixed>, Breadcrumb}>
123+
*/
124+
private function oldTimestampProvider(): iterable
125+
{
126+
yield 'with timestamp, API < 3' => [
127+
['datetime' => new \DateTimeImmutable('1970-01-01 00:00:42.1337'), 'message' => 'foo bar', 'context' => [], 'level' => Logger::DEBUG, 'level_name' => 'DEBUG', 'channel' => 'channel.foo', 'extra' => []],
128+
new Breadcrumb(
129+
Breadcrumb::LEVEL_DEBUG,
130+
Breadcrumb::TYPE_DEFAULT,
131+
'channel.foo',
132+
'foo bar',
133+
[],
134+
42.1337
135+
),
136+
];
137+
138+
yield 'with negative timestamp, API < 3' => [
139+
['datetime' => new \DateTimeImmutable('1969-12-31 23:59:56.859'), 'message' => 'foo bar', 'context' => [], 'level' => Logger::DEBUG, 'level_name' => 'DEBUG', 'channel' => 'channel.foo', 'extra' => []],
140+
new Breadcrumb(
141+
Breadcrumb::LEVEL_DEBUG,
142+
Breadcrumb::TYPE_DEFAULT,
143+
'channel.foo',
144+
'foo bar',
145+
[],
146+
-3.141
147+
),
148+
];
149+
}
150+
151+
/**
152+
* @return iterable<string, array{LogRecord, Breadcrumb}>
153+
*/
154+
private function newTimestampProvider(): iterable
155+
{
156+
yield 'with timestamp, API >= 3' => [
157+
new LogRecord(new \DateTimeImmutable('1970-01-01 00:00:42.1337'), 'channel.foo', \Monolog\Level::Debug, 'foo bar'),
158+
new Breadcrumb(
159+
Breadcrumb::LEVEL_DEBUG,
160+
Breadcrumb::TYPE_DEFAULT,
161+
'channel.foo',
162+
'foo bar',
163+
[],
164+
42.1337
165+
),
166+
];
167+
168+
yield 'with negative timestamp, API >= 3' => [
169+
new LogRecord(new \DateTimeImmutable('1969-12-31 23:59:56.859'), 'channel.foo', \Monolog\Level::Debug, 'foo bar'),
170+
new Breadcrumb(
171+
Breadcrumb::LEVEL_DEBUG,
172+
Breadcrumb::TYPE_DEFAULT,
173+
'channel.foo',
174+
'foo bar',
175+
[],
176+
-3.141
177+
),
178+
];
179+
}
88180
}

0 commit comments

Comments
 (0)