Skip to content

Commit 394575d

Browse files
committed
Add test for parsePncUpdateDataset in parseHearingOutcome
1 parent 61c163a commit 394575d

File tree

2 files changed

+238
-4
lines changed

2 files changed

+238
-4
lines changed

packages/ui/src/utils/parseHearingOutcome.test.ts

+14-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import * as parseAhoXmlModule from "@moj-bichard7/core/lib/parse/parseAhoXml/parseAhoXml"
22
import * as parseAnnotatedPncUpdateDatasetXmlModule from "@moj-bichard7/core/lib/parse/parseAnnotatedPncUpdateDatasetXml/parseAnnotatedPncUpdateDatasetXml"
3+
import * as parsePncUpdateDataSetXmlModule from "@moj-bichard7/core/lib/parse/parsePncUpdateDataSetXml/parsePncUpdateDataSetXml"
34
import fs from "fs"
45
import dummyAho from "../../test/test-data/AnnotatedHO1.json"
56
import parseHearingOutcome from "./parseHearingOutcome"
@@ -9,13 +10,22 @@ describe("parseHearingOutcome", () => {
910
expect(parseHearingOutcome("not an XML")).toEqual(new Error("Could not parse AHO XML"))
1011
})
1112

12-
it("Should call parseAnnotatedPncUpdateDatasetXml when the XML is a isPncUpdateDataset", () => {
13+
it("Should call parseAnnotatedPncUpdateDatasetXml when the XML is an AnnotatedPncUpdateDataset", () => {
1314
const spy = jest.spyOn(parseAnnotatedPncUpdateDatasetXmlModule, "default")
14-
const dummyPNCUpdateDataset = fs.readFileSync("test/test-data/AnnotatedPNCUpdateDataset.xml").toString()
15-
parseHearingOutcome(dummyPNCUpdateDataset)
15+
const annotatedPncUpdateDataset = fs.readFileSync("test/test-data/AnnotatedPNCUpdateDataset.xml").toString()
16+
parseHearingOutcome(annotatedPncUpdateDataset)
1617

1718
expect(spy).toHaveBeenCalledTimes(1)
18-
expect(spy).toHaveBeenCalledWith(dummyPNCUpdateDataset)
19+
expect(spy).toHaveBeenCalledWith(annotatedPncUpdateDataset)
20+
})
21+
22+
it("Should call parsePncUpdateDatasetXml when the XML is a pncUpdateDataset", () => {
23+
const spy = jest.spyOn(parsePncUpdateDataSetXmlModule, "default")
24+
const pncUpdateDataset = fs.readFileSync("test/test-data/PNCUpdateDataset.xml").toString()
25+
parseHearingOutcome(pncUpdateDataset)
26+
27+
expect(spy).toHaveBeenCalledTimes(1)
28+
expect(spy).toHaveBeenCalledWith(pncUpdateDataset)
1929
})
2030

2131
it("Should call parseAhoXml when the XML is not a isPncUpdateDataset", () => {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,224 @@
1+
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
2+
<PNCUpdateDataset xmlns="http://www.example.org/NewXMLSchema"
3+
xmlns:ds="http://schemas.cjse.gov.uk/datastandards/2006-10"
4+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
5+
<br7:AnnotatedHearingOutcome xmlns:br7="http://schemas.cjse.gov.uk/datastandards/BR7/2007-12">
6+
<br7:HearingOutcome>
7+
<br7:Hearing hasError="false" SchemaVersion="4.0">
8+
<ds:CourtHearingLocation SchemaVersion="2.0">
9+
<ds:TopLevelCode>B</ds:TopLevelCode>
10+
<ds:SecondLevelCode>01</ds:SecondLevelCode>
11+
<ds:ThirdLevelCode>EF</ds:ThirdLevelCode>
12+
<ds:BottomLevelCode>01</ds:BottomLevelCode>
13+
<ds:OrganisationUnitCode>B01EF01</ds:OrganisationUnitCode>
14+
</ds:CourtHearingLocation>
15+
<ds:DateOfHearing>2011-09-26</ds:DateOfHearing>
16+
<ds:TimeOfHearing>10:00</ds:TimeOfHearing>
17+
<ds:HearingLanguage Literal="Don't Know">D</ds:HearingLanguage>
18+
<ds:HearingDocumentationLanguage Literal="Don't Know">D</ds:HearingDocumentationLanguage>
19+
<ds:DefendantPresentAtHearing Literal="Yes">Y</ds:DefendantPresentAtHearing>
20+
<br7:SourceReference>
21+
<br7:DocumentName>SPI TRPSTWO TRTHREE</br7:DocumentName>
22+
<br7:UniqueID>CID-060ddbaa-cd00-48cd-91b8-fb9562be2196</br7:UniqueID>
23+
<br7:DocumentType>SPI Case Result</br7:DocumentType>
24+
</br7:SourceReference>
25+
<br7:CourtType Literal="MC adult">MCA</br7:CourtType>
26+
<br7:CourtHouseCode>2576</br7:CourtHouseCode>
27+
<br7:CourtHouseName>Magistrates' Courts London Croydon</br7:CourtHouseName>
28+
</br7:Hearing>
29+
<br7:Case hasError="false" SchemaVersion="4.0">
30+
<ds:PTIURN>01ZD0304208</ds:PTIURN>
31+
<ds:PreChargeDecisionIndicator Literal="No">N</ds:PreChargeDecisionIndicator>
32+
<ds:CourtCaseReferenceNumber>97/1626/008395Q</ds:CourtCaseReferenceNumber>
33+
<br7:CourtReference>
34+
<ds:MagistratesCourtReference>01ZD0304208</ds:MagistratesCourtReference>
35+
</br7:CourtReference>
36+
<br7:RecordableOnPNCindicator Literal="Yes">Y</br7:RecordableOnPNCindicator>
37+
<br7:ForceOwner SchemaVersion="2.0">
38+
<ds:SecondLevelCode>01</ds:SecondLevelCode>
39+
<ds:ThirdLevelCode>ZD</ds:ThirdLevelCode>
40+
<ds:BottomLevelCode>00</ds:BottomLevelCode>
41+
<ds:OrganisationUnitCode>01ZD00</ds:OrganisationUnitCode>
42+
</br7:ForceOwner>
43+
<br7:HearingDefendant hasError="false">
44+
<br7:ArrestSummonsNumber>1101ZD0100000410770Y</br7:ArrestSummonsNumber>
45+
<br7:PNCIdentifier>2000/0410770Y</br7:PNCIdentifier>
46+
<br7:PNCCheckname>TRTHREE</br7:PNCCheckname>
47+
<br7:DefendantDetail>
48+
<br7:PersonName>
49+
<ds:Title>Mr</ds:Title>
50+
<ds:GivenName NameSequence="1">TRPSTWO</ds:GivenName>
51+
<ds:FamilyName NameSequence="1">TRTHREE</ds:FamilyName>
52+
</br7:PersonName>
53+
<br7:GeneratedPNCFilename>TRTHREE/TRPSTWO</br7:GeneratedPNCFilename>
54+
<br7:BirthDate>1948-11-11</br7:BirthDate>
55+
<br7:Gender Literal="male">1</br7:Gender>
56+
</br7:DefendantDetail>
57+
<br7:Address>
58+
<ds:AddressLine1>Scenario1 Address Line 1</ds:AddressLine1>
59+
<ds:AddressLine2>Scenario1 Address Line 2</ds:AddressLine2>
60+
<ds:AddressLine3>Scenario1 Address Line 3</ds:AddressLine3>
61+
</br7:Address>
62+
<br7:RemandStatus Literal="Unconditional Bail">UB</br7:RemandStatus>
63+
<br7:Offence hasError="false" SchemaVersion="4.0">
64+
<ds:CriminalProsecutionReference SchemaVersion="2.0">
65+
<ds:DefendantOrOffender>
66+
<ds:Year>11</ds:Year>
67+
<ds:OrganisationUnitIdentifierCode SchemaVersion="2.0">
68+
<ds:SecondLevelCode>01</ds:SecondLevelCode>
69+
<ds:ThirdLevelCode>ZD</ds:ThirdLevelCode>
70+
<ds:BottomLevelCode>01</ds:BottomLevelCode>
71+
<ds:OrganisationUnitCode>01ZD01</ds:OrganisationUnitCode>
72+
</ds:OrganisationUnitIdentifierCode>
73+
<ds:DefendantOrOffenderSequenceNumber>00000410770</ds:DefendantOrOffenderSequenceNumber>
74+
<ds:CheckDigit>Y</ds:CheckDigit>
75+
</ds:DefendantOrOffender>
76+
<ds:OffenceReason>
77+
<ds:OffenceCode>
78+
<ds:ActOrSource>TH</ds:ActOrSource>
79+
<ds:Year>68</ds:Year>
80+
<ds:Reason>006</ds:Reason>
81+
</ds:OffenceCode>
82+
</ds:OffenceReason>
83+
<ds:OffenceReasonSequence>001</ds:OffenceReasonSequence>
84+
</ds:CriminalProsecutionReference>
85+
<ds:OffenceCategory Literal="Either Way">CE</ds:OffenceCategory>
86+
<ds:ArrestDate>2010-12-01</ds:ArrestDate>
87+
<ds:ChargeDate>2010-12-02</ds:ChargeDate>
88+
<ds:ActualOffenceDateCode Literal="on or in">1</ds:ActualOffenceDateCode>
89+
<ds:ActualOffenceStartDate>
90+
<ds:StartDate>2010-11-28</ds:StartDate>
91+
</ds:ActualOffenceStartDate>
92+
<ds:LocationOfOffence>Kingston High Street</ds:LocationOfOffence>
93+
<ds:OffenceTitle>Theft of pedal cycle</ds:OffenceTitle>
94+
<ds:ActualOffenceWording>Theft of pedal cycle.</ds:ActualOffenceWording>
95+
<ds:RecordableOnPNCindicator Literal="Yes">Y</ds:RecordableOnPNCindicator>
96+
<ds:NotifiableToHOindicator Literal="Yes">Y</ds:NotifiableToHOindicator>
97+
<ds:HomeOfficeClassification>044/00</ds:HomeOfficeClassification>
98+
<ds:ConvictionDate>2011-09-26</ds:ConvictionDate>
99+
<br7:CommittedOnBail Literal="Don't Know">D</br7:CommittedOnBail>
100+
<br7:CourtOffenceSequenceNumber>1</br7:CourtOffenceSequenceNumber>
101+
<br7:Result hasError="false" SchemaVersion="2.0">
102+
<ds:CJSresultCode>1015</ds:CJSresultCode>
103+
<ds:SourceOrganisation SchemaVersion="2.0">
104+
<ds:TopLevelCode>B</ds:TopLevelCode>
105+
<ds:SecondLevelCode>01</ds:SecondLevelCode>
106+
<ds:ThirdLevelCode>EF</ds:ThirdLevelCode>
107+
<ds:BottomLevelCode>01</ds:BottomLevelCode>
108+
<ds:OrganisationUnitCode>B01EF01</ds:OrganisationUnitCode>
109+
</ds:SourceOrganisation>
110+
<ds:CourtType>MCA</ds:CourtType>
111+
<ds:ResultHearingType Literal="Other">OTHER</ds:ResultHearingType>
112+
<ds:ResultHearingDate>2011-09-26</ds:ResultHearingDate>
113+
<ds:AmountSpecifiedInResult Type="Fine">100.00</ds:AmountSpecifiedInResult>
114+
<ds:PleaStatus Literal="Not Guilty">NG</ds:PleaStatus>
115+
<ds:Verdict Literal="Guilty">G</ds:Verdict>
116+
<ds:ModeOfTrialReason Literal="Summary only">SUM</ds:ModeOfTrialReason>
117+
<ds:ResultVariableText>Fined 100.</ds:ResultVariableText>
118+
<ds:ResultHalfLifeHours>72</ds:ResultHalfLifeHours>
119+
<br7:PNCDisposalType>1015</br7:PNCDisposalType>
120+
<br7:ResultClass>Judgement with final result</br7:ResultClass>
121+
<br7:PNCAdjudicationExists Literal="No">N</br7:PNCAdjudicationExists>
122+
</br7:Result>
123+
</br7:Offence>
124+
<br7:Offence hasError="false" SchemaVersion="4.0">
125+
<ds:CriminalProsecutionReference SchemaVersion="2.0">
126+
<ds:DefendantOrOffender>
127+
<ds:Year>11</ds:Year>
128+
<ds:OrganisationUnitIdentifierCode SchemaVersion="2.0">
129+
<ds:SecondLevelCode>01</ds:SecondLevelCode>
130+
<ds:ThirdLevelCode>ZD</ds:ThirdLevelCode>
131+
<ds:BottomLevelCode>01</ds:BottomLevelCode>
132+
<ds:OrganisationUnitCode>01ZD01</ds:OrganisationUnitCode>
133+
</ds:OrganisationUnitIdentifierCode>
134+
<ds:DefendantOrOffenderSequenceNumber>00000410770</ds:DefendantOrOffenderSequenceNumber>
135+
<ds:CheckDigit>Y</ds:CheckDigit>
136+
</ds:DefendantOrOffender>
137+
<ds:OffenceReason>
138+
<ds:OffenceCode>
139+
<ds:ActOrSource>RT</ds:ActOrSource>
140+
<ds:Year>88</ds:Year>
141+
<ds:Reason>191</ds:Reason>
142+
</ds:OffenceCode>
143+
</ds:OffenceReason>
144+
<ds:OffenceReasonSequence>002</ds:OffenceReasonSequence>
145+
</ds:CriminalProsecutionReference>
146+
<ds:OffenceCategory Literal="Summary Motoring">CM</ds:OffenceCategory>
147+
<ds:ArrestDate>2010-12-01</ds:ArrestDate>
148+
<ds:ChargeDate>2010-12-02</ds:ChargeDate>
149+
<ds:ActualOffenceDateCode Literal="on or in">1</ds:ActualOffenceDateCode>
150+
<ds:ActualOffenceStartDate>
151+
<ds:StartDate>2010-11-28</ds:StartDate>
152+
</ds:ActualOffenceStartDate>
153+
<ds:LocationOfOffence>Kingston High Street</ds:LocationOfOffence>
154+
<ds:OffenceTitle>Use a motor vehicle on a road / public place without third
155+
party insurance</ds:OffenceTitle>
156+
<ds:ActualOffenceWording>Use a motor vehicle without third party insurance.</ds:ActualOffenceWording>
157+
<ds:RecordableOnPNCindicator Literal="No">N</ds:RecordableOnPNCindicator>
158+
<ds:NotifiableToHOindicator Literal="No">N</ds:NotifiableToHOindicator>
159+
<ds:HomeOfficeClassification>809/01</ds:HomeOfficeClassification>
160+
<ds:ConvictionDate>2011-09-26</ds:ConvictionDate>
161+
<br7:CommittedOnBail Literal="Don't Know">D</br7:CommittedOnBail>
162+
<br7:CourtOffenceSequenceNumber>2</br7:CourtOffenceSequenceNumber>
163+
<br7:Result hasError="false" SchemaVersion="2.0">
164+
<ds:CJSresultCode>3107</ds:CJSresultCode>
165+
<ds:SourceOrganisation SchemaVersion="2.0">
166+
<ds:TopLevelCode>B</ds:TopLevelCode>
167+
<ds:SecondLevelCode>01</ds:SecondLevelCode>
168+
<ds:ThirdLevelCode>EF</ds:ThirdLevelCode>
169+
<ds:BottomLevelCode>01</ds:BottomLevelCode>
170+
<ds:OrganisationUnitCode>B01EF01</ds:OrganisationUnitCode>
171+
</ds:SourceOrganisation>
172+
<ds:CourtType>MCA</ds:CourtType>
173+
<ds:ResultHearingType Literal="Other">OTHER</ds:ResultHearingType>
174+
<ds:ResultHearingDate>2011-09-26</ds:ResultHearingDate>
175+
<ds:PleaStatus Literal="Not Guilty">NG</ds:PleaStatus>
176+
<ds:Verdict Literal="Guilty">G</ds:Verdict>
177+
<ds:ModeOfTrialReason Literal="Summary only">SUM</ds:ModeOfTrialReason>
178+
<ds:ResultVariableText>DEFENDANT MUST LIVE AT OUR HOUSE IN THE MIDDLE OF
179+
OUR STREET</ds:ResultVariableText>
180+
<ds:ResultHalfLifeHours>72</ds:ResultHalfLifeHours>
181+
<br7:PNCDisposalType>3107</br7:PNCDisposalType>
182+
<br7:ResultClass>Judgement with final result</br7:ResultClass>
183+
<br7:PNCAdjudicationExists Literal="No">N</br7:PNCAdjudicationExists>
184+
</br7:Result>
185+
</br7:Offence>
186+
</br7:HearingDefendant>
187+
</br7:Case>
188+
</br7:HearingOutcome>
189+
<br7:HasError>false</br7:HasError>
190+
<CXE01 xmlns="">
191+
<FSC FSCode="01ZD" IntfcUpdateType="K" />
192+
<IDS CRONumber="" Checkname="TRTHREE" IntfcUpdateType="K" PNCID="2000/0410770Y" />
193+
<CourtCases>
194+
<CourtCase>
195+
<CCR CourtCaseRefNo="97/1626/008395Q" CrimeOffenceRefNo="" IntfcUpdateType="K" />
196+
<Offences>
197+
<Offence>
198+
<COF ACPOOffenceCode="12:15:24:1" CJSOffenceCode="TH68006"
199+
IntfcUpdateType="K" OffEndDate="" OffEndTime=""
200+
OffStartDate="28112010" OffStartTime="0000" OffenceQualifier1=""
201+
OffenceQualifier2="" OffenceTitle="Theft of pedal cycle"
202+
ReferenceNumber="001" />
203+
</Offence>
204+
<Offence>
205+
<COF ACPOOffenceCode="12:15:24:1" CJSOffenceCode="RT88191"
206+
IntfcUpdateType="K" OffEndDate="" OffEndTime=""
207+
OffStartDate="28112010" OffStartTime="0000" OffenceQualifier1=""
208+
OffenceQualifier2=""
209+
OffenceTitle="Use a motor vehicle on a road / public place without third party insurance"
210+
ReferenceNumber="002" />
211+
</Offence>
212+
</Offences>
213+
</CourtCase>
214+
</CourtCases>
215+
</CXE01>
216+
<br7:PNCQueryDate>2022-10-04</br7:PNCQueryDate>
217+
</br7:AnnotatedHearingOutcome>
218+
<Operation>
219+
<operationCode>
220+
<DISARR />
221+
</operationCode>
222+
<operationStatus>C</operationStatus>
223+
</Operation>
224+
</PNCUpdateDataset>

0 commit comments

Comments
 (0)