11using System ;
2+ using System . Data . Common ;
23using System . Linq ;
4+ using Effort ;
35using Microsoft . VisualStudio . TestTools . UnitTesting ;
46using JSONAPI . EntityFramework . Tests . Models ;
57using FluentAssertions ;
@@ -17,6 +19,11 @@ private class TestDbContext : DbContext
1719 {
1820 public DbSet < Backlink > Backlinks { get ; set ; }
1921 public DbSet < Post > Posts { get ; set ; }
22+
23+ public TestDbContext ( DbConnection conn ) : base ( conn , true )
24+ {
25+
26+ }
2027 }
2128
2229 private class NotAnEntity
@@ -25,42 +32,40 @@ private class NotAnEntity
2532 public string Temporary { get ; set ; }
2633 }
2734
28- private TestDbContext context ;
29- private Backlink b1 , b2 ;
35+ private DbConnection _conn ;
36+ private TestDbContext _context ;
3037
3138 [ TestInitialize ]
3239 public void SetupEntities ( )
3340 {
34- //- See http://stackoverflow.com/a/19130718/489116
35- var instance = System . Data . Entity . SqlServer . SqlProviderServices . Instance ;
36- //-
37-
38- context = new TestDbContext ( ) ;
39- //JSONAPI.EntityFramework.Json.ContractResolver.ObjectContext = context;
40-
41-
42- // Clear it out!
43- foreach ( Backlink o in context . Backlinks ) context . Backlinks . Remove ( o ) ;
44- context . SaveChanges ( ) ;
41+ _conn = DbConnectionFactory . CreateTransient ( ) ;
42+ _context = new TestDbContext ( _conn ) ;
4543
46- b1 = new Backlink
44+ var b1 = new Backlink
4745 {
4846 Url = "http://www.google.com/" ,
4947 Snippet = "1 Results"
5048 } ;
49+ _context . Backlinks . Add ( b1 ) ;
5150
52- context . SaveChanges ( ) ;
51+ _context . SaveChanges ( ) ;
52+ }
53+
54+ [ TestCleanup ]
55+ private void CleanupTest ( )
56+ {
57+ _context . Dispose ( ) ;
5358 }
5459
5560 [ TestMethod ]
5661 public void GetKeyNamesStandardIdTest ( )
5762 {
5863 // Arrange
5964 var mockMetadataManager = new Mock < IMetadataManager > ( MockBehavior . Strict ) ;
60- var materializer = new EntityFrameworkMaterializer ( context , mockMetadataManager . Object ) ;
65+ var materializer = new EntityFrameworkMaterializer ( _context , mockMetadataManager . Object ) ;
6166
6267 // Act
63- IEnumerable < string > keyNames = materializer . GetKeyNames ( typeof ( Post ) ) ;
68+ IEnumerable < string > keyNames = materializer . GetKeyNames ( typeof ( Post ) ) . ToArray ( ) ;
6469
6570 // Assert
6671 keyNames . Count ( ) . Should ( ) . Be ( 1 ) ;
@@ -72,10 +77,10 @@ public void GetKeyNamesNonStandardIdTest()
7277 {
7378 // Arrange
7479 var mockMetadataManager = new Mock < IMetadataManager > ( MockBehavior . Strict ) ;
75- var materializer = new EntityFrameworkMaterializer ( context , mockMetadataManager . Object ) ;
80+ var materializer = new EntityFrameworkMaterializer ( _context , mockMetadataManager . Object ) ;
7681
7782 // Act
78- IEnumerable < string > keyNames = materializer . GetKeyNames ( typeof ( Backlink ) ) ;
83+ IEnumerable < string > keyNames = materializer . GetKeyNames ( typeof ( Backlink ) ) . ToArray ( ) ;
7984
8085 // Assert
8186 keyNames . Count ( ) . Should ( ) . Be ( 1 ) ;
@@ -87,13 +92,10 @@ public void GetKeyNamesNotAnEntityTest()
8792 {
8893 // Arrange
8994 var mockMetadataManager = new Mock < IMetadataManager > ( MockBehavior . Strict ) ;
90- var materializer = new EntityFrameworkMaterializer ( context , mockMetadataManager . Object ) ;
95+ var materializer = new EntityFrameworkMaterializer ( _context , mockMetadataManager . Object ) ;
9196
9297 // Act
93- Action action = ( ) =>
94- {
95- materializer . GetKeyNames ( typeof ( NotAnEntity ) ) ;
96- } ;
98+ Action action = ( ) => materializer . GetKeyNames ( typeof ( NotAnEntity ) ) ;
9799 action . ShouldThrow < ArgumentException > ( ) . Which . Message . Should ( ) . Be ( "The Type NotAnEntity was not found in the DbContext with Type TestDbContext" ) ;
98100 }
99101 }
0 commit comments