/// <summary> /// Get scenario of specified type from data session /// </summary> /// <typeparam name="TScenario">Type of scenario</typeparam> /// <param name="instance">Instance</param> /// <returns>Returns scenario</returns> public static TScenario GetScenario <TScenario>(this IDataSession instance) { //Arguments validation if (instance == null) { throw new ArgumentNullException(nameof(instance)); } //Try to cast to IMockDataSession IMockDataSession mockupSession = instance.AsMockDataSession(); //Get scenario from data session IScenario scenarioFromDataSession = mockupSession.GetScenario(); //Try cast of scenario to provided type if (!(scenarioFromDataSession is TScenario castedScenario)) { throw new InvalidCastException("Scenario contained on data session is of " + $"type '{scenarioFromDataSession.GetType().FullName}' and cannot be converted " + $"to type '{typeof(TScenario).FullName}'."); } //Return scenario return(castedScenario); }
/// <summary> /// Constructor /// </summary> /// <param name="dataSession">Active data session</param> /// <param name="entitiesExpression">Entities expression</param> protected MockRepositoryBase(IDataSession dataSession, Func <TScenarioInterface, IList <TEntity> > entitiesExpression) { //Arguments validation if (dataSession == null) { throw new ArgumentNullException(nameof(dataSession)); } //Convert to IMockDataSession var mockupSession = dataSession.AsMockDataSession(); //Get scenario from data session IScenario scenarioFromDataSession = mockupSession.GetScenario(); //Try cast of scenario to provided interface if (!(scenarioFromDataSession is TScenarioInterface castedScenario)) { throw new InvalidCastException("Scenario contained on data session is of " + $"type '{scenarioFromDataSession.GetType().FullName}' and cannot be converted " + $"to type '{typeof(TScenarioInterface).FullName}'."); } //Set data session and scenario DataSession = mockupSession; Scenario = castedScenario; //Initialize working mocked entities MockedEntities = entitiesExpression(Scenario); }