Skip to content

Commit bcee542

Browse files
committed
fix(DataBox): One IN (IČO) can renturn more results
1 parent d7e2038 commit bcee542

File tree

5 files changed

+37
-7
lines changed

5 files changed

+37
-7
lines changed

src/Ares.php

+4-1
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,10 @@ public function loadBasic(string $in): Data
5353
}
5454

5555

56-
public function loadDataBox(string $in): stdClass
56+
/**
57+
* @return array<stdClass>
58+
*/
59+
public function loadDataBox(string $in): array
5760
{
5861
return $this->dataBoxContentProvider->load($in);
5962
}

src/DataBox/ContentProvider.php

+8-3
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace h4kuna\Ares\DataBox;
44

55
use Psr\Http\Message\StreamFactoryInterface;
6+
use stdClass;
67

78
class ContentProvider
89
{
@@ -14,13 +15,17 @@ public function __construct(
1415
}
1516

1617

17-
public function load(string $in): \stdClass
18+
/**
19+
* @return array<stdClass>
20+
*/
21+
public function load(string $in): array
1822
{
19-
return $this->xml('Ico', $in)->Osoba;
23+
$content = $this->xml('Ico', $in)->Osoba;
24+
return is_array($content) ? $content : [$content];
2025
}
2126

2227

23-
protected function xml(string $parameter, string $value): \stdClass
28+
protected function xml(string $parameter, string $value): stdClass
2429
{
2530
$xml = <<<XML
2631
<GetInfoRequest xmlns="http://seznam.gov.cz/ovm/ws/v1">

tests/src/E2E/DataBox/00007064.ser

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
a:16:{i:0;O:8:"stdClass":6:{s:3:"Ico";s:8:"00007064";s:10:"NazevOsoby";s:48:"sekce pro státní službu (Ministerstvo vnitra)";s:4:"ISDS";s:7:"9iutsan";s:3:"PDZ";s:5:"false";s:11:"TypSubjektu";s:7:"OVM_REQ";s:11:"AdresaSidla";O:8:"stdClass":8:{s:12:"AdresaTextem";s:50:"Jindřišská 967/34, Nové Město, 11000, Praha 1";s:10:"OkresNazev";O:8:"stdClass":0:{}s:9:"ObecNazev";s:7:"Praha 1";s:13:"CastObceNazev";s:12:"Nové Město";s:10:"UliceNazev";s:13:"Jindřišská";s:8:"PostaKod";s:5:"11000";s:12:"CisloDomovni";s:3:"967";s:15:"CisloOrientacni";s:2:"34";}}i:1;O:8:"stdClass":6:{s:3:"Ico";s:8:"00007064";s:10:"NazevOsoby";s:49:"sekce státního tajemníka (Ministerstvo vnitra)";s:4:"ISDS";s:7:"krk34e3";s:3:"PDZ";s:5:"false";s:11:"TypSubjektu";s:7:"OVM_REQ";s:11:"AdresaSidla";O:8:"stdClass":8:{s:12:"AdresaTextem";s:46:"Nad štolou 936/3, Holešovice, 17000, Praha 7";s:10:"OkresNazev";O:8:"stdClass":0:{}s:9:"ObecNazev";s:7:"Praha 7";s:13:"CastObceNazev";s:11:"Holešovice";s:10:"UliceNazev";s:11:"Nad štolou";s:8:"PostaKod";s:5:"17000";s:12:"CisloDomovni";s:3:"936";s:15:"CisloOrientacni";s:1:"3";}}i:2;O:8:"stdClass":6:{s:3:"Ico";s:8:"00007064";s:10:"NazevOsoby";s:53:"Komunikace mezi EKIS MV a ISoSS (Ministerstvo vnitra)";s:4:"ISDS";s:7:"t88358j";s:3:"PDZ";s:5:"false";s:11:"TypSubjektu";s:7:"OVM_REQ";s:11:"AdresaSidla";O:8:"stdClass":8:{s:12:"AdresaTextem";s:34:"Na Pankráci 1623/72, 14000, Praha";s:10:"OkresNazev";O:8:"stdClass":0:{}s:9:"ObecNazev";s:5:"Praha";s:13:"CastObceNazev";O:8:"stdClass":0:{}s:10:"UliceNazev";s:12:"Na Pankráci";s:8:"PostaKod";s:5:"14000";s:12:"CisloDomovni";s:4:"1623";s:15:"CisloOrientacni";s:2:"72";}}i:3;O:8:"stdClass":6:{s:3:"Ico";s:8:"00007064";s:10:"NazevOsoby";s:50:"Odbor provozu a rozvoje EKIS (Ministerstvo vnitra)";s:4:"ISDS";s:7:"v522hjw";s:3:"PDZ";s:5:"false";s:11:"TypSubjektu";s:7:"OVM_REQ";s:11:"AdresaSidla";O:8:"stdClass":8:{s:12:"AdresaTextem";s:43:"Na Pankráci 1623/72, Nusle, 14000, Praha 4";s:10:"OkresNazev";O:8:"stdClass":0:{}s:9:"ObecNazev";s:7:"Praha 4";s:13:"CastObceNazev";s:5:"Nusle";s:10:"UliceNazev";s:12:"Na Pankráci";s:8:"PostaKod";s:5:"14000";s:12:"CisloDomovni";s:4:"1623";s:15:"CisloOrientacni";s:2:"72";}}i:4;O:8:"stdClass":6:{s:3:"Ico";s:8:"00007064";s:10:"NazevOsoby";s:70:"Centrum zajištěných aktiv Ministerstva vnitra (Ministerstvo vnitra)";s:4:"ISDS";s:7:"v3p745b";s:3:"PDZ";s:5:"false";s:11:"TypSubjektu";s:7:"OVM_REQ";s:11:"AdresaSidla";O:8:"stdClass":8:{s:12:"AdresaTextem";s:43:"Na Pankráci 1623/72, Nusle, 14000, Praha 4";s:10:"OkresNazev";O:8:"stdClass":0:{}s:9:"ObecNazev";s:7:"Praha 4";s:13:"CastObceNazev";s:5:"Nusle";s:10:"UliceNazev";s:12:"Na Pankráci";s:8:"PostaKod";s:5:"14000";s:12:"CisloDomovni";s:4:"1623";s:15:"CisloOrientacni";s:2:"72";}}i:5;O:8:"stdClass":6:{s:3:"Ico";s:8:"00007064";s:10:"NazevOsoby";s:42:"P.O.BOX 92, Praha 74 (Ministerstvo vnitra)";s:4:"ISDS";s:7:"tvz75mf";s:3:"PDZ";s:5:"false";s:11:"TypSubjektu";s:7:"OVM_REQ";s:11:"AdresaSidla";O:8:"stdClass":8:{s:12:"AdresaTextem";s:43:"Dělnická 213/8, Holešovice, 17000, Praha";s:10:"OkresNazev";O:8:"stdClass":0:{}s:9:"ObecNazev";s:5:"Praha";s:13:"CastObceNazev";s:11:"Holešovice";s:10:"UliceNazev";s:10:"Dělnická";s:8:"PostaKod";s:5:"17000";s:12:"CisloDomovni";s:3:"213";s:15:"CisloOrientacni";s:1:"8";}}i:6;O:8:"stdClass":6:{s:3:"Ico";s:8:"00007064";s:10:"NazevOsoby";s:88:"Dotační program na měkké cíle - Odbor bezpečnostní politiky (Ministerstvo vnitra)";s:4:"ISDS";s:7:"f6wh3w8";s:3:"PDZ";s:5:"false";s:11:"TypSubjektu";s:7:"OVM_REQ";s:11:"AdresaSidla";O:8:"stdClass":8:{s:12:"AdresaTextem";s:44:"Nad štolou 936/3, Holešovice, 17000, Praha";s:10:"OkresNazev";O:8:"stdClass":0:{}s:9:"ObecNazev";s:5:"Praha";s:13:"CastObceNazev";s:11:"Holešovice";s:10:"UliceNazev";s:11:"Nad štolou";s:8:"PostaKod";s:5:"17000";s:12:"CisloDomovni";s:3:"936";s:15:"CisloOrientacni";s:1:"3";}}i:7;O:8:"stdClass":6:{s:3:"Ico";s:8:"00007064";s:10:"NazevOsoby";s:41:"P.O.BOX 69, Praha 4 (Ministerstvo vnitra)";s:4:"ISDS";s:7:"eck76yk";s:3:"PDZ";s:5:"false";s:11:"TypSubjektu";s:7:"OVM_REQ";s:11:"AdresaSidla";O:8:"stdClass":8:{s:12:"AdresaTextem";s:37:"Na strži 1709/42, Krč, 14000, Praha";s:10:"OkresNazev";O:8:"stdClass":0:{}s:9:"ObecNazev";s:5:"Praha";s:13:"CastObceNazev";s:4:"Krč";s:10:"UliceNazev";s:9:"Na strži";s:8:"PostaKod";s:5:"14000";s:12:"CisloDomovni";s:4:"1709";s:15:"CisloOrientacni";s:2:"42";}}i:8;O:8:"stdClass":6:{s:3:"Ico";s:8:"00007064";s:10:"NazevOsoby";s:46:"Bezpečnostní sbory ČR (Ministerstvo vnitra)";s:4:"ISDS";s:7:"g2jdsfa";s:3:"PDZ";s:5:"false";s:11:"TypSubjektu";s:7:"OVM_REQ";s:11:"AdresaSidla";O:8:"stdClass":8:{s:12:"AdresaTextem";s:46:"Nad štolou 936/3, Holešovice, 17000, Praha 7";s:10:"OkresNazev";O:8:"stdClass":0:{}s:9:"ObecNazev";s:7:"Praha 7";s:13:"CastObceNazev";s:11:"Holešovice";s:10:"UliceNazev";s:11:"Nad štolou";s:8:"PostaKod";s:5:"17000";s:12:"CisloDomovni";s:3:"936";s:15:"CisloOrientacni";s:1:"3";}}i:9;O:8:"stdClass":6:{s:3:"Ico";s:8:"00007064";s:10:"NazevOsoby";s:43:"P.O.Box 35, Praha 616 (Ministerstvo vnitra)";s:4:"ISDS";s:7:"265vfsh";s:3:"PDZ";s:5:"false";s:11:"TypSubjektu";s:7:"OVM_REQ";s:11:"AdresaSidla";O:8:"stdClass":8:{s:12:"AdresaTextem";s:46:"Nad štolou 936/3, Holešovice, 17000, Praha 7";s:10:"OkresNazev";O:8:"stdClass":0:{}s:9:"ObecNazev";s:7:"Praha 7";s:13:"CastObceNazev";s:11:"Holešovice";s:10:"UliceNazev";s:11:"Nad štolou";s:8:"PostaKod";s:5:"17000";s:12:"CisloDomovni";s:3:"936";s:15:"CisloOrientacni";s:1:"3";}}i:10;O:8:"stdClass":6:{s:3:"Ico";s:8:"00007064";s:10:"NazevOsoby";s:19:"Ministerstvo vnitra";s:4:"ISDS";s:7:"6bnaawp";s:3:"PDZ";s:5:"false";s:11:"TypSubjektu";s:3:"OVM";s:11:"AdresaSidla";O:8:"stdClass":8:{s:12:"AdresaTextem";s:46:"Nad štolou 936/3, Holešovice, 17000, Praha 7";s:10:"OkresNazev";O:8:"stdClass":0:{}s:9:"ObecNazev";s:7:"Praha 7";s:13:"CastObceNazev";s:11:"Holešovice";s:10:"UliceNazev";s:11:"Nad štolou";s:8:"PostaKod";s:5:"17000";s:12:"CisloDomovni";s:3:"936";s:15:"CisloOrientacni";s:1:"3";}}i:11;O:8:"stdClass":6:{s:3:"Ico";s:8:"00007064";s:10:"NazevOsoby";s:32:"P.O.Box 36 (Ministerstvo vnitra)";s:4:"ISDS";s:7:"ujndxxk";s:3:"PDZ";s:5:"false";s:11:"TypSubjektu";s:7:"OVM_REQ";s:11:"AdresaSidla";O:8:"stdClass":8:{s:12:"AdresaTextem";s:29:"Nad Štolou 3, 17034, Praha 7";s:10:"OkresNazev";O:8:"stdClass":0:{}s:9:"ObecNazev";s:7:"Praha 7";s:13:"CastObceNazev";O:8:"stdClass":0:{}s:10:"UliceNazev";s:11:"Nad Štolou";s:8:"PostaKod";s:5:"17034";s:12:"CisloDomovni";s:1:"3";s:15:"CisloOrientacni";O:8:"stdClass":0:{}}}i:12;O:8:"stdClass":6:{s:3:"Ico";s:8:"00007064";s:10:"NazevOsoby";s:32:"P.O.Box 10 (Ministerstvo vnitra)";s:4:"ISDS";s:7:"wgunyb8";s:3:"PDZ";s:5:"false";s:11:"TypSubjektu";s:7:"OVM_REQ";s:11:"AdresaSidla";O:8:"stdClass":8:{s:12:"AdresaTextem";s:33:"Nad Štolou 936/3, 17034, Praha 7";s:10:"OkresNazev";O:8:"stdClass":0:{}s:9:"ObecNazev";s:7:"Praha 7";s:13:"CastObceNazev";O:8:"stdClass":0:{}s:10:"UliceNazev";s:11:"Nad Štolou";s:8:"PostaKod";s:5:"17034";s:12:"CisloDomovni";s:3:"936";s:15:"CisloOrientacni";s:1:"3";}}i:13;O:8:"stdClass":6:{s:3:"Ico";s:8:"00007064";s:10:"NazevOsoby";s:97:"Automat pro Sbírku právních předpisů územních samosprávných celků (Ministerstvo vnitra)";s:4:"ISDS";s:7:"ci2xihx";s:3:"PDZ";s:5:"false";s:11:"TypSubjektu";s:7:"OVM_REQ";s:11:"AdresaSidla";O:8:"stdClass":8:{s:12:"AdresaTextem";s:48:"náměstí Hrdinů 1634/3, Nusle, 14000, Praha 4";s:10:"OkresNazev";O:8:"stdClass":0:{}s:9:"ObecNazev";s:7:"Praha 4";s:13:"CastObceNazev";s:5:"Nusle";s:10:"UliceNazev";s:18:"náměstí Hrdinů";s:8:"PostaKod";s:5:"14000";s:12:"CisloDomovni";s:4:"1634";s:15:"CisloOrientacni";s:1:"3";}}i:14;O:8:"stdClass":6:{s:3:"Ico";s:8:"00007064";s:10:"NazevOsoby";s:39:"přihrádka 21/38 (Ministerstvo vnitra)";s:4:"ISDS";s:7:"xdaun57";s:3:"PDZ";s:5:"false";s:11:"TypSubjektu";s:7:"OVM_REQ";s:11:"AdresaSidla";O:8:"stdClass":8:{s:12:"AdresaTextem";s:33:"Nad štolou 936/3, 17034, Praha 7";s:10:"OkresNazev";O:8:"stdClass":0:{}s:9:"ObecNazev";s:7:"Praha 7";s:13:"CastObceNazev";O:8:"stdClass":0:{}s:10:"UliceNazev";s:11:"Nad štolou";s:8:"PostaKod";s:5:"17034";s:12:"CisloDomovni";s:3:"936";s:15:"CisloOrientacni";s:1:"3";}}i:15;O:8:"stdClass":6:{s:3:"Ico";s:8:"00007064";s:10:"NazevOsoby";s:31:"P.O.Box 2 (Ministerstvo vnitra)";s:4:"ISDS";s:7:"fxpufij";s:3:"PDZ";s:5:"false";s:11:"TypSubjektu";s:7:"OVM_REQ";s:11:"AdresaSidla";O:8:"stdClass":8:{s:12:"AdresaTextem";s:33:"Nad Štolou 936/3, 17031, Praha 7";s:10:"OkresNazev";O:8:"stdClass":0:{}s:9:"ObecNazev";s:7:"Praha 7";s:13:"CastObceNazev";O:8:"stdClass":0:{}s:10:"UliceNazev";s:11:"Nad Štolou";s:8:"PostaKod";s:5:"17031";s:12:"CisloDomovni";s:3:"936";s:15:"CisloOrientacni";s:1:"3";}}}

tests/src/E2E/DataBox/27082440.ser

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
a:1:{i:0;O:8:"stdClass":6:{s:3:"Ico";s:8:"27082440";s:10:"NazevOsoby";s:12:"Alza.cz a.s.";s:4:"ISDS";s:7:"xtkcrkz";s:3:"PDZ";s:4:"true";s:11:"TypSubjektu";s:2:"PO";s:11:"AdresaSidla";O:8:"stdClass":8:{s:12:"AdresaTextem";s:47:"Jankovcova 1522/53, Holešovice, 17000, Praha 7";s:10:"OkresNazev";O:8:"stdClass":0:{}s:9:"ObecNazev";s:7:"Praha 7";s:13:"CastObceNazev";s:11:"Holešovice";s:10:"UliceNazev";s:10:"Jankovcova";s:8:"PostaKod";s:5:"17000";s:12:"CisloDomovni";s:4:"1522";s:15:"CisloOrientacni";s:2:"53";}}}

tests/src/E2E/DataBoxTest.php

+23-3
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,31 @@
1313
*/
1414
final class DataBoxTest extends TestCase
1515
{
16-
public function testDataBox(): void
16+
17+
/**
18+
* @dataProvider provideBasic
19+
*/
20+
public function testBasic(string $in): void
1721
{
1822
$ares = (new AresFactory())->create();
19-
$data = $ares->loadDataBox('27082440');
20-
Assert::same('xtkcrkz', $data->ISDS);
23+
$data = $ares->loadDataBox($in);
24+
$expected = unserialize(trim((string) file_get_contents(__DIR__ . "/../E2E/DataBox/$in.ser")));
25+
assert(is_array($expected));
26+
foreach ($expected as $k => $v) {
27+
Assert::equal($v, $data[$k]);
28+
}
29+
}
30+
31+
32+
/**
33+
* @return array<mixed>
34+
*/
35+
protected function provideBasic(): array
36+
{
37+
return [
38+
['00007064'],
39+
['27082440'],
40+
];
2141
}
2242

2343
}

0 commit comments

Comments
 (0)