Add a unit test project and set up a test in memory DB
This commit is contained in:
		
							parent
							
								
									90adbcfb7c
								
							
						
					
					
						commit
						4e2b4d3806
					
				| 
						 | 
				
			
			@ -16,6 +16,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
 | 
			
		|||
		.gitignore = .gitignore
 | 
			
		||||
	EndProjectSection
 | 
			
		||||
EndProject
 | 
			
		||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Start_Tests", "Start_Tests\Start_Tests.csproj", "{74F33155-6FE2-409B-A5AC-52BC7433CE65}"
 | 
			
		||||
EndProject
 | 
			
		||||
Global
 | 
			
		||||
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 | 
			
		||||
		Debug|Any CPU = Debug|Any CPU
 | 
			
		||||
| 
						 | 
				
			
			@ -34,6 +36,10 @@ Global
 | 
			
		|||
		{5F06E094-DDD9-4093-9979-9D9FFED2310F}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
			
		||||
		{5F06E094-DDD9-4093-9979-9D9FFED2310F}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{5F06E094-DDD9-4093-9979-9D9FFED2310F}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
			
		||||
		{74F33155-6FE2-409B-A5AC-52BC7433CE65}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 | 
			
		||||
		{74F33155-6FE2-409B-A5AC-52BC7433CE65}.Debug|Any CPU.Build.0 = Debug|Any CPU
 | 
			
		||||
		{74F33155-6FE2-409B-A5AC-52BC7433CE65}.Release|Any CPU.ActiveCfg = Release|Any CPU
 | 
			
		||||
		{74F33155-6FE2-409B-A5AC-52BC7433CE65}.Release|Any CPU.Build.0 = Release|Any CPU
 | 
			
		||||
	EndGlobalSection
 | 
			
		||||
	GlobalSection(SolutionProperties) = preSolution
 | 
			
		||||
		HideSolutionNode = FALSE
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										20
									
								
								Start_Tests/Start_Tests.csproj
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								Start_Tests/Start_Tests.csproj
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,20 @@
 | 
			
		|||
<Project Sdk="Microsoft.NET.Sdk">
 | 
			
		||||
 | 
			
		||||
  <PropertyGroup>
 | 
			
		||||
    <TargetFramework>net5.0</TargetFramework>
 | 
			
		||||
 | 
			
		||||
    <IsPackable>false</IsPackable>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.9.4" />
 | 
			
		||||
    <PackageReference Include="MSTest.TestAdapter" Version="2.2.3" />
 | 
			
		||||
    <PackageReference Include="MSTest.TestFramework" Version="2.2.3" />
 | 
			
		||||
    <PackageReference Include="coverlet.collector" Version="3.0.2" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <ProjectReference Include="..\Start\Server\Start.Server.csproj" />
 | 
			
		||||
    <ProjectReference Include="..\Start\Shared\Start.Shared.csproj" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
</Project>
 | 
			
		||||
							
								
								
									
										20
									
								
								Start_Tests/UnitTest1.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								Start_Tests/UnitTest1.cs
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,20 @@
 | 
			
		|||
using System;
 | 
			
		||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
 | 
			
		||||
using Start.Server.Models;
 | 
			
		||||
 | 
			
		||||
namespace Start_Tests {
 | 
			
		||||
	[TestClass]
 | 
			
		||||
	public class UnitTest1 : UnitTestWithDb {
 | 
			
		||||
		public TestContext TestContext { get; set; }
 | 
			
		||||
 | 
			
		||||
		[TestMethod]
 | 
			
		||||
		public override void TestDatabaseOK() {
 | 
			
		||||
			base.TestDatabaseOK();
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		[TestMethod]
 | 
			
		||||
		public void TestMethod1() {
 | 
			
		||||
			TestContext.WriteLine("Running TestMethod1 from TestContext");
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										79
									
								
								Start_Tests/UnitTestWithDb.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										79
									
								
								Start_Tests/UnitTestWithDb.cs
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,79 @@
 | 
			
		|||
using System;
 | 
			
		||||
using IdentityServer4.EntityFramework.Options;
 | 
			
		||||
using Microsoft.Data.Sqlite;
 | 
			
		||||
using Microsoft.EntityFrameworkCore;
 | 
			
		||||
using Microsoft.Extensions.Options;
 | 
			
		||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
 | 
			
		||||
using Start.Server.Data;
 | 
			
		||||
using Start.Server.Models;
 | 
			
		||||
 | 
			
		||||
namespace Start_Tests {
 | 
			
		||||
	public class UnitTestWithDb : IDisposable {
 | 
			
		||||
		private const string InMemoryConnectionString = "DataSource=:memory:";
 | 
			
		||||
		private SqliteConnection _connection;
 | 
			
		||||
 | 
			
		||||
		protected readonly ApplicationDbContext _db;
 | 
			
		||||
 | 
			
		||||
		public UnitTestWithDb() {
 | 
			
		||||
			_connection = new SqliteConnection(InMemoryConnectionString);
 | 
			
		||||
			_connection.Open();
 | 
			
		||||
 | 
			
		||||
			var options = new DbContextOptionsBuilder<ApplicationDbContext>()
 | 
			
		||||
				.UseSqlite(_connection)
 | 
			
		||||
				.Options;
 | 
			
		||||
 | 
			
		||||
			this._db = new ApplicationDbContext(options,
 | 
			
		||||
				Options.Create(new OperationalStoreOptions()));
 | 
			
		||||
			this._db.Database.EnsureCreated();
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		protected void ResetDb() {
 | 
			
		||||
			_db.Database.EnsureDeleted();
 | 
			
		||||
			_db.Database.EnsureCreated();
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		protected void FillDbTestData() {
 | 
			
		||||
			ApplicationUser testUser = new ApplicationUser {
 | 
			
		||||
				Id = "test_user",
 | 
			
		||||
				UserName = "test_user"
 | 
			
		||||
			};
 | 
			
		||||
			_db.Users.Add(testUser);
 | 
			
		||||
			_db.SaveChanges();
 | 
			
		||||
 | 
			
		||||
			BookmarkContainer testContainer = new BookmarkContainer(testUser.Id, "Test Container",
 | 
			
		||||
				0);
 | 
			
		||||
			_db.BookmarkContainers.Add(testContainer);
 | 
			
		||||
			_db.SaveChanges();
 | 
			
		||||
 | 
			
		||||
			BookmarkGroup testGroup = new BookmarkGroup("Test Group", "#000000", 0,
 | 
			
		||||
				testContainer.BookmarkContainerId);
 | 
			
		||||
			_db.BookmarkGroups.Add(testGroup);
 | 
			
		||||
			_db.SaveChanges();
 | 
			
		||||
 | 
			
		||||
			Bookmark testBookmark = new Bookmark("Test Bookmark", "http://example.com",
 | 
			
		||||
				"Test Notes", 0, testGroup.BookmarkGroupId);
 | 
			
		||||
			_db.Bookmarks.Add(testBookmark);
 | 
			
		||||
			_db.SaveChanges();
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		/// <summary>
 | 
			
		||||
		/// Checks the DB connection works. Note that MSTest won't run this - you need to do so in
 | 
			
		||||
		/// inheriting classes like this:
 | 
			
		||||
		///
 | 
			
		||||
		/// <code>
 | 
			
		||||
		/// [TestMethod]
 | 
			
		||||
		/// public override void TestDatabaseOK() {
 | 
			
		||||
		/// 	base.TestDatabaseOK();
 | 
			
		||||
		/// }
 | 
			
		||||
		/// </code>
 | 
			
		||||
		/// </summary>
 | 
			
		||||
		[TestMethod]
 | 
			
		||||
		public virtual void TestDatabaseOK() {
 | 
			
		||||
			Assert.IsTrue(this._db.Database.CanConnect());
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		public void Dispose() {
 | 
			
		||||
			_connection.Close();
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
		Reference in a new issue