예제 #1
0
        public void When_Saving_Header_With_Multiple_Services_Then_Insert_Service_Is_Called_For_Each_Service()
        {
            // arrange
            const int headerKey = 1;

            var header = new Type814Header();

            header.AddService(new Type814Service {
                ServiceType1 = "mock_one",
            });
            header.AddService(new Type814Service {
                ServiceType1 = "mock_two",
            });
            header.AddService(new Type814Service {
                ServiceType1 = "mock_three",
            });

            dataAccess.Stub(x => x.InsertHeader(Arg.Is(header)))
            .Return(headerKey);

            dataAccess.Expect(x => x.InsertService(Arg <Type814Service> .Is.TypeOf))
            .Return(1);

            // act
            concern.SaveHeader(header);

            // assert
            Assert.IsTrue(header.Services.All(x => x.HeaderKey.Equals(headerKey)));

            dataAccess.AssertWasCalled(x => x.InsertService(null), x => x.IgnoreArguments().Repeat.Times(3, 3));
            dataAccess.VerifyAllExpectations();
        }
예제 #2
0
        public void When_Saving_Header_With_No_Service_Meter_TOUs_Then_Insert_Service_Meter_Tou_Is_Not_Called()
        {
            // arrange
            var meter   = new Type814ServiceMeter();
            var service = new Type814Service();
            var header  = new Type814Header();

            service.AddMeter(meter);
            header.AddService(service);

            dataAccess.Stub(x => x.InsertHeader(Arg.Is(header)))
            .Return(1);

            dataAccess.Stub(x => x.InsertService(Arg.Is(service)))
            .Return(1);

            dataAccess.Stub(x => x.InsertServiceMeter(Arg.Is(meter)))
            .Return(1);

            // act
            concern.SaveHeader(header);

            // assert
            dataAccess.AssertWasNotCalled(x => x.InsertServiceMeterTou(null), x => x.IgnoreArguments());
        }
예제 #3
0
        public void When_Saving_Header_With_Any_Service_Meters_Then_Insert_Service_Meter_Is_Called()
        {
            // arrange
            const int serviceKey = 2;

            var meter = new Type814ServiceMeter {
                MeterNumber = "mock"
            };

            var service = new Type814Service();

            service.AddMeter(meter);

            var header = new Type814Header();

            header.AddService(service);

            dataAccess.Stub(x => x.InsertHeader(Arg.Is(header)))
            .Return(1);

            dataAccess.Stub(x => x.InsertService(Arg.Is(service)))
            .Return(serviceKey);

            dataAccess.Expect(x => x.InsertServiceMeter(Arg.Is(meter)))
            .Return(1);

            // act
            concern.SaveHeader(header);

            // assert
            Assert.AreEqual(serviceKey, meter.ServiceKey);

            dataAccess.VerifyAllExpectations();
        }
예제 #4
0
        public void When_Saving_Header_With_Any_Service_Rejects_Then_Insert_Service_Reject_Is_Called()
        {
            // arrange
            const int serviceKey = 2;

            var reject = new Type814ServiceReject {
                RejectCode = "mock"
            };

            var service = new Type814Service();

            service.AddReject(reject);

            var header = new Type814Header();

            header.AddService(service);

            dataAccess.Stub(x => x.InsertHeader(Arg.Is(header)))
            .Return(1);

            dataAccess.Stub(x => x.InsertService(Arg.Is(service)))
            .Return(serviceKey);

            dataAccess.Expect(x => x.InsertServiceReject(Arg.Is(reject)))
            .Return(1);

            // act
            concern.SaveHeader(header);

            // assert
            Assert.AreEqual(serviceKey, reject.ServiceKey);

            dataAccess.VerifyAllExpectations();
        }
예제 #5
0
        public void When_Saving_Header_With_Any_Service_Account_Changes_Then_Insert_Service_Account_Change_Is_Called()
        {
            // arrange
            const int serviceKey = 2;

            var change = new Type814ServiceAccountChange {
                ChangeReason = "mock"
            };

            var service = new Type814Service();

            service.AddChange(change);

            var header = new Type814Header();

            header.AddService(service);

            dataAccess.Stub(x => x.InsertHeader(Arg.Is(header)))
            .Return(1);

            dataAccess.Stub(x => x.InsertService(Arg.Is(service)))
            .Return(serviceKey);

            dataAccess.Expect(x => x.InsertServiceAccountChange(Arg.Is(change)))
            .Return(1);

            // act
            concern.SaveHeader(header);

            // assert
            Assert.AreEqual(serviceKey, change.ServiceKey);

            dataAccess.VerifyAllExpectations();
        }
예제 #6
0
        public void When_Saving_Header_With_Any_Services_Then_Insert_Service_Is_Called()
        {
            // arrange
            const int headerKey = 1;

            var service = new Type814Service {
                ServiceType1 = "mock"
            };

            var header = new Type814Header();

            header.AddService(service);

            dataAccess.Stub(x => x.InsertHeader(Arg.Is(header)))
            .Return(headerKey);

            dataAccess.Expect(x => x.InsertService(Arg.Is(service)))
            .Return(1);

            // act
            concern.SaveHeader(header);

            // assert
            Assert.AreEqual(headerKey, service.HeaderKey);
            dataAccess.VerifyAllExpectations();
        }
예제 #7
0
        public void When_Saving_Header_With_Multiple_Service_Meter_Changes_Then_Insert_Service_Meter_Change_Is_Called_For_Each_Service_Meter_Change()
        {
            // arrange
            const int serviceMeterKey = 2;

            var meter = new Type814ServiceMeter();

            meter.AddChange(new Type814ServiceMeterChange {
                ChangeReason = "mock_one"
            });
            meter.AddChange(new Type814ServiceMeterChange {
                ChangeReason = "mock_two"
            });
            meter.AddChange(new Type814ServiceMeterChange {
                ChangeReason = "mock_six"
            });
            meter.AddChange(new Type814ServiceMeterChange {
                ChangeReason = "mock_ten"
            });

            var service = new Type814Service();

            service.AddMeter(meter);

            var header = new Type814Header();

            header.AddService(service);

            dataAccess.Stub(x => x.InsertHeader(Arg.Is(header)))
            .Return(1);

            dataAccess.Stub(x => x.InsertService(Arg.Is(service)))
            .Return(1);

            dataAccess.Stub(x => x.InsertServiceMeter(Arg.Is(meter)))
            .Return(serviceMeterKey);

            dataAccess.Expect(x => x.InsertServiceMeterChange(Arg <Type814ServiceMeterChange> .Is.TypeOf))
            .Return(1);

            // act
            concern.SaveHeader(header);

            // assert
            Assert.IsTrue(meter.Changes.All(x => x.MeterKey.Equals(serviceMeterKey)));

            dataAccess.AssertWasCalled(x => x.InsertServiceMeterChange(null), x => x.IgnoreArguments().Repeat.Times(4, 4));
            dataAccess.VerifyAllExpectations();
        }
예제 #8
0
        public void When_Saving_Header_With_Multiple_Service_Meter_TOUs_Then_Insert_Service_Meter_Tou_Is_Called_For_Each_Service_Meter_TOU()
        {
            // arrange
            const int serviceMeterKey = 2;

            var meter = new Type814ServiceMeter();

            meter.AddTou(new Type814ServiceMeterTou {
                TouCode = "mock_here"
            });
            meter.AddTou(new Type814ServiceMeterTou {
                TouCode = "mock_now"
            });

            var service = new Type814Service();

            service.AddMeter(meter);

            var header = new Type814Header();

            header.AddService(service);

            dataAccess.Stub(x => x.InsertHeader(Arg.Is(header)))
            .Return(1);

            dataAccess.Stub(x => x.InsertService(Arg.Is(service)))
            .Return(1);

            dataAccess.Stub(x => x.InsertServiceMeter(Arg.Is(meter)))
            .Return(serviceMeterKey);

            dataAccess.Expect(x => x.InsertServiceMeterTou(Arg <Type814ServiceMeterTou> .Is.TypeOf))
            .Return(1);

            // act
            concern.SaveHeader(header);

            // assert
            Assert.IsTrue(meter.Tous.All(x => x.MeterKey.Equals(serviceMeterKey)));

            dataAccess.AssertWasCalled(x => x.InsertServiceMeterTou(null), x => x.IgnoreArguments().Repeat.Times(2, 2));
            dataAccess.VerifyAllExpectations();
        }
예제 #9
0
        public void When_Saving_Header_With_Multiple_Service_Rejects_Then_Insert_Service_Reject_Is_Called_For_Each_Service_Reject()
        {
            // arrange
            const int serviceKey = 2;

            var service = new Type814Service();

            service.AddReject(new Type814ServiceReject {
                RejectCode = "mock_one"
            });
            service.AddReject(new Type814ServiceReject {
                RejectCode = "mock_two"
            });
            service.AddReject(new Type814ServiceReject {
                RejectCode = "mock_four"
            });

            var header = new Type814Header();

            header.AddService(service);

            dataAccess.Stub(x => x.InsertHeader(Arg.Is(header)))
            .Return(1);

            dataAccess.Stub(x => x.InsertService(Arg.Is(service)))
            .Return(serviceKey);

            dataAccess.Expect(x => x.InsertServiceReject(Arg <Type814ServiceReject> .Is.TypeOf))
            .Return(1);

            // act
            concern.SaveHeader(header);

            // assert
            Assert.IsTrue(service.Rejects.All(x => x.ServiceKey.Equals(serviceKey)));

            dataAccess.AssertWasCalled(x => x.InsertServiceReject(null), x => x.IgnoreArguments().Repeat.Times(3, 3));
            dataAccess.VerifyAllExpectations();
        }
예제 #10
0
        public Type814Header ParseHeader(XElement element, IDictionary <string, XNamespace> namespaces)
        {
            XNamespace empty;

            if (!namespaces.TryGetValue(string.Empty, out empty))
            {
                empty = XNamespace.None;
            }

            var model = new Type814Header
            {
                TransactionSetId          = element.GetChildText(empty + "TransactionSetId"),
                TransactionSetControlNbr  = element.GetChildText(empty + "TransactionSetControlNbr"),
                TransactionSetPurposeCode = element.GetChildText(empty + "TransactionSetPurposeCode"),
                TransactionNbr            = element.GetChildText(empty + "TransactionNbr"),
                TransactionDate           = element.GetChildText(empty + "TransactionDate"),
                TransactionTime           = element.GetChildText(empty + "TransactionTime"),
                TransactionTimeCode       = element.GetChildText(empty + "TransactionTimeCode"),
                ReferenceNbr         = element.GetChildText(empty + "ReferenceNbr"),
                ActionCode           = element.GetChildText(empty + "ActionCode"),
                TdspDuns             = element.GetChildText(empty + "TdspDuns"),
                TdspName             = element.GetChildText(empty + "TdspName"),
                CrDuns               = element.GetChildText(empty + "CrDuns"),
                CrName               = element.GetChildText(empty + "CrName"),
                TransactionQualifier = element.GetChildText(empty + "TransactionQualifier"),
            };

            var nameLoopElement = element.Element(empty + "NameLoop");

            if (nameLoopElement != null)
            {
                var nameElements = nameLoopElement.Elements(empty + "Name");
                foreach (var nameElement in nameElements)
                {
                    var nameModel = ParseName(nameElement, namespaces);
                    model.AddName(nameModel);
                }
            }

            var serviceLoopElement = element.Element(empty + "ServiceLoop");

            if (serviceLoopElement != null)
            {
                var serviceElements = serviceLoopElement.Elements(empty + "Service");
                foreach (var serviceElement in serviceElements)
                {
                    var serviceModel = ParseService(serviceElement, namespaces);
                    model.AddService(serviceModel);
                }
            }

            if (model.Services.Any())
            {
                var firstServiceModel = model.Services[0];
                var transactionTypeId = marketDataAccess
                                        .IdentifyTransactionType(model.ActionCode, firstServiceModel.ActionCode);

                model.TransactionTypeId = transactionTypeId;
            }

            return(model);
        }