11using FluentAssertions ;
22using Microsoft . Extensions . DependencyInjection ;
33using Serilog . Ui . Core ;
4+ using Serilog . Ui . Core . Extensions ;
5+ using Serilog . Ui . Core . Models . Options ;
46using Serilog . Ui . SqliteDataProvider ;
5- using Serilog . Ui . Web ;
7+ using Serilog . Ui . SqliteDataProvider . Extensions ;
8+ using Serilog . Ui . Web . Extensions ;
69using System ;
710using System . Collections . Generic ;
11+ using System . Linq ;
812using Xunit ;
913
10- namespace MySql . Tests . Extensions
14+ namespace Sqlite . Tests . Extensions
1115{
1216 [ Trait ( "DI-DataProvider" , "Sqlite" ) ]
1317 public class SerilogUiOptionBuilderExtensionsTest
@@ -22,9 +26,9 @@ public SerilogUiOptionBuilderExtensionsTest()
2226 [ Fact ]
2327 public void It_registers_provider_and_dependencies ( )
2428 {
25- serviceCollection . AddSerilogUi ( ( builder ) =>
29+ serviceCollection . AddSerilogUi ( builder =>
2630 {
27- builder . UseSqliteServer ( "https://mysqlserver .example.com" , "my-table" ) ;
31+ builder . UseSqliteServer ( opt => opt . WithConnectionString ( "https://sqliteserver .example.com" ) . WithTable ( "my-table" ) ) ;
2832 } ) ;
2933 var services = serviceCollection . BuildServiceProvider ( ) ;
3034
@@ -35,17 +39,52 @@ public void It_registers_provider_and_dependencies()
3539 provider . Should ( ) . NotBeNull ( ) . And . BeOfType < SqliteDataProvider > ( ) ;
3640 }
3741
42+ [ Fact ]
43+ public void It_registers_multiple_providers ( )
44+ {
45+ serviceCollection . AddSerilogUi ( builder =>
46+ {
47+ builder . UseSqliteServer ( opt => opt . WithConnectionString ( "https://sqliteserver.example.com" ) . WithTable ( "my-table" ) ) ;
48+ builder . UseSqliteServer ( opt => opt . WithConnectionString ( "https://sqliteserver2.example.com" ) . WithTable ( "my-table2" ) ) ;
49+ } ) ;
50+
51+ var serviceProvider = serviceCollection . BuildServiceProvider ( ) ;
52+ using var scope = serviceProvider . CreateScope ( ) ;
53+
54+ var providers = scope . ServiceProvider . GetServices < IDataProvider > ( ) . ToList ( ) ;
55+ providers . Should ( ) . HaveCount ( 2 ) . And . AllBeOfType < SqliteDataProvider > ( ) ;
56+ providers . Select ( p => p . Name ) . Should ( ) . OnlyHaveUniqueItems ( ) ;
57+
58+ var providersOptions = serviceProvider . GetRequiredService < ProvidersOptions > ( ) ;
59+ providersOptions . DisabledSortProviderNames . Should ( ) . BeEmpty ( ) ;
60+ providersOptions . ExceptionAsStringProviderNames . Should ( ) . BeEmpty ( ) ;
61+ }
62+
3863 [ Fact ]
3964 public void It_throws_on_invalid_registration ( )
4065 {
4166 var nullables = new List < Func < IServiceCollection > >
4267 {
43- ( ) => serviceCollection . AddSerilogUi ( ( builder ) => builder . UseSqliteServer ( null , "name" ) ) ,
44- ( ) => serviceCollection . AddSerilogUi ( ( builder ) => builder . UseSqliteServer ( " " , "name" ) ) ,
45- ( ) => serviceCollection . AddSerilogUi ( ( builder ) => builder . UseSqliteServer ( "" , "name" ) ) ,
46- ( ) => serviceCollection . AddSerilogUi ( ( builder ) => builder . UseSqliteServer ( "name" , null ) ) ,
47- ( ) => serviceCollection . AddSerilogUi ( ( builder ) => builder . UseSqliteServer ( "name" , " " ) ) ,
48- ( ) => serviceCollection . AddSerilogUi ( ( builder ) => builder . UseSqliteServer ( "name" , "" ) ) ,
68+ ( ) => serviceCollection . AddSerilogUi ( ( builder ) => builder . UseSqliteServer ( _ => { } ) ) ,
69+ ( ) => serviceCollection . AddSerilogUi ( builder => builder . UseSqliteServer ( opt =>
70+ opt . WithConnectionString ( null ! ) . WithTable ( "my-table" ) ) ) ,
71+ ( ) => serviceCollection . AddSerilogUi ( builder => builder . UseSqliteServer ( opt =>
72+ opt . WithConnectionString ( " " ) . WithTable ( "my-table" ) ) ) ,
73+ ( ) => serviceCollection . AddSerilogUi ( builder => builder . UseSqliteServer ( opt =>
74+ opt . WithConnectionString ( string . Empty ) . WithTable ( "my-table" ) ) ) ,
75+ ( ) => serviceCollection . AddSerilogUi ( builder => builder . UseSqliteServer ( opt =>
76+ opt . WithConnectionString ( "name" ) . WithTable ( null ! ) ) ) ,
77+ ( ) => serviceCollection . AddSerilogUi ( builder => builder . UseSqliteServer ( opt =>
78+ opt . WithConnectionString ( "name" ) . WithTable ( " " ) ) ) ,
79+ ( ) => serviceCollection . AddSerilogUi ( builder => builder . UseSqliteServer ( opt =>
80+ opt . WithConnectionString ( "name" ) . WithTable ( string . Empty ) ) ) ,
81+ // if user sets an invalid schema, default value will be overridden an validation should fail
82+ ( ) => serviceCollection . AddSerilogUi ( builder =>
83+ builder . UseSqliteServer ( opt => opt . WithConnectionString ( "conn" ) . WithTable ( "ok" ) . WithSchema ( null ! ) ) ) ,
84+ ( ) => serviceCollection . AddSerilogUi ( builder =>
85+ builder . UseSqliteServer ( opt => opt . WithConnectionString ( "conn" ) . WithTable ( "ok" ) . WithSchema ( " " ) ) ) ,
86+ ( ) => serviceCollection . AddSerilogUi ( builder =>
87+ builder . UseSqliteServer ( opt => opt . WithConnectionString ( "conn" ) . WithTable ( "ok" ) . WithSchema ( string . Empty ) ) ) ,
4988 } ;
5089
5190 foreach ( var nullable in nullables )
0 commit comments