@Test
public void serialNumber() throws JsonMappingException {
FormClass formClass = new FormClass(ResourceId.valueOf("FORM1"));
formClass.addField(ResourceId.valueOf("FIELD0"))
.setType(TextType.SIMPLE)
.setLabel("Province Code")
.setCode("PROVINCE")
.setRequired(true);
FormField serialNumberField = formClass.addField(ResourceId.valueOf("FIELD1"))
.setType(new SerialNumberType("PROVINCE", 5))
.setRequired(true)
.setLabel("File Number")
.setCode("SN");
JsonValue fields = Json.createObject();
fields.put("PROVINCE", "KUNDUZ");
JsonValue change = createObject();
change.put("recordId", "A");
change.put("formId", "FORM1");
change.put("fields", fields);
TypedRecordUpdate update = Updater.parseChange(formClass, change, userId);
TypedFormRecord effectiveRecord = updater.computeEffectiveRecord(formClass, Optional.<FormRecord>absent(), update);
updater.generateSerialNumber(formClass, serialNumberField, effectiveRecord, update);
FieldValue serialValue = update.getChangedFieldValues().get(serialNumberField.getId());
assertThat(serialValue, equalTo((FieldValue)new SerialNumber("KUNDUZ", 1)));
}