Skip to content

Commit

Permalink
fix(DataBox): One IN (IČO) can renturn more results
Browse files Browse the repository at this point in the history
  • Loading branch information
h4kuna committed Nov 26, 2023
1 parent d7e2038 commit bcee542
Show file tree
Hide file tree
Showing 5 changed files with 37 additions and 7 deletions.
5 changes: 4 additions & 1 deletion src/Ares.php
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,10 @@ public function loadBasic(string $in): Data
}


public function loadDataBox(string $in): stdClass
/**
* @return array<stdClass>
*/
public function loadDataBox(string $in): array
{
return $this->dataBoxContentProvider->load($in);
}
Expand Down
11 changes: 8 additions & 3 deletions src/DataBox/ContentProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
namespace h4kuna\Ares\DataBox;

use Psr\Http\Message\StreamFactoryInterface;
use stdClass;

class ContentProvider
{
Expand All @@ -14,13 +15,17 @@ public function __construct(
}


public function load(string $in): \stdClass
/**
* @return array<stdClass>
*/
public function load(string $in): array
{
return $this->xml('Ico', $in)->Osoba;
$content = $this->xml('Ico', $in)->Osoba;
return is_array($content) ? $content : [$content];
}


protected function xml(string $parameter, string $value): \stdClass
protected function xml(string $parameter, string $value): stdClass
{
$xml = <<<XML
<GetInfoRequest xmlns="http://seznam.gov.cz/ovm/ws/v1">
Expand Down
1 change: 1 addition & 0 deletions tests/src/E2E/DataBox/00007064.ser
Original file line number Diff line number Diff line change
@@ -0,0 +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";}}}
1 change: 1 addition & 0 deletions tests/src/E2E/DataBox/27082440.ser
Original file line number Diff line number Diff line change
@@ -0,0 +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";}}}
26 changes: 23 additions & 3 deletions tests/src/E2E/DataBoxTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,31 @@
*/
final class DataBoxTest extends TestCase
{
public function testDataBox(): void

/**
* @dataProvider provideBasic
*/
public function testBasic(string $in): void
{
$ares = (new AresFactory())->create();
$data = $ares->loadDataBox('27082440');
Assert::same('xtkcrkz', $data->ISDS);
$data = $ares->loadDataBox($in);
$expected = unserialize(trim((string) file_get_contents(__DIR__ . "/../E2E/DataBox/$in.ser")));
assert(is_array($expected));
foreach ($expected as $k => $v) {
Assert::equal($v, $data[$k]);
}
}


/**
* @return array<mixed>
*/
protected function provideBasic(): array
{
return [
['00007064'],
['27082440'],
];
}

}
Expand Down

0 comments on commit bcee542

Please sign in to comment.