예제 #1
0
        public void ReceiveTest_CreateFuelIncomeOperation()
        {
            // arrange
            var receiver        = Substitute.For <Employee>();
            var subdivisionFrom = Substitute.For <Subdivision>();

            subdivisionFrom.Id.Returns(1);

            var subdivisionTo = Substitute.For <Subdivision>();

            subdivisionTo.Id.Returns(2);

            FuelType fuelTypeMock = Substitute.For <FuelType>();
            var      document     = new FuelTransferDocument();

            document.FuelType = fuelTypeMock;

            var transferOperation = Substitute.For <FuelTransferOperation>();

            transferOperation.ReceiveTime      = null;
            transferOperation.SendTime         = sendTimeForReceive;
            transferOperation.SubdivisionFrom  = subdivisionFrom;
            transferOperation.SubdivisionTo    = subdivisionTo;
            transferOperation.TransferedLiters = transferedLitersForReceive;

            var expenseOperation = Substitute.For <FuelExpenseOperation>();

            expenseOperation.FuelTransferDocument = document;
            expenseOperation.FuelDocument         = null;
            expenseOperation.СreationTime         = sendTimeForReceive;
            expenseOperation.RelatedToSubdivision = subdivisionFrom;
            expenseOperation.FuelLiters           = transferedLitersForReceive;

            document.Author = Substitute.For <Employee>();
            document.Driver = Substitute.For <Employee>();
            document.Car    = Substitute.For <Car>();

            document.SendTime            = sendTimeForReceive;
            document.CashSubdivisionFrom = subdivisionFrom;
            document.CashSubdivisionTo   = subdivisionTo;
            document.Status                = FuelTransferDocumentStatuses.Sent;
            document.TransferedLiters      = transferedLitersForReceive;
            document.FuelTransferOperation = transferOperation;
            document.FuelExpenseOperation  = expenseOperation;

            // act
            document.Receive(receiver);

            // assert
            AssertsAccumulator.Create
            .Accumulate(() => Assert.That(document.FuelIncomeOperation.FuelTransferDocument, Is.EqualTo(document)))
            .Accumulate(() => Assert.That(document.FuelIncomeOperation.FuelIncomeInvoiceItem, Is.Null))
            .Accumulate(() => Assert.That(document.FuelIncomeOperation.RelatedToSubdivision, Is.SameAs(document.CashSubdivisionTo)))
            .Accumulate(() => Assert.That(document.FuelIncomeOperation.FuelLiters, Is.EqualTo(document.TransferedLiters)))
            .Release();
        }
예제 #2
0
        public void ReceiveTest__TransferDocument_without_cashier_receiver__Thrown_ArgumentNullException()
        {
            // arrange
            var subdivisionFrom = Substitute.For <Subdivision>();

            subdivisionFrom.Id.Returns(1);

            var subdivisionTo = Substitute.For <Subdivision>();

            subdivisionTo.Id.Returns(2);

            FuelType fuelTypeMock = Substitute.For <FuelType>();
            var      document     = new FuelTransferDocument();

            document.FuelType = fuelTypeMock;

            var transferOperation = Substitute.For <FuelTransferOperation>();

            transferOperation.ReceiveTime      = null;
            transferOperation.SendTime         = sendTimeForReceive;
            transferOperation.SubdivisionFrom  = subdivisionFrom;
            transferOperation.SubdivisionTo    = subdivisionTo;
            transferOperation.TransferedLiters = transferedLitersForReceive;

            var expenseOperation = Substitute.For <FuelExpenseOperation>();

            expenseOperation.FuelTransferDocument = document;
            expenseOperation.FuelDocument         = null;
            expenseOperation.СreationTime         = sendTimeForReceive;
            expenseOperation.RelatedToSubdivision = subdivisionFrom;
            expenseOperation.FuelLiters           = transferedLitersForReceive;

            document.Author = Substitute.For <Employee>();
            document.Driver = Substitute.For <Employee>();
            document.Car    = Substitute.For <Car>();

            document.SendTime            = sendTimeForReceive;
            document.CashSubdivisionFrom = subdivisionFrom;
            document.CashSubdivisionTo   = subdivisionTo;
            document.Status                = FuelTransferDocumentStatuses.Sent;
            document.TransferedLiters      = transferedLitersForReceive;
            document.FuelTransferOperation = transferOperation;
            document.FuelExpenseOperation  = expenseOperation;
            var parameterName = document.GetType().GetMethod(nameof(document.Receive)).GetParameters()[0].Name;

            // act
            var exception = Assert.Throws <ArgumentNullException>(() => document.Receive(null));

            // assert
            Assert.That(exception.ParamName, Is.EqualTo(parameterName));
        }
예제 #3
0
        public void ReceiveTest__TransferDocument_FilledCorrectly__TransferDocument_Status_Is_Received()
        {
            // arrange
            var receiver        = Substitute.For <Employee>();
            var subdivisionFrom = Substitute.For <Subdivision>();

            subdivisionFrom.Id.Returns(1);

            var subdivisionTo = Substitute.For <Subdivision>();

            subdivisionTo.Id.Returns(2);

            FuelType fuelTypeMock = Substitute.For <FuelType>();
            var      document     = new FuelTransferDocument();

            document.FuelType = fuelTypeMock;

            var transferOperation = Substitute.For <FuelTransferOperation>();

            transferOperation.ReceiveTime      = null;
            transferOperation.SendTime         = sendTimeForReceive;
            transferOperation.SubdivisionFrom  = subdivisionFrom;
            transferOperation.SubdivisionTo    = subdivisionTo;
            transferOperation.TransferedLiters = transferedLitersForReceive;

            var expenseOperation = Substitute.For <FuelExpenseOperation>();

            expenseOperation.FuelTransferDocument = document;
            expenseOperation.FuelDocument         = null;
            expenseOperation.СreationTime         = sendTimeForReceive;
            expenseOperation.RelatedToSubdivision = subdivisionFrom;
            expenseOperation.FuelLiters           = transferedLitersForReceive;

            document.Author = Substitute.For <Employee>();
            document.Driver = Substitute.For <Employee>();
            document.Car    = Substitute.For <Car>();

            document.SendTime            = sendTimeForReceive;
            document.CashSubdivisionFrom = subdivisionFrom;
            document.CashSubdivisionTo   = subdivisionTo;
            document.Status                = FuelTransferDocumentStatuses.Sent;
            document.TransferedLiters      = transferedLitersForReceive;
            document.FuelTransferOperation = transferOperation;
            document.FuelExpenseOperation  = expenseOperation;

            // act
            document.Receive(receiver);

            // assert
            Assert.IsTrue(document.Status == FuelTransferDocumentStatuses.Received);
        }
예제 #4
0
        public void ReceiveTest__TransferDocument_FuelTransferOperation_ReceiveTime_already_exists__Thrown_InvalidOperationException()
        {
            // arrange
            var receiver        = Substitute.For <Employee>();
            var subdivisionFrom = Substitute.For <Subdivision>();

            subdivisionFrom.Id.Returns(1);

            var subdivisionTo = Substitute.For <Subdivision>();

            subdivisionTo.Id.Returns(2);

            FuelType fuelTypeMock = Substitute.For <FuelType>();
            var      document     = new FuelTransferDocument();

            document.FuelType = fuelTypeMock;

            var transferOperation = Substitute.For <FuelTransferOperation>();

            transferOperation.ReceiveTime      = null;
            transferOperation.SendTime         = sendTimeForReceive;
            transferOperation.SubdivisionFrom  = subdivisionFrom;
            transferOperation.SubdivisionTo    = subdivisionTo;
            transferOperation.TransferedLiters = transferedLitersForReceive;

            var expenseOperation = Substitute.For <FuelExpenseOperation>();

            expenseOperation.FuelTransferDocument = document;
            expenseOperation.FuelDocument         = null;
            expenseOperation.СreationTime         = sendTimeForReceive;
            expenseOperation.RelatedToSubdivision = subdivisionFrom;
            expenseOperation.FuelLiters           = transferedLitersForReceive;

            document.Author = Substitute.For <Employee>();
            document.Driver = Substitute.For <Employee>();
            document.Car    = Substitute.For <Car>();

            document.SendTime            = sendTimeForReceive;
            document.CashSubdivisionFrom = subdivisionFrom;
            document.CashSubdivisionTo   = subdivisionTo;
            document.Status                            = FuelTransferDocumentStatuses.Sent;
            document.TransferedLiters                  = transferedLitersForReceive;
            document.FuelTransferOperation             = transferOperation;
            document.FuelExpenseOperation              = expenseOperation;
            document.FuelTransferOperation.ReceiveTime = DateTime.Now;

            // act, assert
            var exception = Assert.Throws <InvalidOperationException>(() => document.Receive(receiver));
        }