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)); }
/// <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); }); }
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"); } }
/// <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)); }
private IEnumerable <RtiTaxMonthEntry> ExtractMonthEntries(HmrcVatReturnsInfo vatInfo) { return(vatInfo.RtiTaxYearInfo.Months.Select(ConvertToRtiMonthEntry)); }
/// <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); }