1212use PhpCfdi \CfdiExpresiones \Extractors \Comprobante33 ;
1313use PhpCfdi \CfdiExpresiones \Extractors \Comprobante40 ;
1414use PhpCfdi \CfdiExpresiones \Extractors \Retenciones10 ;
15+ use PhpCfdi \CfdiExpresiones \Extractors \Retenciones20 ;
1516
1617class DiscoverExtractorTest extends DOMDocumentsTestCase
1718{
1819 public function testUniqueName (): void
1920 {
20- $ extrator = new DiscoverExtractor ();
21- $ this ->assertSame ('discover ' , $ extrator ->uniqueName ());
21+ $ extractor = new DiscoverExtractor ();
22+ $ this ->assertSame ('discover ' , $ extractor ->uniqueName ());
2223 }
2324
24- public function testGenericExtratorUsesDefaults (): void
25+ public function testGenericExtractorUsesDefaults (): void
2526 {
26- $ extrator = new DiscoverExtractor ();
27- $ currentExpressionExtractors = $ extrator ->currentExpressionExtractors ();
27+ $ extractor = new DiscoverExtractor ();
28+ $ currentExpressionExtractors = $ extractor ->currentExpressionExtractors ();
2829 $ this ->assertGreaterThan (0 , count ($ currentExpressionExtractors ));
2930 $ this ->assertContainsOnlyInstancesOf (ExpressionExtractorInterface::class, $ currentExpressionExtractors );
3031 }
3132
3233 public function testDefaultExtractorContainsKnownClasses (): void
3334 {
34- $ extrator = new DiscoverExtractor ();
35- $ extractorClasses = array_map ('get_class ' , $ extrator ->defaultExtractors ());
35+ $ extractor = new DiscoverExtractor ();
36+ $ extractorClasses = array_map ('get_class ' , $ extractor ->defaultExtractors ());
3637 $ this ->assertContains (Retenciones10::class, $ extractorClasses );
38+ $ this ->assertContains (Retenciones20::class, $ extractorClasses );
3739 $ this ->assertContains (Comprobante32::class, $ extractorClasses );
3840 $ this ->assertContains (Comprobante33::class, $ extractorClasses );
3941 $ this ->assertContains (Comprobante40::class, $ extractorClasses );
40- $ this ->assertCount (4 , $ extractorClasses );
42+ $ this ->assertCount (5 , $ extractorClasses );
4143 }
4244
4345 public function testDontMatchUsingEmptyDocument (): void
4446 {
4547 $ document = new DOMDocument ();
46- $ extrator = new DiscoverExtractor ();
47- $ this ->assertFalse ($ extrator ->matches ($ document ));
48+ $ extractor = new DiscoverExtractor ();
49+ $ this ->assertFalse ($ extractor ->matches ($ document ));
4850 }
4951
5052 public function testThrowExceptionOnUnmatchedDocument (): void
5153 {
5254 $ document = new DOMDocument ();
53- $ extrator = new DiscoverExtractor ();
55+ $ extractor = new DiscoverExtractor ();
5456 $ this ->expectException (UnmatchedDocumentException::class);
5557 $ this ->expectExceptionMessage ('Cannot discover any DiscoverExtractor that matches with document ' );
56- $ extrator ->extract ($ document );
58+ $ extractor ->extract ($ document );
5759 }
5860
5961 /** @return array<string, array{DOMDocument, string}> */
@@ -63,6 +65,8 @@ public function providerExpressionOnValidDocuments(): array
6365 'Cfdi40 ' => [$ this ->documentCfdi40 (), 'CFDI40 ' ],
6466 'Cfdi33 ' => [$ this ->documentCfdi33 (), 'CFDI33 ' ],
6567 'Cfdi32 ' => [$ this ->documentCfdi32 (), 'CFDI32 ' ],
68+ 'Ret20Mexican ' => [$ this ->documentRet20Mexican (), 'RET20 ' ],
69+ 'Ret20Foreign ' => [$ this ->documentRet20Foreign (), 'RET20 ' ],
6670 'Ret10Mexican ' => [$ this ->documentRet10Mexican (), 'RET10 ' ],
6771 'Ret10Foreign ' => [$ this ->documentRet10Foreign (), 'RET10 ' ],
6872 ];
@@ -74,9 +78,9 @@ public function providerExpressionOnValidDocuments(): array
7478 */
7579 public function testExpressionOnValidDocuments (DOMDocument $ document ): void
7680 {
77- $ extrator = new DiscoverExtractor ();
78- $ this ->assertTrue ($ extrator ->matches ($ document ));
79- $ this ->assertNotEmpty ($ extrator ->extract ($ document ));
81+ $ extractor = new DiscoverExtractor ();
82+ $ this ->assertTrue ($ extractor ->matches ($ document ));
83+ $ this ->assertNotEmpty ($ extractor ->extract ($ document ));
8084 }
8185
8286 /**
@@ -86,24 +90,24 @@ public function testExpressionOnValidDocuments(DOMDocument $document): void
8690 */
8791 public function testExtractProducesTheSameResultsAsObtainAndFormat (DOMDocument $ document , string $ type ): void
8892 {
89- $ extrator = new DiscoverExtractor ();
90- $ values = $ extrator ->obtain ($ document );
91- $ expression = $ extrator ->format ($ values , $ type );
92- $ expectedExpression = $ extrator ->extract ($ document );
93+ $ extractor = new DiscoverExtractor ();
94+ $ values = $ extractor ->obtain ($ document );
95+ $ expression = $ extractor ->format ($ values , $ type );
96+ $ expectedExpression = $ extractor ->extract ($ document );
9397 $ this ->assertSame ($ expression , $ expectedExpression );
9498 }
9599
96100 public function testFormatUsingNoType (): void
97101 {
98- $ extrator = new DiscoverExtractor ();
102+ $ extractor = new DiscoverExtractor ();
99103 $ this ->expectException (UnmatchedDocumentException::class);
100104 $ this ->expectExceptionMessage ('DiscoverExtractor requires type key with an extractor identifier ' );
101- $ extrator ->format ([]);
105+ $ extractor ->format ([]);
102106 }
103107
104108 public function testFormatUsingCfdi33 (): void
105109 {
106- $ extrator = new DiscoverExtractor ();
107- $ this ->assertNotEmpty ($ extrator ->format ([], 'CFDI33 ' ));
110+ $ extractor = new DiscoverExtractor ();
111+ $ this ->assertNotEmpty ($ extractor ->format ([], 'CFDI33 ' ));
108112 }
109113}
0 commit comments