88 using InMemory ;
99 using Services ;
1010 using System ;
11- using System . Collections . Generic ;
1211 using System . Linq ;
13- using System . Reflection ;
1412 using Transactions ;
1513 using Unity ;
1614 using Xunit ;
@@ -28,10 +26,10 @@ public void DependencyInjectionCanConfigureRepositoriesServices()
2826 container . RegisterRepositories < MicrosoftDependencyInjectionTests > ( options =>
2927 {
3028 options . UseInMemoryDatabase ( Guid . NewGuid ( ) . ToString ( ) , ignoreTransactionWarning : true ) ;
31- options . UseLoggerProvider ( TestXUnitLoggerProvider ) ;
3229 } ) ;
3330
3431 Assert . NotNull ( container . Resolve < TestRepositoryInterceptorWithDependencyInjectedServices > ( ) ) ;
32+ Assert . NotNull ( container . Resolve < TestLoggerProvider > ( ) ) ;
3533 Assert . NotNull ( container . Resolve < TestRepositoryTimeStampInterceptor > ( ) ) ;
3634 Assert . NotNull ( container . Resolve < TestRepositoryInterceptor > ( ) ) ;
3735 Assert . Equal ( 3 , container . ResolveAll < IRepositoryInterceptor > ( ) . Count ( ) ) ;
@@ -111,11 +109,9 @@ public void DependencyInjectionCanConfigureRepositoriesWithInterceptorsFromOptio
111109 options . UseLoggerProvider ( TestXUnitLoggerProvider ) ;
112110 } ) ;
113111
114- var repo = new Repository < Customer > ( container . Resolve < RepositoryOptions > ( ) ) ;
115-
116- var configuredInterceptors = GetLazyInterceptorsOptionsFromPrivateField < InternalRepositoryBase < Customer > > ( repo ) ;
112+ var repoOptions = container . Resolve < IRepositoryOptions > ( ) ;
117113
118- Assert . Equal ( 3 , configuredInterceptors . Count ( ) ) ;
114+ Assert . Equal ( 3 , repoOptions . Interceptors . Count ( ) ) ;
119115 Assert . Equal ( 3 , container . ResolveAll < IRepositoryInterceptor > ( ) . Count ( ) ) ;
120116 Assert . NotNull ( container . Resolve < TestRepositoryInterceptorWithDependencyInjectedServices > ( ) ) ;
121117
@@ -130,12 +126,12 @@ public void DependencyInjectionCanConfigureRepositoriesWithInterceptorsFromOptio
130126 Assert . Null ( registeredInterceptor2 . P1 ) ;
131127 Assert . False ( registeredInterceptor2 . P2 ) ;
132128
133- var configueredInterceptor1 = ( TestRepositoryTimeStampInterceptor ) configuredInterceptors [ typeof ( TestRepositoryTimeStampInterceptor ) ] . Value ;
129+ var configueredInterceptor1 = ( TestRepositoryTimeStampInterceptor ) repoOptions . Interceptors [ typeof ( TestRepositoryTimeStampInterceptor ) ] . Value ;
134130
135131 Assert . NotNull ( configueredInterceptor1 ) ;
136132 Assert . Equal ( "RANDOM USER" , configueredInterceptor1 . User ) ;
137133
138- var configueredInterceptor2 = ( TestRepositoryInterceptor ) configuredInterceptors [ typeof ( TestRepositoryInterceptor ) ] . Value ;
134+ var configueredInterceptor2 = ( TestRepositoryInterceptor ) repoOptions . Interceptors [ typeof ( TestRepositoryInterceptor ) ] . Value ;
139135
140136 Assert . NotNull ( configueredInterceptor2 ) ;
141137 Assert . Equal ( "RANDOM P1" , configueredInterceptor2 . P1 ) ;
@@ -153,22 +149,35 @@ public void DependencyInjectionCanConfigureRepositoriesWithScannedInterceptors()
153149 options . UseLoggerProvider ( TestXUnitLoggerProvider ) ;
154150 } ) ;
155151
156- var repo = new Repository < Customer > ( container . Resolve < RepositoryOptions > ( ) ) ;
152+ var repoOptions = container . Resolve < IRepositoryOptions > ( ) ;
157153
158- Assert . Equal ( 3 , GetLazyInterceptorsOptionsFromPrivateField < InternalRepositoryBase < Customer > > ( repo ) . Count ( ) ) ;
154+ Assert . Equal ( 3 , repoOptions . Interceptors . Count ( ) ) ;
159155 Assert . Equal ( 3 , container . ResolveAll < IRepositoryInterceptor > ( ) . Count ( ) ) ;
160156 Assert . NotNull ( container . Resolve < TestRepositoryInterceptorWithDependencyInjectedServices > ( ) ) ;
161157 Assert . NotNull ( container . Resolve < TestRepositoryTimeStampInterceptor > ( ) ) ;
162158 Assert . NotNull ( container . Resolve < TestRepositoryInterceptor > ( ) ) ;
163159 }
164160
165- private static IReadOnlyDictionary < Type , Lazy < IRepositoryInterceptor > > GetLazyInterceptorsOptionsFromPrivateField < T > ( object obj )
161+ [ Fact ]
162+ public void DependencyInjectionCanConfigureLogginProviderWithScannedLogger ( )
166163 {
167- var options = ( IRepositoryOptions ) typeof ( T )
168- . GetField ( "_options" , BindingFlags . NonPublic | BindingFlags . Instance )
169- . GetValue ( obj ) ;
164+ var container = new UnityContainer ( ) ;
165+
166+ container . RegisterRepositories < MicrosoftDependencyInjectionTests > ( options =>
167+ {
168+ options . UseInMemoryDatabase ( Guid . NewGuid ( ) . ToString ( ) , ignoreTransactionWarning : true ) ;
169+ options . UseLoggerProvider ( TestXUnitLoggerProvider ) ;
170+ } ) ;
171+
172+ var repoOptions = container . Resolve < IRepositoryOptions > ( ) ;
173+
174+ Assert . Equal ( typeof ( TestXUnitLoggerProvider ) , repoOptions . LoggerProvider . GetType ( ) ) ;
170175
171- return options . Interceptors ;
176+ Assert . Equal ( 3 , repoOptions . Interceptors . Count ( ) ) ;
177+ Assert . Equal ( 3 , container . ResolveAll < IRepositoryInterceptor > ( ) . Count ( ) ) ;
178+ Assert . NotNull ( container . Resolve < TestRepositoryInterceptorWithDependencyInjectedServices > ( ) ) ;
179+ Assert . NotNull ( container . Resolve < TestRepositoryTimeStampInterceptor > ( ) ) ;
180+ Assert . NotNull ( container . Resolve < TestRepositoryInterceptor > ( ) ) ;
172181 }
173182 }
174183}
0 commit comments