Exemple #1
0
 public GeneralLedgerEntryTests(ITestOutputHelper output)
 {
     _writer  = new TestSpecificationTextWriter(new TestOutputHelperTextWriter(output));
     _facts   = new FactRecorder();
     _handler = new GeneralLedgerEntryHandlers(new GeneralLedgerTestRepository(_facts),
                                               new GeneralLedgerEntryTestRepository(_facts),
                                               new ChartOfAccountsTestRepository(_facts));
 }
 public AccountClosingProcessTests()
 {
     _facts   = new FactRecorder();
     _handler = new AccountingPeriodClosingHandlers(
         new GeneralLedgerTestRepository(_facts),
         new GeneralLedgerEntryTestRepository(_facts),
         new ChartOfAccountsTestRepository(_facts),
         _ => false);
 }
Exemple #3
0
 public GeneralLedgerTests()
 {
     _facts   = new FactRecorder();
     _handler = new GeneralLedgerHandlers(
         new GeneralLedgerTestRepository(_facts),
         new GeneralLedgerEntryTestRepository(_facts),
         new ChartOfAccountsTestRepository(_facts));
     _retainedEarnings = new AccountNumber(new Random().Next(3000, 3999));
 }
Exemple #4
0
        public static async Task Assert(this IExceptionCentricTestSpecificationBuilder builder,
                                        IExceptionComparer comparer, object handler, IFactRecorder factRecorder)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }
            if (comparer == null)
            {
                throw new ArgumentNullException(nameof(comparer));
            }
            if (handler == null)
            {
                throw new ArgumentNullException(nameof(handler));
            }
            if (factRecorder == null)
            {
                throw new ArgumentNullException(nameof(factRecorder));
            }
            var specification = builder.Build();
            var runner        = new ExceptionCentricTestSpecificationRunner(comparer, handler, factRecorder);
            var result        = await runner.Run(specification);

            if (!result.Failed)
            {
                return;
            }
            if (result.ButException.HasValue)
            {
                await using var writer = new StringWriter();
                writer.WriteLine("  Expected: {0},", result.Specification.Throws);
                writer.WriteLine("  But was:  {0}", result.ButException.Value);

                throw new Xunit.Sdk.XunitException(writer.ToString());
            }

            if (!result.ButEvents.HasValue)
            {
                return;
            }

            await using (var writer = new StringWriter()) {
                writer.WriteLine("  Expected: {0},", result.Specification.Throws);
                writer.WriteLine("  But was:  {0} event(s) ({1})",
                                 result.ButEvents.Value.Length,
                                 string.Join(",", result.ButEvents.Value.Select(_ => _.GetType().Name).ToArray()));

                throw new Xunit.Sdk.XunitException(writer.ToString());
            }
        }
 public EventCentricTestSpecificationRunner(IFactComparer comparer, object handler, IFactRecorder factRecorder)
 {
     if (comparer == null)
     {
         throw new ArgumentNullException(nameof(comparer));
     }
     if (handler == null)
     {
         throw new ArgumentNullException(nameof(handler));
     }
     if (factRecorder == null)
     {
         throw new ArgumentNullException(nameof(factRecorder));
     }
     _comparer     = comparer;
     _factRecorder = factRecorder;
     _handler      = handler;
 }
Exemple #6
0
 public FactRecorderRepository(IFactRecorder facts, Func <T> factory)
 {
     _facts   = facts;
     _factory = factory;
 }
Exemple #7
0
        /// <summary>
        /// Asserts that the specification is met.
        /// </summary>
        /// <param name="builder">The specification builder.</param>
        /// <param name="comparer">The event comparer.</param>
        public static async Task Assert(this IEventCentricTestSpecificationBuilder builder,
                                        IFactComparer comparer, object handler, IFactRecorder factRecorder)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }
            if (comparer == null)
            {
                throw new ArgumentNullException(nameof(comparer));
            }
            if (handler == null)
            {
                throw new ArgumentNullException(nameof(handler));
            }
            if (factRecorder == null)
            {
                throw new ArgumentNullException(nameof(factRecorder));
            }
            var specification = builder.Build();
            var runner        = new EventCentricTestSpecificationRunner(comparer, handler, factRecorder);
            var result        = await runner.Run(specification);

            if (!result.Failed)
            {
                return;
            }
            if (result.ButException.HasValue)
            {
                await using var writer = new StringWriter();
                writer.WriteLine("  Expected: {0} event(s),", result.Specification.Thens.Length);
                writer.WriteLine("  But was:  {0}", result.ButException.Value);

                throw new Xunit.Sdk.XunitException(writer.ToString());
            }

            if (!result.ButEvents.HasValue)
            {
                return;
            }

            if (result.ButEvents.Value.Length != result.Specification.Thens.Length)
            {
                await using var writer = new StringWriter();
                writer.WriteLine("  Expected: {0} event(s) ({1}),",
                                 result.Specification.Thens.Length,
                                 string.Join(",", result.Specification.Thens.Select(_ => _.Event.GetType().Name).ToArray()));
                writer.WriteLine("  But was:  {0} event(s) ({1})",
                                 result.ButEvents.Value.Length,
                                 string.Join(",", result.ButEvents.Value.Select(_ => _.Event.GetType().Name).ToArray()));

                throw new Xunit.Sdk.XunitException(writer.ToString());
            }

            await using (var writer = new StringWriter()) {
                writer.WriteLine("  Expected: {0} event(s) ({1}),",
                                 result.Specification.Thens.Length,
                                 string.Join(",", result.Specification.Thens.Select(_ => _.Event.GetType().Name).ToArray()));
                writer.WriteLine("  But found the following differences:");
                foreach (var difference in
                         result.Specification.Thens.Zip(result.ButEvents.Value,
                                                        (expected, actual) => new Tuple <Fact, Fact>(expected, actual))
                         .SelectMany(_ => comparer.Compare(_.Item1, _.Item2)))
                {
                    writer.WriteLine("    {0}", difference.Message);
                }

                throw new Xunit.Sdk.XunitException(writer.ToString());
            }
        }
Exemple #8
0
 public static Task Assert(this IExceptionCentricTestSpecificationBuilder builder, object handler,
                           IFactRecorder factRecorder) =>
 builder.Assert(CreateExceptionComparer(), handler, factRecorder);
Exemple #9
0
 public static Task Assert(this IEventCentricTestSpecificationBuilder builder, object handler,
                           IFactRecorder factRecorder) =>
 builder.Assert(new CompareNetObjectsBasedFactComparer(new CompareLogic()), handler, factRecorder);
Exemple #10
0
 public ChartOfAccountsTestRepository(IFactRecorder factRecorder)
 {
     _inner = new FactRecorderRepository <ChartOfAccounts>(factRecorder, ChartOfAccounts.Factory);
 }
Exemple #11
0
 public GeneralLedgerTests()
 {
     _facts   = new FactRecorder();
     _handler = new GeneralLedgerHandlers(new GeneralLedgerTestRepository(_facts),
                                          new ChartOfAccountsTestRepository(_facts));
 }
 public GeneralLedgerTestRepository(IFactRecorder factRecorder)
 {
     _inner = new FactRecorderRepository <GeneralLedger>(factRecorder, GeneralLedger.Factory);
 }
 public GeneralLedgerEntryTestRepository(IFactRecorder facts)
 {
     _inner = new FactRecorderRepository <GeneralLedgerEntry>(facts, GeneralLedgerEntry.Factory);
 }
 public GeneralLedgerEntryTests(ITestOutputHelper output)
 {
     _writer = new TestSpecificationTextWriter(new TestOutputHelperTextWriter(output));
     _facts  = new FactRecorder();
 }