# Lab 2 - Kommunicera med github
## Syfte
De system vi bygger existera sällan enbart på enheten utan hämtar och lagrar information på externa tjänster. I denna laboration ska du träna på att skapa gränssnitt som bygger på information som du hämtar från github. I den här övningen kommer vi arbete med:
- Asynkrona nätverksanrop
- Jobba med REST
- Dynamiskt förändra gränssnittet
- Multipla skrämvyer
- Testning
Flutter ger dig möjligheten att kommunicera med externa tjänster över nätverk. I denna laboration ska du skapa en applikation som kommunicerar med Github. Ni kommer använda HTTP+REST med json som databärare för att kommunicera med Github. För den här uppgiften har Github gjort arbetet åt dig på back-end:en, så du ska enbart fouksera på klienten.
## Uppgift del 1
GitHub har en funktion för att visa vilka projekt och utvecklare som det händer och diskuteras mest kring under en given tidsperiod [Trending](https://github.com/trending). Githubs Tredning rankning är baserat på antal stjärnor givet under en given tidsperiod, med en viss anpassning för att stoppa manipulering utifrån. Den github anpassade Trending informationen finns tillgänglig via GitHubs REST-API. Du ska skapa en applikation som för ett givet språk hämtar ut de projekt från github som det pratas mest om (Trending se ovan), du får själv välja tidsperiod. Presentera projekten för användaren, om användaren väljer att klicka på ett projekt ska mer detaljerad information kring projektet visas i en ny vy.
### Användargränssnitt exempel (du väljer själv hur du vill att din applikation ska se ut)



## Uppgift del 2 Testning
Lägg till ett instrumentellt testfall för din applikation (t.ex. med hjälp av Flutters flutter_test eller integration_test-paket).
### Vad är Instrumentell Gränssnittstestning?
Instrumentell gränssnittstestning är en metod där man automatiskt testar en applikations grafiska användargränssnitt (GUI) genom att köra appen på en riktig enhet eller en emulator.
Till skillnad från enhetstester (unit tests) som testar små, isolerade koddelar (som en enskild funktion), simulerar instrumentella tester faktiska användarinteraktioner. Testkoden "instrumenterar" appen och kan utföra åtgärder som att trycka på knappar, skriva i textfält och svepa över skärmen.
### Målet är att automatisera och verifiera appens kärnflöde.
Testet bör:
- Starta appen
- Simulera en interaktion, till exempel välj ett språk i listan
- Verifera resultaten, listan på projekt är uppdaterad
## Redovisning
Demonstrera dina gränssnitt, och kör ditt test för lab assistenten, assistenten kan be dig förklara delar av koden. Assistenten berättar hur hen vill att du lämnar in din kod.
## Länkar
- [GitHub Developer REST API](https://docs.github.com/en/rest?apiVersion=2022-11-28)
- [Flutter Nätverksanrop](https://docs.flutter.dev/cookbook/networking/fetch-data)



Sidansvarig: Eva Blomqvist
Senast uppdaterad: 2024-10-02
