Code Monkey home page Code Monkey logo

dotnet_testat's People

Contributors

kesslerd avatar mcdonnough avatar

Watchers

 avatar  avatar  avatar

dotnet_testat's Issues

Date Range Check (Reservation minimum 24h dauern)

Eine Reservation muss 24 Stunden oder mehr dauern. Prüfen Sie dies und stellen Sie auch
sicher, dass das «bis» Datum nicht nach dem «von» Datum liegt. Falls nicht muss eine
InvalidDateRangeException ausgelöst werden (noch nicht implementiert).
Kapseln Sie die Logik in eine separate Methode, damit das Schreiben von Tests (siehe unten)
einfacher bleibt.

Tests Service Layer Kunde

• Abfragen einer Liste
• Suche anhand des Primärschlüssels
• Suche anhand eines ungültigen Primärschlüssels
• Einfügen
• Löschen
• Updates
• Abfrage der Verfügbarkeit eines Auto (je einmal true / false als Antwort)

Ausserdem muss das Fault-Handling darauf hin geprüft werden, ob Exceptions sauber
gefangen und in Faults verpackt werden
• Updates mit Optimistic Concurrency Verletzung auf allen 3 Entitäten

Crud Auto

• Alle Entitäten lesen
• Eine Entität anhand des Primärschlüssels lesen
• Einfügen
• Update
• Löschen

Auto hinzufügen

Als Administrator möchte ich ein Auto hinzufügen können. Ich bin zufrieden, wenn ich in
einem Fenster ein Auto mit all seinen Eigenschaften erfassen und in der DB speichern kann

Kunden entferen

Als Administrator möchte ich ein einen Kunden entfernen können. Ich bin zufrieden, wenn ich ein
einen Kunden in der Liste/Tabelle markieren und dieses/diesen nach Bestätigen einer
Sicherheitsrückfrage aus der Liste/Tabelle und der DB entfernen kann.

Test Availability Check

Dies sollte mindestens fünf Tests ergeben (2+ gültige Kombinationen, 3+
ungültige Kombinationen).

Availability Check (Auto Verfügbar)

Beim Erstellen / Updaten einer Reservation muss geprüft werden, ob ein Auto für den
gewünschten Zeitraum zur Verfügung steht. Autos können nahtlos (Ende = Start), aber nicht
überlappend gebucht werden. Falls ein Auto nicht verfügbar ist, muss eine
AutoUnavailableException ausgelöst werden (noch nicht implementiert).

Kapseln Sie die Logik in eine separate Methode, damit das Schreiben von Tests (siehe unten)
einfacher bleibt.

Kunde hinzufügen

Als Administrator möchte ich einen Kunden hinzufügen können. Ich bin zufrieden, wenn ich in
einem Fenstereinen Kunden mit all seinen Eigenschaften erfassen und in der DB speichern kann

Autos anzeigen

Als Administrator möchte ich alle verfügbaren Autosangezeigt bekommen, um mir einen
Überblick über die verfügbaren Basisdaten zu verschaffen. Ich bin zufrieden, wenn alle Eigenschaften in
einer Liste/Tabelle angezeigt werden und ich diese nach den Eigenschaften/Spalten sortieren kann.

Tests Service Layer Auto

• Abfragen einer Liste
• Suche anhand des Primärschlüssels
• Suche anhand eines ungültigen Primärschlüssels
• Einfügen
• Löschen
• Updates
• Abfrage der Verfügbarkeit eines Auto (je einmal true / false als Antwort)

Ausserdem muss das Fault-Handling darauf hin geprüft werden, ob Exceptions sauber
gefangen und in Faults verpackt werden.
• Updates mit Optimistic Concurrency Verletzung

Crud Reservation

• Alle Entitäten lesen
• Eine Entität anhand des Primärschlüssels lesen
• Einfügen
• Update
• Löschen

Tests Service Layer Reservation

• Abfragen einer Liste
• Suche anhand des Primärschlüssels
• Suche anhand eines ungültigen Primärschlüssels
• Einfügen
• Löschen
• Updates
• Abfrage der Verfügbarkeit eines Auto (je einmal true / false als Antwort)

Ausserdem muss das Fault-Handling darauf hin geprüft werden, ob Exceptions sauber
gefangen und in Faults verpackt werden.
• Updates mit Optimistic Concurrency Verletzung
• Insert mit ungültigem Date Range
• Update mit ungültigem Date Range
• Insert mit nicht verfügbarem Auto
• Update mit nicht verfügbarem Auto

Service Layer

  1. Definieren Sie das Service-Interface und die Datentransferobjekte (DTO’s).
  2. Implementieren Sie die Service-Operationen.
    Der Service-Layer ist verantwortlich für das Konvertieren der DTO’s in Entitäten und
    umgekehrt sowie das Versenden der Fault-Exceptions.
  3. Schreiben Sie die geforderten Tests für den Service-Layer.

"Clean Code"

Ist der Code sauber strukturiert (einheitlicher Stil, keine TODOs, Dokumentation nichttrivialer
Stellen)? Ist der Code in einem Repository eingecheckt? Sind Tests vorhanden?

Reservation hinzufügen

Als Administrator möchte ich eine Reservation erstellen können. Ich bin zufrieden, wenn ich ein Auto und
einen Kunden auswählen, die Eckdaten der Reservation festlegen und diese in der DB speichern kann.

Auto entfernen

Als Administrator möchte ich ein Auto entfernen können. Ich bin zufrieden, wenn ich ein
Auto in der Liste/Tabelle markieren und dieses/diesen nach Bestätigen einer
Sicherheitsrückfrage aus der Liste/Tabelle und der DB entfernen kann.

Erstellen der DB Instanz

Damit auf allen Rechnern des Teams der gleiche
Connection String verwendet werden kann, führen Sie bitte folgendes Script aus:
Assets\AutoReservation.CreateInstance.bat
Prüfen Sie nach dem Ausführen des Scripts den Output auf der Kommandozeile. In der Liste
der lokalen Micros

Test Data Range

Dies sollte mindestens fünf Tests ergeben (2 gültige Kombination 3
ungültige Kombinationen von Datumswerten).

  • Dritter Test für eine ungülitge Kombination von Datumswerten

Constraints/Validierungen für Entities

Bisher hat keine der Entities irgendwelche Constraints und/oder Validierungen für zwingende Felder. Diese werden aber gebraucht, damit nicht ungültige Einträge in die Datenbank hineinkommen.

Optimistic Concurrency Update

Jede Update-Methode muss nach dem Optimistic Concurrency-Prinzip implementiert werden.
Entity Framework löst bei einer Optimistic Concurrency-Verletzung eine Exception vom Typ
DbUpdateConcurrencyException aus. Im Falle des Auftretens einer solchen Exception soll
eine OptimisticConcurrencyException (existiert bereits) geworfen, welche die neuen in der
Datenbank vorhandenen Werte beinhaltet.
Für das Handling dieser Exception kann die bereits bestehende Methode ManagerBase.
CreateOptimisticConcurrencyException(…) direkt im catch-Block aufgerufen und weiter
geworfen werden

Kunden anzeigen

Als Administrator möchte ich alle verfügbaren Kunden angezeigt bekommen, um mir einen
Überblick über die verfügbaren Basisdaten zu verschaffen. Ich bin zufrieden, wenn alle Eigenschaften in
einer Liste/Tabelle angezeigt werden und ich diese nach den Eigenschaften/Spalten sortieren kann.

Business Layer

  1. Implementieren Sie den Business-Layer mit den CRUD-Operationen und diversen
    Checks. Die Update-Operationen sollen Optimistic-Concurrency unterstützen.
  2. Schreiben Sie die geforderten Tests für den Business-Layer.

Reservationen entfernen

Als Administrator möchte ich eine Reservation entfernen können. Ich bin zufrieden, wenn ich eine
Reservation in der Liste/Tabelle markieren und diese aus der Liste/Tabelle und der DB entfernen kann.

Crud Kunde

• Alle Entitäten lesen
• Eine Entität anhand des Primärschlüssels lesen
• Einfügen
• Update
• Löschen

Data Layer

  1. Implementieren Sie den DAL mit dem Entity Framework Code First
  2. Stellen Sie sicher, dass das resultierende Datenbankschema dem der
    Aufgabenstellung entspricht

Reservation überwachen

Als Administrator möchte ich die aktuellen Reservationen anzeigen können, um den Betrieb des
Reservationssystems überwachen zu können. Ich bin zufrieden, wenn ich die Reservationen in einer
chronologisch sortierten Liste/Tabelle ansehen kann, welche sich selbst in regelmässigen Zeitabständen
von einigen Sekunden aktualisiert (Optional: Aktualisierung des User Interfaces in Echtzeit). Zudem hätte
ich gerne einen (standardmässig gesetzten) Filter, um nur die laufenden Reservationen anzuzeigen

Optimistic Concurrency verwenden

Alle Tabellen erhalten einen Zeitstempel, welcher bei jedem Update automatisch von
der Datenbank aktualisiert wird. Beim Speichern wird geprüft, ob der Zeitstempel in der
Tabelle noch gleich dem des zu speichernden Objektes ist. Falls nicht, wurde der
Datensatz in der Zwischenzeit geändert. Dieser Ansatz wird hier empfohlen.

Relativ geringer Aufwand. Es muss aber berücksichtigt werden, dass der Zeitstempel
immer korrekt über die Schichten weitergegeben wird und nie verloren/vergessen
geht.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.