From 3b1ed920618bc7b5f182879ef035f6d67dbd1d9b Mon Sep 17 00:00:00 2001 From: Gabriel Jirjis Date: Thu, 18 Jan 2024 18:14:10 +0100 Subject: [PATCH] finish for README file --- .github/workflows/buildapp.yml | 57 ++++++++++ .github/workflows/docker.yml | 10 +- .gitignore | 2 +- GlobalUsings.cs | 1 - .../PersonNummerValidationTool.csproj | 11 +- PersonNummerValidationTool/Program.cs | 10 +- README.md | 106 ++++++++++++------ xUnitTest/xUnitTest.csproj | 3 +- 8 files changed, 151 insertions(+), 49 deletions(-) create mode 100644 .github/workflows/buildapp.yml delete mode 100644 GlobalUsings.cs diff --git a/.github/workflows/buildapp.yml b/.github/workflows/buildapp.yml new file mode 100644 index 0000000..3e9d97c --- /dev/null +++ b/.github/workflows/buildapp.yml @@ -0,0 +1,57 @@ +name: Build and Publish + +on: + #pull_request: + #branches: + #- '*' + push: + branches: + - '*' + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v2 + + - name: Setup .NET + uses: actions/setup-dotnet@v1 + with: + dotnet-version: '8.0.x' + + - name: Create Temporary Publish Directory + run: mkdir -p publish-temp + + - name: Build and Publish + run: | + dotnet restore --runtime win-x64 + dotnet publish -c Release -o publish-temp/PersonNummerValidationTool --self-contained true -p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=true -p:UseAppHost=true --runtime win-x64 PersonNummerValidationTool/PersonNummerValidationTool.csproj + + - name: Create Target Directory + run: mkdir -p publish + + - name: Move EXE to Target Directory + run: mv publish-temp/PersonNummerValidationTool/*.exe publish/ + + - name: List generated files + run: ls -R publish-temp/PersonNummerValidationTool + + - name: Remove Temporary Publish Directory + run: rm -rf publish-temp + + - name: Upload EXE + uses: actions/upload-artifact@v2 + with: + name: .ZIP-acrhive + path: publish + + - name: Create Downloaded Artifact Directory + run: mkdir -p downloaded-artifact + + - name: Download EXE + uses: actions/download-artifact@v2 + with: + name: .ZIP-acrhive + path: downloaded-artifact diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index e67142d..8c2bae5 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -1,14 +1,14 @@ name: Docker Publish Application on: - #push: - #branches: - #- '*' - - pull_request: + push: branches: - '*' + #pull_request: + #branches: + #- '*' + jobs: build: runs-on: ubuntu-latest diff --git a/.gitignore b/.gitignore index 71ec0d1..4f24831 100644 --- a/.gitignore +++ b/.gitignore @@ -101,7 +101,7 @@ DocProject/Help/Html2 DocProject/Help/html # Click-Once directory -publish/ +#publish/ # Publish Web Output *.Publish.xml diff --git a/GlobalUsings.cs b/GlobalUsings.cs deleted file mode 100644 index 8c927eb..0000000 --- a/GlobalUsings.cs +++ /dev/null @@ -1 +0,0 @@ -global using Xunit; \ No newline at end of file diff --git a/PersonNummerValidationTool/PersonNummerValidationTool.csproj b/PersonNummerValidationTool/PersonNummerValidationTool.csproj index 2150e37..0df6673 100644 --- a/PersonNummerValidationTool/PersonNummerValidationTool.csproj +++ b/PersonNummerValidationTool/PersonNummerValidationTool.csproj @@ -1,10 +1,17 @@  - + Exe net8.0 + true enable enable - + win10-x64 + global using Xunit; + + + + publish\ + diff --git a/PersonNummerValidationTool/Program.cs b/PersonNummerValidationTool/Program.cs index 9d2f619..c34e927 100644 --- a/PersonNummerValidationTool/Program.cs +++ b/PersonNummerValidationTool/Program.cs @@ -1,10 +1,12 @@ -using System; - -class StartProgram +class StartProgram { static void Main() { - Start(); + do + { + Start(); + Console.WriteLine("Do you want to check another personal identity number? (y/n)"); + } while (Console.ReadLine()?.Trim().ToLower() == "y"); } static void Start() diff --git a/README.md b/README.md index ab5511b..12ac5fb 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,14 @@ -![example workflow](https://github.com/Acrozi/Personnummer-validation/actions/workflows/docker.yml/badge.svg)![example workflow](https://github.com/Acrozi/Personnummer-validation/actions/workflows/tests.yml/badge.svg) -# To-do +
+ +![Workflow build](https://github.com/Acrozi/Personnummer-validation/actions/workflows/docker.yml/badge.svg) +![Workflow test](https://github.com/Acrozi/Personnummer-validation/actions/workflows/tests.yml/badge.svg) + +
+ +
+

Personnummer Verification Console Application

+
-# Personnummer Verification Console Application ## Introduktion @@ -12,52 +19,77 @@ Nedan finner du dokumentation om hur du kan köra och testa applikationen både För att köra och testa applikationen lokalt, följ stegen nedan: -1. ## Klona projektet från GitHub: +1. Klona projektet från GitHub: bash - git clone https://github.com/Acrozi/Personnummer-validation.git + `git clone https://github.com/Acrozi/Personnummer-validation.git` -2. # Navigera till projektmappen: +2. Navigera till projektmappen: bash - cd Personnummer-validation + `cd Personnummer-validation` -3. # Öppna projektet i din C#-utvecklingsmiljö t.ex., Visual Studio eller VS Code. +3. Öppna projektet i din C#-utvecklingsmiljö t.ex., Visual Studio eller VS Code. -4. # Bygg projektet: +4. Bygg projektet: bash - dotnet build + `dotnet build` -5. # Kör applikationen: +5. Kör applikationen: bash - dotnet run + `dotnet run` -6. # Använd applikationen för att verifiera personnummer: +6. Använd applikationen för att verifiera personnummer: Följ instruktionerna som visas i konsolen för att ange ett svenskt personnummer och se resultatet av verifieringen. -7. # Kör enhetstester: +7. Kör enhetstester: bash - dotnet test + `dotnet test` - -Se resultaten av enhet testerna för att säkerställa korrekt funktionalitet. +Se resultaten av enhetstesterna för att säkerställa korrekt funktionalitet. ## Körning med Docker -För att köra applikationen med Docker, så måste du kunna lära dig dom olika alternativ som finns, -Att först köra med docker container så måste man ha installerat docker på sin dator, efteråt hämtar man en docker image med hjälp av att öppna terminaler eller kommandoprompt. Man hämtar docker image med hjälp av att använda -Här är OPTIONS för de olika alternativen som kan användas med docker exec-kommandot, CONTAINER är namnet eller ID på behållaren där kommandot ska köras, COMMAND är kommandot som ska köras och ARG är argumentet. passerade att ge order till kommandot. +För att korrekt installera och köra programmet "Personnummer Validation" via Docker, följ dessa steg: + +1. Se till att Docker är korrekt installerat och att Docker Desktop körs. Kontrollera att Docker Daemon är igång. (https://www.docker.com/products/docker-desktop/) + +2. Använd kommandot `docker pull acrozi/personnummer_validation-docker` för att hämta Docker-bilden från Docker Hub och ladda ner den lokalt. + +3. Använd kommandot `docker images` för att visa en lista över alla lokalt sparade Docker-images. Kontrollera att `acrozi/personnummer_validation-docker` finns i listan. + +4. Använd kommandot `docker run acrozi/personnummer_validation-docker` för att köra programmet i en Docker-container. För Windows-användare som använder en terminal som stöder interaktivt läge kan du använda kommandot utan winpty. Om du har problem med det, prova med kommandot `winpty docker run -it acrozi/personnummer_validation-docker`. Kommandot `-it` möjliggör att vi kan köra programmet interaktivt vilket gör att vi kan mata in data. + +5. Följ instruktionerna i terminalen för att interagera med programmet. Ange personnummer när det efterfrågas. +## Körning med .EXE +Via github actions skapas ett körbart program. +1. Gå in på webbsidan https://github.com/Acrozi/Personnummer-validation/actions/runs/7572835865/artifacts/1178651670 +2. Ladda ned och packa upp zip-filen och kör programmet. +3. Följ instruktionerna i terminalen för att interagera med programmet. Ange personnummer när det efterfrågas. +## Enhetstester +För att säkerställa korrekt funktionalitet har enhetstester skapats med hjälp av xUnit-ramverket. Några av de testade scenarierna inkluderar: -########################################################################################### +1. Validering av personnummer med korrekt format. -Niklas del +2. Ogiltiga personnummer i olika format som förväntas returnera false. + +3. Hämtning av könet baserat på näst sista siffran i giltiga personnummer. + +4. Kastning av ArgumentException vid försök att hämta kön från ett ogiltigt personnummer. + +5. Projektstruktur: + +Projektet innehåller två projekt + +PersonNummerValidationTool: Huvudprojektet som innehåller kodfilen SwedishPersonalNumberValidator.cs. +xUnitTest: Projektet som innehåller xUnit-testerna för att validera koden ## Personnummer @@ -67,7 +99,7 @@ Ett personnummer är uppbyggt av 10 siffror indelade i två grupper om 6 respekt Ett personnummer kan matas in på olika sätt, bland annat genom 12 siffror, 10 siffror med bindestreck eller 10 siffror utan bindestreck. -För att kontrollera detta använder vi funktionen `IsValid`: +För att kontrollera detta använder programmet funktionen `IsValid`: ```csharp public static bool IsValid(string personalNumber) @@ -107,7 +139,7 @@ För att kontrollera detta använder vi funktionen `IsValid`: } ``` Genom att kontrollera den nionde siffran i personnumret kan vi avgöra om personen är en man eller en kvinna, jämn siffra för kvinnor och udda siffra för män. -Detta kontrollerar vi genom funktionen `GetGender`: +Detta kontrollerar programmet genom funktionen `GetGender`: ```csharp @@ -131,7 +163,7 @@ Detta kontrollerar vi genom funktionen `GetGender`: ``` Personnummer kan beräknas för att se om det är äkta. Detta görs genom att man multiplicerar de 9 första siffrorna med omväxlande 2 och 1. De respektive siffersummorna adderas. Om man adderar kontrollsiffran(sista siffran) till denna summa skall man få ett tal jämt delbart med 10. -Detta kontrollerar vi genom funktionen `CalculateChecksum`: +Detta kontrollerar programmet genom funktionen `CalculateChecksum`: ```csharp @@ -157,15 +189,19 @@ Detta kontrollerar vi genom funktionen `CalculateChecksum`: return checksum; } ``` -## Collaborators - - niklasallard1 - - acrozi - - jirjis77 - - Heithum123 - +## Svenska Regler för Personnummer + +Svenska personnummer följer ett specifikt format och har regler för att bestämma dess giltighet. Applikationen genomför kontroller för att säkerställa att personnumret är korrekt enligt dessa regler. + +## Övrig Information + +För ytterligare detaljer och användning, se dokumentationen i källkoden och README.md filen i GitHub. +Lycka till med användningen av personnummerkontroll applikationen! +
+

Collaborators

+ + + +
diff --git a/xUnitTest/xUnitTest.csproj b/xUnitTest/xUnitTest.csproj index dbd2fdc..9907635 100644 --- a/xUnitTest/xUnitTest.csproj +++ b/xUnitTest/xUnitTest.csproj @@ -9,6 +9,7 @@ false true + global using Xunit; @@ -26,6 +27,6 @@ - +