Tests written for service info persistence.
Class names also changed.
This commit is contained in:
		@@ -0,0 +1,95 @@
 | 
			
		||||
using System.Collections;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using System.IO;
 | 
			
		||||
using GameServiceWarden.Core.Games;
 | 
			
		||||
using GameServiceWarden.Core.Persistence;
 | 
			
		||||
using GameServiceWarden.Core.Tests.Modules;
 | 
			
		||||
using GameServiceWarden.Core.Tests.Modules.Games;
 | 
			
		||||
using GameServiceWarden.ModuleAPI;
 | 
			
		||||
using Xunit;
 | 
			
		||||
 | 
			
		||||
namespace GameServiceWarden.Core.Tests.Persistence
 | 
			
		||||
{
 | 
			
		||||
    public class PersistedGameServiceInfosTest
 | 
			
		||||
    {
 | 
			
		||||
        //MethodTested_ScenarioTested_ExpectedBehavior
 | 
			
		||||
        [Fact]
 | 
			
		||||
        public void GetPathForKey_PathGen_ExpectedPathResult()
 | 
			
		||||
        {
 | 
			
		||||
            //Given
 | 
			
		||||
            const string TEST_DIR = "services";
 | 
			
		||||
            const string MODULE_NAME = "fake_module";
 | 
			
		||||
            const string ASSEMBLY_NAME = "fake_assembly";
 | 
			
		||||
            const string SERVICE_NAME = "fake_service";
 | 
			
		||||
            FakePersistence<IReadOnlyDictionary<string, IGameServiceModule>> stubModulesPersistence = new FakePersistence<IReadOnlyDictionary<string, IGameServiceModule>>();
 | 
			
		||||
            Dictionary<string, IGameServiceModule> stubAssemblyDict = new Dictionary<string, IGameServiceModule>();
 | 
			
		||||
            FakeGameServiceModule stubGameServiceModule = new FakeGameServiceModule();
 | 
			
		||||
 | 
			
		||||
            stubAssemblyDict[MODULE_NAME] = stubGameServiceModule;
 | 
			
		||||
            stubModulesPersistence[ASSEMBLY_NAME] = stubAssemblyDict;
 | 
			
		||||
 | 
			
		||||
            PersistedGameServiceInfos persistedGameServices = new PersistedGameServiceInfos(TEST_DIR, stubModulesPersistence);
 | 
			
		||||
 | 
			
		||||
            //Then
 | 
			
		||||
            Assert.True(persistedGameServices.GetPathForKey(SERVICE_NAME).Equals(Path.Combine(TEST_DIR, SERVICE_NAME)));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [Fact]
 | 
			
		||||
        public void Save_SavingService_FileCreated()
 | 
			
		||||
        {
 | 
			
		||||
            //Given
 | 
			
		||||
            const string TEST_DIR = "services";
 | 
			
		||||
            const string MODULE_NAME = "fake_module";
 | 
			
		||||
            const string ASSEMBLY_NAME = "fake_assembly";
 | 
			
		||||
            const string SERVICE_NAME = "fake_service";
 | 
			
		||||
            FakePersistence<IReadOnlyDictionary<string, IGameServiceModule>> stubModulesPersistence = new FakePersistence<IReadOnlyDictionary<string, IGameServiceModule>>();
 | 
			
		||||
            Dictionary<string, IGameServiceModule> stubAssemblyDict = new Dictionary<string, IGameServiceModule>();
 | 
			
		||||
            FakeGameServiceModule stubGameServiceModule = new FakeGameServiceModule();
 | 
			
		||||
 | 
			
		||||
            stubAssemblyDict[MODULE_NAME] = stubGameServiceModule;
 | 
			
		||||
            stubModulesPersistence[ASSEMBLY_NAME] = stubAssemblyDict;
 | 
			
		||||
 | 
			
		||||
            PersistedGameServiceInfos persistedGameServiceInfos = new PersistedGameServiceInfos(TEST_DIR, stubModulesPersistence);
 | 
			
		||||
 | 
			
		||||
            GameServiceInfo stubGameServiceInfo = new GameServiceInfo(stubModulesPersistence[ASSEMBLY_NAME][MODULE_NAME].InstantiateGameService(persistedGameServiceInfos.GetPathForKey(SERVICE_NAME), true), MODULE_NAME, ASSEMBLY_NAME);
 | 
			
		||||
            //When
 | 
			
		||||
            persistedGameServiceInfos[SERVICE_NAME] = stubGameServiceInfo;
 | 
			
		||||
            //Then
 | 
			
		||||
            Assert.True(Directory.Exists(TEST_DIR));
 | 
			
		||||
            Assert.True(Directory.Exists(persistedGameServiceInfos.GetPathForKey(SERVICE_NAME)));
 | 
			
		||||
            string[] files = Directory.GetFiles(persistedGameServiceInfos.GetPathForKey(SERVICE_NAME));
 | 
			
		||||
            Assert.True(files.Length == 1);
 | 
			
		||||
            Assert.StartsWith(SERVICE_NAME, Path.GetFileName(files[0]));
 | 
			
		||||
 | 
			
		||||
            Directory.Delete(TEST_DIR, true);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        [Fact]
 | 
			
		||||
        public void Save_ReadingService_MetadataRead()
 | 
			
		||||
        {
 | 
			
		||||
            //Given
 | 
			
		||||
            const string TEST_DIR = "services";
 | 
			
		||||
            const string MODULE_NAME = "fake_module";
 | 
			
		||||
            const string ASSEMBLY_NAME = "fake_assembly";
 | 
			
		||||
            const string SERVICE_NAME = "fake_service";
 | 
			
		||||
            FakePersistence<IReadOnlyDictionary<string, IGameServiceModule>> stubModulesPersistence = new FakePersistence<IReadOnlyDictionary<string, IGameServiceModule>>();
 | 
			
		||||
            Dictionary<string, IGameServiceModule> stubAssemblyDict = new Dictionary<string, IGameServiceModule>();
 | 
			
		||||
            FakeGameServiceModule stubGameServiceModule = new FakeGameServiceModule();
 | 
			
		||||
 | 
			
		||||
            stubAssemblyDict[MODULE_NAME] = stubGameServiceModule;
 | 
			
		||||
            stubModulesPersistence[ASSEMBLY_NAME] = stubAssemblyDict;
 | 
			
		||||
 | 
			
		||||
            PersistedGameServiceInfos persistedGameServices = new PersistedGameServiceInfos(TEST_DIR, stubModulesPersistence);
 | 
			
		||||
 | 
			
		||||
            GameServiceInfo stubGameServiceInfo = new GameServiceInfo(stubModulesPersistence[ASSEMBLY_NAME][MODULE_NAME].InstantiateGameService(persistedGameServices.GetPathForKey(SERVICE_NAME), true), MODULE_NAME, ASSEMBLY_NAME);
 | 
			
		||||
            persistedGameServices[SERVICE_NAME] = stubGameServiceInfo;
 | 
			
		||||
            //When
 | 
			
		||||
            GameServiceInfo loadedService = persistedGameServices[SERVICE_NAME];
 | 
			
		||||
            //Then
 | 
			
		||||
            Assert.True(loadedService.ModuleName.Equals(MODULE_NAME));
 | 
			
		||||
            Assert.True(loadedService.GetAssemblyName().Equals(ASSEMBLY_NAME));
 | 
			
		||||
 | 
			
		||||
            Directory.Delete(TEST_DIR, true);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user