1
+ using System ;
2
+ using JsonApiDotNetCore . Graph ;
3
+ using JsonApiDotNetCore . Models ;
4
+ using Xunit ;
5
+
6
+ namespace UnitTests . Internal
7
+ {
8
+ public class TypeLocator_Tests
9
+ {
10
+ [ Fact ]
11
+ public void GetGenericInterfaceImplementation_Gets_Implementation ( )
12
+ {
13
+ // arrange
14
+ var assembly = GetType ( ) . Assembly ;
15
+ var openGeneric = typeof ( IGenericInterface < > ) ;
16
+ var genericArg = typeof ( int ) ;
17
+
18
+ var expectedImplementation = typeof ( Implementation ) ;
19
+ var expectedInterface = typeof ( IGenericInterface < int > ) ;
20
+
21
+ // act
22
+ var result = TypeLocator . GetGenericInterfaceImplementation (
23
+ assembly ,
24
+ openGeneric ,
25
+ genericArg
26
+ ) ;
27
+
28
+ // assert
29
+ Assert . NotNull ( result ) ;
30
+ Assert . Equal ( expectedImplementation , result . implementation ) ;
31
+ Assert . Equal ( expectedInterface , result . registrationInterface ) ;
32
+ }
33
+
34
+ [ Fact ]
35
+ public void GetDerivedGenericTypes_Gets_Implementation ( )
36
+ {
37
+ // arrange
38
+ var assembly = GetType ( ) . Assembly ;
39
+ var openGeneric = typeof ( BaseType < > ) ;
40
+ var genericArg = typeof ( int ) ;
41
+
42
+ var expectedImplementation = typeof ( DerivedType ) ;
43
+
44
+ // act
45
+ var results = TypeLocator . GetDerivedGenericTypes (
46
+ assembly ,
47
+ openGeneric ,
48
+ genericArg
49
+ ) ;
50
+
51
+ // assert
52
+ Assert . NotNull ( results ) ;
53
+ var result = Assert . Single ( results ) ;
54
+ Assert . Equal ( expectedImplementation , result ) ;
55
+ }
56
+
57
+ [ Fact ]
58
+ public void GetIdType_Correctly_Identifies_JsonApiResource ( )
59
+ {
60
+ // arrange
61
+ var type = typeof ( Model ) ;
62
+ var exextedIdType = typeof ( int ) ;
63
+
64
+ // act
65
+ var result = TypeLocator . GetIdType ( type ) ;
66
+
67
+ // assert
68
+ Assert . NotNull ( result ) ;
69
+ Assert . True ( result . isJsonApiResource ) ;
70
+ Assert . Equal ( exextedIdType , result . idType ) ;
71
+ }
72
+
73
+ [ Fact ]
74
+ public void GetIdType_Correctly_Identifies_NonJsonApiResource ( )
75
+ {
76
+ // arrange
77
+ var type = typeof ( DerivedType ) ;
78
+ Type exextedIdType = null ;
79
+
80
+ // act
81
+ var result = TypeLocator . GetIdType ( type ) ;
82
+
83
+ // assert
84
+ Assert . NotNull ( result ) ;
85
+ Assert . False ( result . isJsonApiResource ) ;
86
+ Assert . Equal ( exextedIdType , result . idType ) ;
87
+ }
88
+ }
89
+
90
+
91
+ public interface IGenericInterface < T > { }
92
+ public class Implementation : IGenericInterface < int > { }
93
+
94
+
95
+ public class BaseType < T > { }
96
+ public class DerivedType : BaseType < int > { }
97
+
98
+ public class Model : Identifiable { }
99
+ }
0 commit comments