12
12
use PhpCfdi \CfdiExpresiones \Extractors \Comprobante33 ;
13
13
use PhpCfdi \CfdiExpresiones \Extractors \Comprobante40 ;
14
14
use PhpCfdi \CfdiExpresiones \Extractors \Retenciones10 ;
15
+ use PhpCfdi \CfdiExpresiones \Extractors \Retenciones20 ;
15
16
16
17
class DiscoverExtractorTest extends DOMDocumentsTestCase
17
18
{
18
19
public function testUniqueName (): void
19
20
{
20
- $ extrator = new DiscoverExtractor ();
21
- $ this ->assertSame ('discover ' , $ extrator ->uniqueName ());
21
+ $ extractor = new DiscoverExtractor ();
22
+ $ this ->assertSame ('discover ' , $ extractor ->uniqueName ());
22
23
}
23
24
24
- public function testGenericExtratorUsesDefaults (): void
25
+ public function testGenericExtractorUsesDefaults (): void
25
26
{
26
- $ extrator = new DiscoverExtractor ();
27
- $ currentExpressionExtractors = $ extrator ->currentExpressionExtractors ();
27
+ $ extractor = new DiscoverExtractor ();
28
+ $ currentExpressionExtractors = $ extractor ->currentExpressionExtractors ();
28
29
$ this ->assertGreaterThan (0 , count ($ currentExpressionExtractors ));
29
30
$ this ->assertContainsOnlyInstancesOf (ExpressionExtractorInterface::class, $ currentExpressionExtractors );
30
31
}
31
32
32
33
public function testDefaultExtractorContainsKnownClasses (): void
33
34
{
34
- $ extrator = new DiscoverExtractor ();
35
- $ extractorClasses = array_map ('get_class ' , $ extrator ->defaultExtractors ());
35
+ $ extractor = new DiscoverExtractor ();
36
+ $ extractorClasses = array_map ('get_class ' , $ extractor ->defaultExtractors ());
36
37
$ this ->assertContains (Retenciones10::class, $ extractorClasses );
38
+ $ this ->assertContains (Retenciones20::class, $ extractorClasses );
37
39
$ this ->assertContains (Comprobante32::class, $ extractorClasses );
38
40
$ this ->assertContains (Comprobante33::class, $ extractorClasses );
39
41
$ this ->assertContains (Comprobante40::class, $ extractorClasses );
40
- $ this ->assertCount (4 , $ extractorClasses );
42
+ $ this ->assertCount (5 , $ extractorClasses );
41
43
}
42
44
43
45
public function testDontMatchUsingEmptyDocument (): void
44
46
{
45
47
$ document = new DOMDocument ();
46
- $ extrator = new DiscoverExtractor ();
47
- $ this ->assertFalse ($ extrator ->matches ($ document ));
48
+ $ extractor = new DiscoverExtractor ();
49
+ $ this ->assertFalse ($ extractor ->matches ($ document ));
48
50
}
49
51
50
52
public function testThrowExceptionOnUnmatchedDocument (): void
51
53
{
52
54
$ document = new DOMDocument ();
53
- $ extrator = new DiscoverExtractor ();
55
+ $ extractor = new DiscoverExtractor ();
54
56
$ this ->expectException (UnmatchedDocumentException::class);
55
57
$ this ->expectExceptionMessage ('Cannot discover any DiscoverExtractor that matches with document ' );
56
- $ extrator ->extract ($ document );
58
+ $ extractor ->extract ($ document );
57
59
}
58
60
59
61
/** @return array<string, array{DOMDocument, string}> */
@@ -63,6 +65,8 @@ public function providerExpressionOnValidDocuments(): array
63
65
'Cfdi40 ' => [$ this ->documentCfdi40 (), 'CFDI40 ' ],
64
66
'Cfdi33 ' => [$ this ->documentCfdi33 (), 'CFDI33 ' ],
65
67
'Cfdi32 ' => [$ this ->documentCfdi32 (), 'CFDI32 ' ],
68
+ 'Ret20Mexican ' => [$ this ->documentRet20Mexican (), 'RET20 ' ],
69
+ 'Ret20Foreign ' => [$ this ->documentRet20Foreign (), 'RET20 ' ],
66
70
'Ret10Mexican ' => [$ this ->documentRet10Mexican (), 'RET10 ' ],
67
71
'Ret10Foreign ' => [$ this ->documentRet10Foreign (), 'RET10 ' ],
68
72
];
@@ -74,9 +78,9 @@ public function providerExpressionOnValidDocuments(): array
74
78
*/
75
79
public function testExpressionOnValidDocuments (DOMDocument $ document ): void
76
80
{
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 ));
80
84
}
81
85
82
86
/**
@@ -86,24 +90,24 @@ public function testExpressionOnValidDocuments(DOMDocument $document): void
86
90
*/
87
91
public function testExtractProducesTheSameResultsAsObtainAndFormat (DOMDocument $ document , string $ type ): void
88
92
{
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 );
93
97
$ this ->assertSame ($ expression , $ expectedExpression );
94
98
}
95
99
96
100
public function testFormatUsingNoType (): void
97
101
{
98
- $ extrator = new DiscoverExtractor ();
102
+ $ extractor = new DiscoverExtractor ();
99
103
$ this ->expectException (UnmatchedDocumentException::class);
100
104
$ this ->expectExceptionMessage ('DiscoverExtractor requires type key with an extractor identifier ' );
101
- $ extrator ->format ([]);
105
+ $ extractor ->format ([]);
102
106
}
103
107
104
108
public function testFormatUsingCfdi33 (): void
105
109
{
106
- $ extrator = new DiscoverExtractor ();
107
- $ this ->assertNotEmpty ($ extrator ->format ([], 'CFDI33 ' ));
110
+ $ extractor = new DiscoverExtractor ();
111
+ $ this ->assertNotEmpty ($ extractor ->format ([], 'CFDI33 ' ));
108
112
}
109
113
}
0 commit comments