public static async Task <EditSession> GetCustomSession(Query q, EditTableMetadata etm) { // Step 1) Create the Session object // Mock metadata factory Mock <IEditMetadataFactory> metaFactory = new Mock <IEditMetadataFactory>(); metaFactory .Setup(f => f.GetObjectMetadata(It.IsAny <DbConnection>(), It.IsAny <string[]>(), It.IsAny <string>())) .Returns(etm); EditSession session = new EditSession(metaFactory.Object); // Step 2) Initialize the Session // Mock connector that does nothing EditSession.Connector connector = () => Task.FromResult <DbConnection>(null); // Mock query runner that returns the query we were provided EditSession.QueryRunner queryRunner = (s) => Task.FromResult(new EditSession.EditSessionQueryExecutionState(q)); // Initialize session.Initialize(BasicInitializeParameters, connector, queryRunner, () => Task.FromResult(0), (e) => Task.FromResult(0)); await session.InitializeTask; return(session); }
internal async Task HandleInitializeRequest(EditInitializeParams initParams, RequestContext <EditInitializeResult> requestContext) { Func <Exception, Task> executionFailureHandler = (e) => SendSessionReadyEvent(requestContext, initParams.OwnerUri, false, e.Message); Func <Task> executionSuccessHandler = () => SendSessionReadyEvent(requestContext, initParams.OwnerUri, true, null); EditSession.Connector connector = () => connectionService.GetOrOpenConnection(initParams.OwnerUri, ConnectionType.Edit, alwaysPersistSecurity: true); EditSession.QueryRunner queryRunner = q => SessionInitializeQueryRunner(initParams.OwnerUri, requestContext, q); try { // Make sure we have info to process this request Validate.IsNotNullOrWhitespaceString(nameof(initParams.OwnerUri), initParams.OwnerUri); Validate.IsNotNullOrWhitespaceString(nameof(initParams.ObjectName), initParams.ObjectName); Validate.IsNotNullOrWhitespaceString(nameof(initParams.ObjectType), initParams.ObjectType); // Create a session and add it to the session list EditSession session = new EditSession(metadataFactory); if (!ActiveSessions.TryAdd(initParams.OwnerUri, session)) { throw new InvalidOperationException(SR.EditDataSessionAlreadyExists); } // Initialize the session session.Initialize(initParams, connector, queryRunner, executionSuccessHandler, executionFailureHandler); // Send the result await requestContext.SendResult(new EditInitializeResult()); } catch (Exception e) { await requestContext.SendError(e.Message); } }
public void InitializeNullParams(EditInitializeParams initParams, EditSession.Connector c, EditSession.QueryRunner qr, Func <Task> sh, Func <Exception, Task> fh) { // Setup: // ... Create a session that hasn't been initialized Mock <IEditMetadataFactory> emf = new Mock <IEditMetadataFactory>(); EditSession s = new EditSession(emf.Object); // If: I initialize it with a missing parameter // Then: It should throw an exception Assert.ThrowsAny <ArgumentException>(() => s.Initialize(initParams, c, qr, sh, fh)); }