private Disposition generateDisposition() { return Disposition.builder() .actionMode(disposition.getActionMode()) .sendingMode(disposition.getSendingMode()) .type(disposition.getType()) .build(); }
@Test public void shouldBuildMinimalSubSet() { Disposition disposition = Disposition.builder() .actionMode(DispositionActionMode.Automatic) .sendingMode(DispositionSendingMode.Automatic) .type(DispositionType.Processed) .build(); ImmutableList<DispositionModifier> modifiers = ImmutableList.of(); assertThat(disposition) .isEqualTo(new Disposition( DispositionActionMode.Automatic, DispositionSendingMode.Automatic, DispositionType.Processed, modifiers)); }
@Test public void formattedValueShouldDisplayNoModifier() { Disposition disposition = Disposition.builder() .actionMode(DispositionActionMode.Automatic) .sendingMode(DispositionSendingMode.Automatic) .type(DispositionType.Processed) .build(); assertThat(disposition.formattedValue()) .isEqualTo("Disposition: automatic-action/MDN-sent-automatically;processed"); }
@Override public String toString() { return formattedValue(); } }
public Disposition build() { Preconditions.checkState(actionMode.isPresent()); Preconditions.checkState(sendingMode.isPresent()); Preconditions.checkState(type.isPresent()); return new Disposition(actionMode.get(), sendingMode.get(), type.get(), modifiers.build()); } }
@Override public String formattedValue() { return FIELD_NAME + ": " + actionMode.getValue() + "/" + sendingMode.getValue() + ";" + type.getValue() + formattedModifiers(); }
@Test public void dispositionFieldShouldParseWhenMinimal() { String minimal = "Disposition: automatic-action/MDN-sent-automatically;processed"; Disposition expected = Disposition.builder() .actionMode(DispositionActionMode.Automatic) .sendingMode(DispositionSendingMode.Automatic) .type(DispositionType.Processed) .build(); Parser parser = Parboiled.createParser(MDNReportParser.Parser.class); ParsingResult<Object> result = new ReportingParseRunner<>(parser.dispositionField()).run(minimal); assertThat(result.matched).isTrue(); assertThat(result.resultValue).isInstanceOf(Disposition.class); assertThat((Disposition)result.resultValue).isEqualTo(expected); }
@Test public void formattedValueShouldDisplayManualSendingMode() { Disposition disposition = Disposition.builder() .actionMode(DispositionActionMode.Automatic) .sendingMode(DispositionSendingMode.Manual) .type(DispositionType.Processed) .addModifiers(DispositionModifier.Expired) .build(); assertThat(disposition.formattedValue()) .isEqualTo("Disposition: automatic-action/MDN-sent-manually;processed/expired"); } }
@Test public void shouldBuildWithAllOptions() { Disposition disposition = Disposition.builder() .actionMode(DispositionActionMode.Automatic) .sendingMode(DispositionSendingMode.Automatic) .type(DispositionType.Processed) .addModifiers(DispositionModifier.Expired, DispositionModifier.Warning) .build(); ImmutableList<DispositionModifier> modifiers = ImmutableList.of(DispositionModifier.Expired, DispositionModifier.Warning); assertThat(disposition) .isEqualTo(new Disposition( DispositionActionMode.Automatic, DispositionSendingMode.Automatic, DispositionType.Processed, modifiers)); }
@Test public void dispositionFieldShouldParseWhenDeletedType() { String disposition = "Disposition: automatic-action/MDN-sent-manually;deleted"; Disposition expected = Disposition.builder() .actionMode(DispositionActionMode.Automatic) .sendingMode(DispositionSendingMode.Manual) .type(DispositionType.Deleted) .build(); Parser parser = Parboiled.createParser(MDNReportParser.Parser.class); ParsingResult<Object> result = new ReportingParseRunner<>(parser.dispositionField()).run(disposition); assertThat(result.matched).isTrue(); assertThat(result.resultValue).isInstanceOf(Disposition.class); assertThat((Disposition)result.resultValue).isEqualTo(expected); }
@Test public void formattedValueShouldDisplayAllOptions() { Disposition disposition = Disposition.builder() .actionMode(DispositionActionMode.Automatic) .sendingMode(DispositionSendingMode.Automatic) .type(DispositionType.Processed) .addModifiers(DispositionModifier.Expired, DispositionModifier.Warning) .build(); assertThat(disposition.formattedValue()) .isEqualTo("Disposition: automatic-action/MDN-sent-automatically;processed/expired,warning"); }
@Test public void dispositionFieldShouldParseWhenDispatchedType() { String disposition = "Disposition: automatic-action/MDN-sent-manually;dispatched"; Disposition expected = Disposition.builder() .actionMode(DispositionActionMode.Automatic) .sendingMode(DispositionSendingMode.Manual) .type(DispositionType.Dispatched) .build(); Parser parser = Parboiled.createParser(MDNReportParser.Parser.class); ParsingResult<Object> result = new ReportingParseRunner<>(parser.dispositionField()).run(disposition); assertThat(result.matched).isTrue(); assertThat(result.resultValue).isInstanceOf(Disposition.class); assertThat((Disposition)result.resultValue).isEqualTo(expected); }
@Test public void formattedValueShouldDisplayManualActionMode() { Disposition disposition = Disposition.builder() .actionMode(DispositionActionMode.Manual) .sendingMode(DispositionSendingMode.Automatic) .type(DispositionType.Processed) .addModifiers(DispositionModifier.Expired) .build(); assertThat(disposition.formattedValue()) .isEqualTo("Disposition: manual-action/MDN-sent-automatically;processed/expired"); }
@Test public void dispositionFieldShouldParseWhenAutomaticManualWithDisplayedType() { String disposition = "Disposition: automatic-action/MDN-sent-manually;processed"; Disposition expected = Disposition.builder() .actionMode(DispositionActionMode.Automatic) .sendingMode(DispositionSendingMode.Manual) .type(DispositionType.Processed) .build(); Parser parser = Parboiled.createParser(MDNReportParser.Parser.class); ParsingResult<Object> result = new ReportingParseRunner<>(parser.dispositionField()).run(disposition); assertThat(result.matched).isTrue(); assertThat(result.resultValue).isInstanceOf(Disposition.class); assertThat((Disposition)result.resultValue).isEqualTo(expected); }
@Test public void formattedValueShouldDisplaySingleModifier() { Disposition disposition = Disposition.builder() .actionMode(DispositionActionMode.Automatic) .sendingMode(DispositionSendingMode.Automatic) .type(DispositionType.Processed) .addModifiers(DispositionModifier.Expired) .build(); assertThat(disposition.formattedValue()) .isEqualTo("Disposition: automatic-action/MDN-sent-automatically;processed/expired"); }
@Test public void dispositionFieldShouldParseWhenDisplayedType() { String disposition = "Disposition: automatic-action/MDN-sent-manually;displayed"; Disposition expected = Disposition.builder() .actionMode(DispositionActionMode.Automatic) .sendingMode(DispositionSendingMode.Manual) .type(DispositionType.Displayed) .build(); Parser parser = Parboiled.createParser(MDNReportParser.Parser.class); ParsingResult<Object> result = new ReportingParseRunner<>(parser.dispositionField()).run(disposition); assertThat(result.matched).isTrue(); assertThat(result.resultValue).isInstanceOf(Disposition.class); assertThat((Disposition)result.resultValue).isEqualTo(expected); }
@Test public void dispositionFieldShouldParseWhenManualAutomaticWithDisplayedType() { String disposition = "Disposition: manual-action/MDN-sent-automatically;processed"; Disposition expected = Disposition.builder() .actionMode(DispositionActionMode.Manual) .sendingMode(DispositionSendingMode.Automatic) .type(DispositionType.Processed) .build(); Parser parser = Parboiled.createParser(MDNReportParser.Parser.class); ParsingResult<Object> result = new ReportingParseRunner<>(parser.dispositionField()).run(disposition); assertThat(result.matched).isTrue(); assertThat(result.resultValue).isInstanceOf(Disposition.class); assertThat((Disposition)result.resultValue).isEqualTo(expected); }
@Test public void shouldBuildWithMinimalSubset() { Disposition disposition = Disposition.builder() .actionMode(DispositionActionMode.Automatic) .sendingMode(DispositionSendingMode.Automatic) .type(DispositionType.Processed) .build(); FinalRecipient finalRecipientField = FinalRecipient.builder().finalRecipient(Text.fromRawText("any@domain.com")).build(); MDNReport mdnReport = MDNReport.builder() .finalRecipientField(finalRecipientField) .dispositionField(disposition) .build(); assertThat(mdnReport) .isEqualTo(new MDNReport( Optional.empty(), Optional.empty(), Optional.empty(), finalRecipientField, Optional.empty(), disposition, ImmutableList.of(), ImmutableList.of())); }
@Test public void buildShouldThrowOnMissingActionMode() { expectedException.expect(IllegalStateException.class); Disposition.builder() .sendingMode(DispositionSendingMode.Automatic) .type(DispositionType.Processed) .build(); }
.originalRecipientField(originalRecipient) .originalMessageIdField(originalMessageId) .dispositionField(Disposition.builder() .actionMode(DispositionActionMode.Automatic) .sendingMode(DispositionSendingMode.Automatic)