88 using Microsoft . Extensions . DependencyInjection ;
99 using Services ;
1010 using System ;
11- using System . Collections . Generic ;
1211 using System . Linq ;
13- using System . Reflection ;
1412 using Transactions ;
1513 using Xunit ;
1614 using Xunit . Abstractions ;
@@ -27,12 +25,12 @@ public void DependencyInjectionCanConfigureRepositoriesServices()
2725 services . AddRepositories < MicrosoftDependencyInjectionTests > ( options =>
2826 {
2927 options . UseInMemoryDatabase ( Guid . NewGuid ( ) . ToString ( ) , ignoreTransactionWarning : true ) ;
30- options . UseLoggerProvider ( TestXUnitLoggerProvider ) ;
3128 } ) ;
3229
3330 var provider = services . BuildServiceProvider ( ) ;
3431
3532 Assert . NotNull ( provider . GetService < TestRepositoryInterceptorWithDependencyInjectedServices > ( ) ) ;
33+ Assert . NotNull ( provider . GetService < TestLoggerProvider > ( ) ) ;
3634 Assert . NotNull ( provider . GetService < TestRepositoryTimeStampInterceptor > ( ) ) ;
3735 Assert . NotNull ( provider . GetService < TestRepositoryInterceptor > ( ) ) ;
3836 Assert . Equal ( 3 , provider . GetServices < IRepositoryInterceptor > ( ) . Count ( ) ) ;
@@ -68,10 +66,10 @@ public void DependencyInjectionCanConfigureServices()
6866 var services = new ServiceCollection ( ) ;
6967
7068 services . AddRepositories < MicrosoftDependencyInjectionTests > ( options =>
71- {
72- options . UseInMemoryDatabase ( Guid . NewGuid ( ) . ToString ( ) , ignoreTransactionWarning : true ) ;
73- options . UseLoggerProvider ( TestXUnitLoggerProvider ) ;
74- } ) ;
69+ {
70+ options . UseInMemoryDatabase ( Guid . NewGuid ( ) . ToString ( ) , ignoreTransactionWarning : true ) ;
71+ options . UseLoggerProvider ( TestXUnitLoggerProvider ) ;
72+ } ) ;
7573
7674 var provider = services . BuildServiceProvider ( ) ;
7775
@@ -118,11 +116,9 @@ public void DependencyInjectionCanConfigureRepositoriesWithInterceptorsFromOptio
118116
119117 var provider = services . BuildServiceProvider ( ) ;
120118
121- var repo = new Repository < Customer > ( provider . GetService < IRepositoryOptions > ( ) ) ;
122-
123- var configuredInterceptors = GetLazyInterceptorsOptionsFromPrivateField < InternalRepositoryBase < Customer > > ( repo ) ;
119+ var repoOptions = provider . GetService < IRepositoryOptions > ( ) ;
124120
125- Assert . Equal ( 3 , configuredInterceptors . Count ( ) ) ;
121+ Assert . Equal ( 3 , repoOptions . Interceptors . Count ( ) ) ;
126122 Assert . Equal ( 3 , provider . GetServices < IRepositoryInterceptor > ( ) . Count ( ) ) ;
127123 Assert . NotNull ( provider . GetService < TestRepositoryInterceptorWithDependencyInjectedServices > ( ) ) ;
128124
@@ -137,12 +133,12 @@ public void DependencyInjectionCanConfigureRepositoriesWithInterceptorsFromOptio
137133 Assert . Null ( registeredInterceptor2 . P1 ) ;
138134 Assert . False ( registeredInterceptor2 . P2 ) ;
139135
140- var configueredInterceptor1 = ( TestRepositoryTimeStampInterceptor ) configuredInterceptors [ typeof ( TestRepositoryTimeStampInterceptor ) ] . Value ;
136+ var configueredInterceptor1 = ( TestRepositoryTimeStampInterceptor ) repoOptions . Interceptors [ typeof ( TestRepositoryTimeStampInterceptor ) ] . Value ;
141137
142138 Assert . NotNull ( configueredInterceptor1 ) ;
143139 Assert . Equal ( "RANDOM USER" , configueredInterceptor1 . User ) ;
144140
145- var configueredInterceptor2 = ( TestRepositoryInterceptor ) configuredInterceptors [ typeof ( TestRepositoryInterceptor ) ] . Value ;
141+ var configueredInterceptor2 = ( TestRepositoryInterceptor ) repoOptions . Interceptors [ typeof ( TestRepositoryInterceptor ) ] . Value ;
146142
147143 Assert . NotNull ( configueredInterceptor2 ) ;
148144 Assert . Equal ( "RANDOM P1" , configueredInterceptor2 . P1 ) ;
@@ -162,22 +158,36 @@ public void DependencyInjectionCanConfigureRepositoriesWithScannedInterceptors()
162158
163159 var provider = services . BuildServiceProvider ( ) ;
164160
165- var repo = new Repository < Customer > ( provider . GetService < IRepositoryOptions > ( ) ) ;
161+ var repoOptions = provider . GetService < IRepositoryOptions > ( ) ;
166162
167- Assert . Equal ( 3 , GetLazyInterceptorsOptionsFromPrivateField < InternalRepositoryBase < Customer > > ( repo ) . Count ( ) ) ;
163+ Assert . Equal ( 3 , repoOptions . Interceptors . Count ( ) ) ;
168164 Assert . Equal ( 3 , provider . GetServices < IRepositoryInterceptor > ( ) . Count ( ) ) ;
169165 Assert . NotNull ( provider . GetService < TestRepositoryInterceptorWithDependencyInjectedServices > ( ) ) ;
170166 Assert . NotNull ( provider . GetService < TestRepositoryTimeStampInterceptor > ( ) ) ;
171167 Assert . NotNull ( provider . GetService < TestRepositoryInterceptor > ( ) ) ;
172168 }
173169
174- private static IReadOnlyDictionary < Type , Lazy < IRepositoryInterceptor > > GetLazyInterceptorsOptionsFromPrivateField < T > ( object obj )
170+ [ Fact ]
171+ public void DependencyInjectionCanConfigureLogginProviderWithScannedLogger ( )
175172 {
176- var options = ( IRepositoryOptions ) typeof ( T )
177- . GetField ( "_options" , BindingFlags . NonPublic | BindingFlags . Instance )
178- . GetValue ( obj ) ;
173+ var services = new ServiceCollection ( ) ;
174+
175+ services . AddRepositories < MicrosoftDependencyInjectionTests > ( options =>
176+ {
177+ options . UseInMemoryDatabase ( Guid . NewGuid ( ) . ToString ( ) , ignoreTransactionWarning : true ) ;
178+ options . UseLoggerProvider ( TestXUnitLoggerProvider ) ;
179+ } ) ;
180+
181+ var provider = services . BuildServiceProvider ( ) ;
182+ var repoOptions = provider . GetService < IRepositoryOptions > ( ) ;
183+
184+ Assert . Equal ( typeof ( TestXUnitLoggerProvider ) , repoOptions . LoggerProvider . GetType ( ) ) ;
179185
180- return options . Interceptors ;
186+ Assert . Equal ( 3 , repoOptions . Interceptors . Count ( ) ) ;
187+ Assert . Equal ( 3 , provider . GetServices < IRepositoryInterceptor > ( ) . Count ( ) ) ;
188+ Assert . NotNull ( provider . GetService < TestRepositoryInterceptorWithDependencyInjectedServices > ( ) ) ;
189+ Assert . NotNull ( provider . GetService < TestRepositoryTimeStampInterceptor > ( ) ) ;
190+ Assert . NotNull ( provider . GetService < TestRepositoryInterceptor > ( ) ) ;
181191 }
182192 }
183193}
0 commit comments