private void TestSagaDefinition <TSagaType>(ModuleDefinition moduleToUse = null)
    {
        moduleToUse = moduleToUse ?? module;

        var dataType     = moduleToUse.GetTypeDefinition <TSagaType>();
        var instructions = InstructionAnalyzer.GetConfigureHowToFindSagaInstructions(dataType);

        var results = new SagaInspectionResults
        {
            HasUnmanagedCalls  = InstructionAnalyzer.CallsUnmanagedMethods(instructions),
            HasUnexpectedCalls = InstructionAnalyzer.CallsUnexpectedMethods(instructions),
            HasBranchingLogic  = InstructionAnalyzer.ContainsBranchingLogic(instructions)
        };

        try
        {
            SagaDefinitionReader.TryGetSagaDefinition(dataType, out results.SagaDefinition);
        }
        catch (Exception x)
        {
            results.Exception = x.Message;
        }

        Approver.Verify(results);
    }
Example #2
0
    void TestSagaDefinition <TSagaType>(ModuleDefinition moduleToUse = null)
    {
#pragma warning disable IDE0079 // Remove unnecessary suppression
#pragma warning disable IDE0054 //False positive
        moduleToUse = moduleToUse ?? module;
#pragma warning restore IDE0054 //False positive
#pragma warning restore IDE0079 // Remove unnecessary suppression

        var dataType     = moduleToUse.GetTypeDefinition <TSagaType>();
        var instructions = InstructionAnalyzer.GetConfigureHowToFindSagaInstructions(dataType);

        var results = new SagaInspectionResults
        {
            HasUnmanagedCalls  = InstructionAnalyzer.CallsUnmanagedMethods(instructions),
            HasUnexpectedCalls = InstructionAnalyzer.CallsUnexpectedMethods(instructions),
            HasBranchingLogic  = InstructionAnalyzer.ContainsBranchingLogic(instructions)
        };

        try
        {
            SagaDefinitionReader.TryGetSagaDefinition(dataType, out results.SagaDefinition);
        }
        catch (Exception x)
        {
            results.Exception = x.Message;
        }

        Approver.Verify(results);
    }
Example #3
0
    public void WithStatementBodyProperty()
    {
        var sagaType = module.GetTypeDefinition <WithStatementBodyPropertySaga>();

        SagaDefinitionReader.TryGetSqlSagaDefinition(sagaType, out var definition);
        ObjectApprover.VerifyWithJson(definition);
    }
Example #4
0
    public IList <SagaDefinition> GetSagas(Action <string, string> logger = null)
    {
        var sagas  = new List <SagaDefinition>();
        var errors = new List <Exception>();

        foreach (var type in module.AllClasses())
        {
            try
            {
                if (SagaDefinitionReader.TryGetSagaDefinition(type, out var definition))
                {
                    sagas.Add(definition);
                }
            }
            catch (ErrorsException exception)
            {
                logger?.Invoke(exception.Message, type.FullName);
                errors.Add(new Exception($"Error in '{type.FullName}' (Filename='{type.GetFileName()}'). Error: {exception.Message}", exception));
            }
        }

        if (errors.Count > 0 && logger == null)
        {
            throw new AggregateException(errors);
        }

        return(sagas);
    }
    public void WithNoCorrelation()
    {
        var sagaType = module.GetTypeDefinition <WithNoCorrelationSaga>();

        SagaDefinitionReader.TryGetSagaDefinition(sagaType, out var definition);
        Assert.IsNotNull(definition);
        Approver.Verify(definition);
    }
    public void WithTableSuffix()
    {
        var sagaType = module.GetTypeDefinition <TableSuffixSaga>();

        SagaDefinitionReader.TryGetSagaDefinition(sagaType, out var definition);
        Assert.IsNotNull(definition);
        Approver.Verify(definition);
    }
Example #7
0
    public void WithNoCorrelation()
    {
        var            sagaType = module.GetTypeDefinition <WithNoCorrelationSaga>();
        SagaDefinition definition;

        SagaDefinitionReader.TryGetSqlSagaDefinition(sagaType, out definition);
        ObjectApprover.VerifyWithJson(definition);
    }
Example #8
0
    public void WithTableSuffix()
    {
        var            sagaType = module.GetTypeDefinition <TableSuffixSaga>();
        SagaDefinition definition;

        SagaDefinitionReader.TryGetSqlSagaDefinition(sagaType, out definition);
        ObjectApprover.VerifyWithJson(definition);
    }
    public void WithStatementBodyProperty()
    {
        var sagaType = module.GetTypeDefinition <WithStatementBodyPropertySaga>();

        SagaDefinitionReader.TryGetSagaDefinition(sagaType, out var definition);
        Assert.IsNotNull(definition);
        Approver.Verify(definition);
    }
    public void Simple()
    {
        var sagaType = module.GetTypeDefinition <SimpleSaga>();

        SagaDefinitionReader.TryGetSagaDefinition(sagaType, out var definition);

        Assert.IsNotNull(definition);
        Approver.Verify(definition);
    }
    public void WithStatementBodyProperty()
    {
        var sagaType = module.GetTypeDefinition <WithStatementBodyPropertySaga>();

        SagaDefinitionReader.TryGetSqlSagaDefinition(sagaType, out var definition);
        Assert.IsNotNull(definition);
#if NET452
        ObjectApprover.VerifyWithJson(definition);
#endif
    }
    public void WithNoCorrelation()
    {
        var sagaType = module.GetTypeDefinition <WithNoCorrelationSaga>();

        SagaDefinitionReader.TryGetSqlSagaDefinition(sagaType, out var definition);
        Assert.IsNotNull(definition);
#if NET452
        ObjectApprover.VerifyWithJson(definition);
#endif
    }
Example #13
0
    public void ThrowIfAttributeExists()
    {
        var path             = Path.Combine(TestContext.CurrentContext.TestDirectory, "ScriptBuilder.Tests.dll");
        var readerParameters = new ReaderParameters(ReadingMode.Deferred);
        var module           = ModuleDefinition.ReadModule(path, readerParameters);
        var dataType         = module.GetTypeDefinition <SqlSagaWithAttribute>();

        var ex = Assert.Throws <Exception>(() => SagaDefinitionReader.TryGetSagaDefinition(dataType, out _));

        Assert.IsTrue(ex.Message.Contains("attribute is invalid"));
    }
Example #14
0
    public void NonSqlSaga()
    {
        var            sagaType = module.GetTypeDefinition <NonSqlSagaSaga>();
        SagaDefinition definition;
        var            exception = Assert.Throws <ErrorsException>(() =>
        {
            SagaDefinitionReader.TryGetSqlSagaDefinition(sagaType, out definition);
        });

        Approvals.Verify(exception.Message);
    }
    public void Abstract()
    {
        var sagaType  = module.GetTypeDefinition <AbstractSaga>();
        var exception = Assert.Throws <ErrorsException>(() =>
        {
            SagaDefinitionReader.TryGetSagaDefinition(sagaType, out _);
        });

        Assert.IsNotNull(exception.Message);
        Approver.Verify(exception.Message);
    }
    public void NonSqlSaga()
    {
        var sagaType  = module.GetTypeDefinition <NonSqlSagaSaga>();
        var exception = Assert.Throws <ErrorsException>(() =>
        {
            SagaDefinitionReader.TryGetSqlSagaDefinition(sagaType, out SagaDefinition _);
        });

        Assert.IsNotNull(exception.Message);
#if NET452
        Approvals.Verify(exception.Message);
#endif
    }
    public IEnumerable <SagaDefinition> GetSagas(Action <ErrorsException, TypeDefinition> logError)
    {
        var sagas = new List <SagaDefinition>();

        foreach (var type in module.AllClasses())
        {
            try
            {
                if (SagaDefinitionReader.TryGetSqlSagaDefinition(type, out var definition))
                {
                    sagas.Add(definition);
                }
            }
            catch (ErrorsException exception)
            {
                logError(exception, type);
            }
        }
        return(sagas);
    }