• No results found

Schemalagda aktiviteter och uppladdningar

4.5.1 Komponenter

I följande lista sammanfattas de komponenter som används för specialiserad inmatning av ett uppladdningsschema som lagras i applikationens tillstånd.

ScheduleInput

Selektivt ritar ut den nuvarande valda schemaläggningstypen. Det är möjligt att välja mellan daglig, veckolig och månatlig schemaläggning samt schemaläggning efter intervall (varje minut eller timme) och även ingen schemaläggning alls.

TimePicker

Specialiserad inmatningskomponent för inmatning av ett klockslag. Sparar timme och minut i den utbyggnad av ”model”-strängen som ges. • WeekPicker

Specialiserad inmatningskomponent för inmatning av dagar i veckan (måndag – söndag). Varje dag representeras av ett värde från 0 – 6 och lagras i en lista i applikationens tillstånd enligt utbyggnaden av ”model”-strängen.

MonthPicker

Specialiserad inmatningskomponent för inmatning av datum för varje månad. Varje datum representeras av ett värde från 1 – 31 och väljs genom att klicka in ”checkbox”-fält. Valda datum lagras i applikationens tillstånd enligt utbyggnaden av ”model”-strängen.

DailySchedule

Denna komponent visas när ”ScheduleInput” är satt på daglig schemaläggning. En ”TimePicker”-komponent ritas ut och användaren väljer ett klockslag.

WeeklySchedule

Denna komponent visas när ”ScheduleInput” är satt på veckolig schemaläggning. En ”TimePicker”- och en ”WeekPicker”-komponent ritas ut och användaren kan då välja vilket klockslag och vilka dagar i veckan aktiviteten ska köras.

MonthlySchedule

Denna komponent visas när ”ScheduleInput” är satt på månatlig schemaläggning. En ”TimePicker”- och ”MonthPicker”-komponent ritas

ut och användaren kan välja ett klockslag samt vilka datum i månaden som aktiviteten ska köras.

IntervalSchedule

Denna komponent visas när ”ScheduleInput” är satt på schemaläggning enligt intervall. Användaren kan välja både mellan att schemalägga aktiviteten efter ett visst antal minuter, timmar eller både och.

4.5.2 Lagring av schema från ScheduleInput

Komponenten ”ScheduleInput” tar en attribut ”model” som representerar platsen i applikationens tillstånd där information om det schema som representeras av komponenten. ”model” skickas även ner till den komponent som ritas ut, exempelvis ”DailySchedule” eller ”WeeklySchedule”. Dessa bygger ut strängen för att spara deras resultat i en separat del i applikationens tillstånd.

Om ”model” för ”ScheduleInput” är ”test.schedule” så hamnar exempelvis ”DailySchedule” under ”test.schedule.daily”. I applikationens tillstånd kan det exempelvis se ut på följande sätt när användaren sätter ett klockslag för daglig schemaläggning: test: { schedule: { occurrence: DAILY, DAILY: { time: { hour: '12', minute: '30' } } } }

För att avgöra vilken typ av schemaläggning som nuvarande är aktiv används fördefinierade konstanter, exempelvis ”DAILY” som motsvarar en sträng kallad ”daily”. Dessa är definierade så att det är lättare för andra delar av systemet att identifiera nuvarande schemaläggning och används exempelvis när ett schema sparas i applikationens tillstånd.

4.5.3 Schemaläggning

För själva schemaläggningen av aktiviteter används biblioteket ”node-cron” som använder cron-strängar för att beskriva med vilken frekvens en aktivitet ska köras. Programmet tar ett schema av typen som ”ScheduleInput” sparar i applikationens tillstånd och konverterar den till en giltig cron-sträng.

”node-cron” används i ”actions” som hanterar schemaläggningen av aktiviteter. Det finns ”actions” som schemalägger en ny aktivitet enligt en cron-sträng med ett identifierande namn, startar, stoppar och tar bort aktiviteter. Dessa hanteras i applikationens tillstånd genom Redux. En aktivitet stoppas om den redan finns och körs.

4.5.4 Schemalagda uppladdningar

En ”ScheduleInput”-komponent kan hittas i applikationens inställningar under ”model”-strängen ”electra.settings.upload.schedule”. Detta schema representerar med vilken frekvens uppladdningar ska ske.

Containerkomponenten ”JobScheduler” hanterar schemaläggningen av uppladdningar genom att lyssna på ändringar i detta schema i applikationens tillstånd och även detaljer som käll- och målmapp. Den är ansluten genom ”react-redux”-bibliotekets ”connect”-funktion. När en ändring sker schemaläggs uppladdningsaktiviteten och startas om. Eftersom schemat är en del av inställningssystemet läses den in från fil när applikationen startar. Det innebär att ”JobScheduler” schemalägger uppladdningen när applikationen startar.

”JobScheduler” använder den nuvarande lagrade schemaläggningen ur applikationens tillstånd för att få fram en cron-sträng som kan användas för att definiera vilket intervall som ska användas. Den läser filer från en mapp, laddar upp dessa och flyttar dem till en målmapp om uppladdningen lyckades. Notifieringar skickas ut genom ”actions” vid eventuella fel för att informera användaren och dyker upp i notifieringsstacken.

Den funktion som aktiveras vid schemaläggningen är ”scheduledUpload”. Den tar en käll- och målmapp samt en uppladdningsservice som parametrar. Filer läses in från källmappen och laddas upp med den uppladdningsservice som skickas in. Lyckade uppladdningar flyttas till målmappen och misslyckade uppladdningar stannar kvar i källmappen.

De data som behövs för att köra funktionen anges i applikationens inställningar som sparas dels på fil men även i applikationens tillstånd. ”JobScheduler” plockar ut den data som behövs för schemaläggningen ur applikationens tillstånd.

Notifieringar skickas ut till användaren när filer laddas upp, då hur många som laddades upp, eller när fel inträffar.

5 Resultat

5.1 Enhetstester

Enhetstesterna består av 179 separata test som testar applikationens actions, reducers, komponenter och övriga system.

Körning av enhetstesterna visar att:

• Applikationens actions och reducers fungerar med varandra på ett sätt så att applikationen korrekt hanterar uppdateringar i dess tillstånd.

• De komponenter som användaren ser och använder i gränssnittet ritas ut enligt förväntan och hanterar förväntade och oväntade attribut på ett korrekt sätt.

• Interaktion med komponenter, exempelvis knapptryck eller förändringar i inmatningsfält, fungerar enligt förväntan.

• Inställningssystemet fungerar enligt kravspecifikationen. Inställningsobjektet har enligt mallsystemet en korrekt struktur, inställningar kan skrivas till och från en fil samt skapa en fil med standardinställningar om en inställningsfil inte finns.

• Applikationen hanterar översättning av text synlig för användaren till andra språk enligt kravspecifikationen. Extrahering av översättbar text hanteras enligt kravspecifikationen.

• Automatiska uppdateringar är integrerade med Electron på ett korrekt sätt genom autoUpdater-modulen för Windows och Mac. Information skickas ut till användaren genom notifieringar. Notifieringssystemets actions, reducers och komponenter fungerar enligt förväntan.

• Ett system för schemalagda aktiviteter fungerar enligt förväntan. • Schemalagda uppladdningar av filer från en käll- till målmapp på vissa

tider eller intervall fungerar enligt förväntan.

5.1.1 Windows

Testerna kördes på Windows 10 Pro 64-bit. Alla 179 test godkändes. En detaljerad lista kan ses i bilaga I.

5.1.2 Mac

Testerna kördes på Mac OS X El Capitan 10.11.4. Alla 179 test godkändes. En detaljerad lista kan ses i bilaga I.

5.1.3 Linux

Testerna kördes på Ubuntu 14.04 64-bit. Alla 179 test godkändes. En detaljerad lista kan ses i bilaga I.

Related documents