示例#1
0
        private bool CompareWithExpected(HmrcVatReturnsInfo result, int userId)
        {
            string expectedJson;

            if (userId == 1)
            {
                expectedJson = Resources.Result1;
            }
            else
            {
                expectedJson = Resources.Result2;
            }

            if (result.VatReturnInfos != null)
            {
                var expected = JsonConvert.DeserializeObject <HmrcVatReturnsInfo>(expectedJson);
                expected.VatReturnInfos = expected.VatReturnInfos.OrderBy(o => o.FromDate)
                                          .ToArray();

                expectedJson = JsonConvert.SerializeObject(expected);

                result.VatReturnInfos = result.VatReturnInfos.OrderBy(o => o.FromDate)
                                        .ToArray();
            }


            string resultJson = JsonConvert.SerializeObject(result);

            var resultToken   = JObject.Parse(resultJson);
            var expectedToken = JObject.Parse(expectedJson);

            return(JToken.DeepEquals(resultToken, expectedToken));
        }
示例#2
0
        /// <summary>
        /// Handles the specified command.
        /// </summary>
        /// <param name="command">The command.</param>
        public async void Handle(HmrcGetVatReturns3dPartyCommand command)
        {
            HmrcVatReturnsInfo vatReturns = await HmrcService.GetVatReturns(command.UserName, command.Password);

            if (vatReturns.Info.HasErrors)
            {
                SendReply(vatReturns.Info, command);
                return;
            }
            InfoAccumulator info = new InfoAccumulator();

            SendReply(info, command, resp => {
                resp.Password   = command.Password;
                resp.UserName   = command.UserName;
                resp.CustomerId = command.CustomerId;
                PrepareResponse(resp, vatReturns);
            });
        }
示例#3
0
        public async void TestHmrc()
        {
            /* Sequence of requests
             *  "https://online.hmrc.gov.uk"
             *  "https://online.hmrc.gov.uk/login?GAURI=https%3a%2f%2fonline.hmrc.gov.uk%2fhome"
             *  "https://online.hmrc.gov.uk/home/services"
             *  "https://online.hmrc.gov.uk/paye/org/120/FA63318/account"
             *  "https://online.hmrc.gov.uk/vat-file/trader/117778386/periods"
             *  "https://online.hmrc.gov.uk/vat-file/trader/119174515/period/496/return"-> N times
             *
             */


            IContainer container = InitContainer(typeof(IHmrcService));

            User[] users =
            {
                this.user1, this.user2
            };

            for (int i = 0; i < users.Length; ++i)
            {
                var browserStub = CreateWebBrowserStub(i + 1);

                container.Configure(c => c.For <IEzBobWebBrowser>()
                                    .Use(browserStub.Object));

                var hmrc = container.GetInstance <IHmrcService>();
                HmrcVatReturnsInfo hmrcVatReturnsInfo = await hmrc.GetVatReturns(users[i].UserName, users[i].Password);

                if (hmrcVatReturnsInfo.VatReturnInfos != null)
                {
                    foreach (var info in hmrcVatReturnsInfo.VatReturnInfos)
                    {
                        //for test we do not compare pdfs
                        info.PdfFile = null;
                    }
                }

                Assert.True(CompareWithExpected(hmrcVatReturnsInfo, i + 1), "got unexpected json");
            }
        }
示例#4
0
 /// <summary>
 /// Extracts the vat returns per business.
 /// </summary>
 /// <param name="vatInfo">The vat information.</param>
 /// <returns></returns>
 private IEnumerable <VatReturnsPerBusiness> ExtractVatReturnsPerBusiness(HmrcVatReturnsInfo vatInfo)
 {
     return(vatInfo.VatReturnInfos.Select(ConvertToVatReturnRecord));
 }
示例#5
0
 private IEnumerable <RtiTaxMonthEntry> ExtractMonthEntries(HmrcVatReturnsInfo vatInfo)
 {
     return(vatInfo.RtiTaxYearInfo.Months.Select(ConvertToRtiMonthEntry));
 }
示例#6
0
 /// <summary>
 /// Prepares the response.
 /// </summary>
 /// <param name="response">The response.</param>
 /// <param name="vatInfo">The vat information.</param>
 private void PrepareResponse(HmrcGetVatReturns3dPartyCommandResponse response, HmrcVatReturnsInfo vatInfo)
 {
     response.VatReturnsPerBusiness = ExtractVatReturnsPerBusiness(vatInfo);
     response.RtiMonthEntries       = ExtractMonthEntries(vatInfo);
 }