Skip to content

tomasis7/testing-boiler

Repository files navigation

Todo List - Enhets- och Integrationstestning

En interaktiv todo-list applikation byggd med React, TypeScript och Vite som demonstrerar omfattande enhetstestning och integrationstestning av React-komponenter.

Projektbeskrivning

Denna applikation implementerar en fullständig todo-list med följande funktionalitet:

  • Lägga till nya todos med validering
  • Markera todos som slutförda/ej slutförda
  • Ta bort todos
  • Persistent lagring i localStorage
  • Responsiv och användarvänlig design

Applikationen består av fyra huvudkomponenter som demonstrerar komponentkommunikation genom props och callbacks:

Komponentarkitektur

TodoApp (Huvudcontainer)

  • Hanterar global todo-state med useState
  • Integrerar med localStorage för persistence
  • Koordinerar kommunikation mellan underkomponenter

TodoList (Listcontainer)

  • Tar emot todos via props från förälder
  • Renderar TodoItem-komponenter dynamiskt
  • Hanterar tomma tillstånd

TodoItem (Individuell todo)

  • Visar enskilda todos med interaktiva element
  • Hanterar toggle/delete-användarinteraktioner
  • Kommunicerar med förälder via callbacks

AddTodoForm (Inputformulär)

  • Hanterar lokal input-state
  • Validerar användarinput (tom text, längd)
  • Skickar nya todos via callback

Installation

Kör följande kommando för att installera alla beroenden:

npm install

Utveckling

Starta utvecklingsservern:

npm run dev

Applikationen kommer att vara tillgänglig på http://localhost:5173

Byggning

Bygg applikationen för produktion:

npm run build

Förhandsgranska produktionsbygget:

npm run preview

Testning

Denna applikation har 100% testtäckning med omfattande enhetstester och integrationstester.

Kör alla tester

npm test

Kör tester en gång (utan watch mode)

npm run test:run

Kör tester med UI-gränssnitt

npm run test:ui

Generera täckningsrapport

npm run coverage

Täckningsrapporten genereras i ./coverage/ mappen. Öppna ./coverage/index.html i en webbläsare för detaljerad täckningsanalys.

Testningsstrategi

Enhetstester

Varje komponent testas isolerat med fokus på:

  • Rendering och UI-logik
  • State-hantering
  • Användarinteraktioner
  • Props-hantering
  • Validering och felhantering

Integrationstester

Tester som verifierar kommunikation mellan komponenter:

  • Props-överföring från förälder till barn
  • Callback-funktioner från barn till förälder
  • Kompletta användararbetsflöden
  • State-synkronisering

Mockning

Strategisk mockning av:

  • localStorage-operationer
  • Date.now() för konsistenta timestamps
  • React DOM rendering (main.tsx)
  • Formulärhändelser

Testtäckning

  • Statements: 100%
  • Branches: 100%
  • Functions: 100%
  • Lines: 100%

Kodkvalitet

Kör ESLint för kodgranskning:

npm run lint

Teknisk Stack

  • Frontend: React 19 + TypeScript
  • Build Tool: Vite 7
  • Testing: Vitest + @testing-library/react
  • Coverage: Istanbul
  • Linting: ESLint med TypeScript-regler

Projektstruktur

src/
├── App.tsx                    # Huvudkomponent med state-hantering
├── main.tsx                   # Applikationsingång
├── components/
│   ├── TodoList.tsx          # Lista-container komponent
│   ├── TodoItem.tsx          # Individuell todo-komponent
│   └── AddTodoForm.tsx       # Formulärkomponent
└── *.test.tsx                # Testfiler för respektive komponenter
└── integration.test.tsx      # Integrationstester

Användning

  1. Skriv in en todo i textfältet
  2. Klicka "Add Todo" eller tryck Enter
  3. Klicka på checkboxen för att markera som slutförd
  4. Klicka "Delete" för att ta bort en todo
  5. Todos sparas automatiskt i localStorage

Presentation och Reflektion

Detta projekt demonstrerar:

Tekniska färdigheter:

  • Moderna React-mönster med hooks
  • TypeScript för typsäkerhet
  • Omfattande teststrategier
  • Komponentarkitektur och state-hantering

Testinsikter:

  • Vikten av isolerade enhetstester
  • Integration testing för komponentkommunikation
  • Strategisk mockning för externa beroenden
  • 100% täckning som kvalitetsindikator

Lärdomar:

  • Testning från början förbättrar koddesign
  • Integration tests fångar verkliga användarscenarier
  • Mocking gör tester förutsägbara och snabba
  • Komponentarkitektur påverkar testbarhet

Projektet uppfyller alla krav för väl godkänt genom omfattande testning, 100% täckning, strategisk mockning och professionell koddokumentation.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published