public void StringWithZerosShouldThrowException() { // arrange var sut = new DigitalisierungsKontingentParser(); var input = "0 Aufträge in 1 Tag"; // act var action = (Action)(() => { sut.Parse(input); }); // assert action.Should().Throw <Exception>(); }
public void InvalidRegexShouldThrowException() { // arrange var sut = new DigitalisierungsKontingentParser(); var input = "2 Paar Schuhe"; // act var action = (Action)(() => { sut.Parse(input); }); // assert action.Should().Throw <Exception>(); }
public void EingabeInSingularShouldWork() { // arrange var sut = new DigitalisierungsKontingentParser(); var input = "1 Auftrag in 1 Tag"; // act var result = sut.Parse(input); // assert result.AnzahlAuftraege.Should().Be(1); result.InAnzahlTagen.Should().Be(1); }
public void EingabeInPluralAndSingularWithWhitespaceShouldWork() { // arrange var sut = new DigitalisierungsKontingentParser(); var input = "2 Aufträge in 1 Tag"; // act var result = sut.Parse(input); // assert result.AnzahlAuftraege.Should().Be(2); result.InAnzahlTagen.Should().Be(1); }
/// <summary> /// Berechnet und setzt das Feld TerminDigitalisierung falls es noch leer ist. /// </summary> private void InitialiseDigitalisierungsTermin() { Debug.Assert(Context.Ordering.OrderDate != null, "Ordering.OrderDate != null"); if (Context.OrderItem.TerminDigitalisierung != null) { return; } var parameterHelper = new ParameterHelper(); var setting = parameterHelper.GetSetting <KontingentDigitalisierungsauftraegeSetting>(); var digitalisierungsKategorie = Context.OrderItem.DigitalisierungsKategorie; string kontingentString; switch (digitalisierungsKategorie) { case DigitalisierungsKategorie.Intern: kontingentString = setting.Intern; break; case DigitalisierungsKategorie.Oeffentlichkeit: kontingentString = setting.Oeffentlichkeit; break; case DigitalisierungsKategorie.Gesuch: kontingentString = setting.Gesuche; break; case DigitalisierungsKategorie.Amt: kontingentString = setting.Amt; break; case DigitalisierungsKategorie.Forschungsgruppe: kontingentString = setting.DDS; break; default: return; } var parser = new DigitalisierungsKontingentParser(); var kontingent = parser.Parse(kontingentString); var orderDate = (DateTime)Context.Ordering.OrderDate; // ToDo: await correctly, when state machine is async var latestTermine = Context.OrderDataAccess.GetLatestDigitalisierungsTermine(Context.Besteller.Id, orderDate, digitalisierungsKategorie) .ConfigureAwait(false) .GetAwaiter() .GetResult();; var terminManager = new DigitalisierungsTerminManager(Context.OrderDataAccess); var newTermin = terminManager.GetNextPossibleTermin(orderDate, latestTermine, kontingent); Context.OrderItem.TerminDigitalisierung = newTermin; Context.OrderDataAccess.UpdateOrderItem(Context.OrderItem) .ConfigureAwait(false) .GetAwaiter() .GetResult(); // Update ist nötig, damit die Aufräge die in der selben Transaktion verarbeitet werden den richtigen Digitalisierungtermin erhalten }