From ee150c33ab460f9ed627c06c1aedd6613325798e Mon Sep 17 00:00:00 2001 From: Mathew Dasalla <122158578+ConnorSp0@users.noreply.github.com> Date: Mon, 21 Jul 2025 12:51:48 +0800 Subject: [PATCH 1/7] Set up CI with Azure Pipelines [skip ci] --- azure-pipelines-1.yml | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 azure-pipelines-1.yml diff --git a/azure-pipelines-1.yml b/azure-pipelines-1.yml new file mode 100644 index 00000000000..bf56801d7bf --- /dev/null +++ b/azure-pipelines-1.yml @@ -0,0 +1,34 @@ +# ASP.NET +# Build and test ASP.NET projects. +# Add steps that publish symbols, save build artifacts, deploy, and more: +# https://docs.microsoft.com/azure/devops/pipelines/apps/aspnet/build-aspnet-4 + +trigger: +- main + +pool: + vmImage: 'windows-latest' + +variables: + solution: '**/*.sln' + buildPlatform: 'Any CPU' + buildConfiguration: 'Release' + +steps: +- task: NuGetToolInstaller@1 + +- task: NuGetCommand@2 + inputs: + restoreSolution: '$(solution)' + +- task: VSBuild@1 + inputs: + solution: '$(solution)' + msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactStagingDirectory)"' + platform: '$(buildPlatform)' + configuration: '$(buildConfiguration)' + +- task: VSTest@2 + inputs: + platform: '$(buildPlatform)' + configuration: '$(buildConfiguration)' From 3eab43a21d33d29016b040cdc4a5eede551e35c4 Mon Sep 17 00:00:00 2001 From: "Dasalla, John Mathew" Date: Tue, 22 Jul 2025 15:36:51 +0800 Subject: [PATCH 2/7] main branch fix --- azure-pipelines-1.yml | 34 ----------------------- azure-pipelines.yml | 63 +++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 61 insertions(+), 36 deletions(-) delete mode 100644 azure-pipelines-1.yml diff --git a/azure-pipelines-1.yml b/azure-pipelines-1.yml deleted file mode 100644 index bf56801d7bf..00000000000 --- a/azure-pipelines-1.yml +++ /dev/null @@ -1,34 +0,0 @@ -# ASP.NET -# Build and test ASP.NET projects. -# Add steps that publish symbols, save build artifacts, deploy, and more: -# https://docs.microsoft.com/azure/devops/pipelines/apps/aspnet/build-aspnet-4 - -trigger: -- main - -pool: - vmImage: 'windows-latest' - -variables: - solution: '**/*.sln' - buildPlatform: 'Any CPU' - buildConfiguration: 'Release' - -steps: -- task: NuGetToolInstaller@1 - -- task: NuGetCommand@2 - inputs: - restoreSolution: '$(solution)' - -- task: VSBuild@1 - inputs: - solution: '$(solution)' - msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactStagingDirectory)"' - platform: '$(buildPlatform)' - configuration: '$(buildConfiguration)' - -- task: VSTest@2 - inputs: - platform: '$(buildPlatform)' - configuration: '$(buildConfiguration)' diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 23402e427df..bfbd290d264 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -1,3 +1,62 @@ -pool: MyAgentPool +trigger: +- main # Only trigger when changes are pushed to main + +pool: + vmImage: 'ubuntu-20.04' + demands: + - npm + +variables: + buildConfiguration: 'Release' + wwwrootDir: 'Tailspin.SpaceGame.Web/wwwroot' + dotnetSdkVersion: '6.x' + steps: -- bash: echo hello world \ No newline at end of file +- task: UseDotNet@2 + displayName: 'Use .NET SDK $(dotnetSdkVersion)' + inputs: + version: '$(dotnetSdkVersion)' + +- task: Npm@1 + displayName: 'Install Node.js dependencies' + inputs: + verbose: false + +- script: './node_modules/.bin/node-sass $(wwwrootDir) --output $(wwwrootDir)' + displayName: 'Compile Sass assets' + +- task: Gulp@1 + displayName: 'Run Gulp tasks' + +- script: 'echo "$(Build.DefinitionName), $(Build.BuildId), $(Build.BuildNumber)" > buildinfo.txt' + displayName: 'Write build info to file' + workingDirectory: $(wwwrootDir) + +- task: DotNetCoreCLI@2 + displayName: 'Restore NuGet packages' + inputs: + command: 'restore' + projects: '**/*.csproj' + +- task: DotNetCoreCLI@2 + displayName: 'Build the project - $(buildConfiguration)' + inputs: + command: 'build' + arguments: '--no-restore --configuration $(buildConfiguration)' + projects: '**/*.csproj' + +- task: DotNetCoreCLI@2 + displayName: 'Publish the project - $(buildConfiguration)' + inputs: + command: 'publish' + projects: '**/*.csproj' + publishWebProjects: false + arguments: '--no-build --configuration $(buildConfiguration) --output $(Build.ArtifactStagingDirectory)/$(buildConfiguration)' + zipAfterPublish: true + +- task: PublishBuildArtifacts@1 + displayName: 'Publish Artifact: drop' + inputs: + pathToPublish: '$(Build.ArtifactStagingDirectory)/$(buildConfiguration)' + artifactName: 'drop' + condition: succeeded() From f652d0e254c4d6a583f33c29e6238d54d9ae96c3 Mon Sep 17 00:00:00 2001 From: "Dasalla, John Mathew" Date: Tue, 22 Jul 2025 16:33:47 +0800 Subject: [PATCH 3/7] sample change --- Tailspin.SpaceGame.Web/Views/Home/Index.cshtml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Tailspin.SpaceGame.Web/Views/Home/Index.cshtml b/Tailspin.SpaceGame.Web/Views/Home/Index.cshtml index f7c4c886074..c80bc5c37a4 100644 --- a/Tailspin.SpaceGame.Web/Views/Home/Index.cshtml +++ b/Tailspin.SpaceGame.Web/Views/Home/Index.cshtml @@ -5,7 +5,7 @@
Space Game -

An example site for learning

+

Modification Sample

From a7847a92dace95091c1eea96cf007aea50747da7 Mon Sep 17 00:00:00 2001 From: Mathew Dasalla <122158578+ConnorSp0@users.noreply.github.com> Date: Wed, 23 Jul 2025 12:27:22 +0800 Subject: [PATCH 4/7] Set up CI with Azure Pipelines [skip ci] --- azure-pipelines-1.yml | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 azure-pipelines-1.yml diff --git a/azure-pipelines-1.yml b/azure-pipelines-1.yml new file mode 100644 index 00000000000..203013b7d9f --- /dev/null +++ b/azure-pipelines-1.yml @@ -0,0 +1,34 @@ +# ASP.NET Core (.NET Framework) +# Build and test ASP.NET Core projects targeting the full .NET Framework. +# Add steps that publish symbols, save build artifacts, and more: +# https://docs.microsoft.com/azure/devops/pipelines/languages/dotnet-core + +trigger: +- main + +pool: + vmImage: 'windows-latest' + +variables: + solution: '**/*.sln' + buildPlatform: 'Any CPU' + buildConfiguration: 'Release' + +steps: +- task: NuGetToolInstaller@1 + +- task: NuGetCommand@2 + inputs: + restoreSolution: '$(solution)' + +- task: VSBuild@1 + inputs: + solution: '$(solution)' + msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:DesktopBuildPackageLocation="$(build.artifactStagingDirectory)\WebApp.zip" /p:DeployIisAppPath="Default Web Site"' + platform: '$(buildPlatform)' + configuration: '$(buildConfiguration)' + +- task: VSTest@2 + inputs: + platform: '$(buildPlatform)' + configuration: '$(buildConfiguration)' From 49067e4b36ef457c7be2ed3c23eb71237ba5c431 Mon Sep 17 00:00:00 2001 From: "Dasalla, John Mathew" Date: Wed, 23 Jul 2025 15:55:55 +0800 Subject: [PATCH 5/7] Added task for Artifact Package --- ...Tailspin.SpaceGame.Web_ErrorViewModel.html | 999 +++++++++++++ ...Tailspin.SpaceGame.Web_HomeController.html | 1133 +++++++++++++++ ...in.SpaceGame.Web_LeaderboardViewModel.html | 1049 ++++++++++++++ ...eGame.Web_LocalDocumentDBRepository_1.html | 1081 ++++++++++++++ .../Tailspin.SpaceGame.Web_Model.html | 1002 +++++++++++++ .../Tailspin.SpaceGame.Web_Profile.html | 1011 +++++++++++++ .../Tailspin.SpaceGame.Web_Program.html | 1007 +++++++++++++ .../Tailspin.SpaceGame.Web_Score.html | 1017 +++++++++++++ .../Tailspin.SpaceGame.Web_Startup.html | 1064 ++++++++++++++ ...ilspin.SpaceGame.Web_Views_Home_Index.html | 1258 +++++++++++++++++ ...spin.SpaceGame.Web_Views_Home_Privacy.html | 994 +++++++++++++ ...spin.SpaceGame.Web_Views_Home_Profile.html | 1023 ++++++++++++++ ...spin.SpaceGame.Web_Views_Shared_Error.html | 1010 +++++++++++++ ...eb_Views_Shared__CookieConsentPartial.html | 1030 ++++++++++++++ ...ilspin.SpaceGame.Web_Views__ViewStart.html | 991 +++++++++++++ CodeCoverage/index.htm | 1153 +++++++++++++++ CodeCoverage/index.html | 1153 +++++++++++++++ .../Tailspin.SpaceGame.Web.csproj | 8 + azure-pipelines.yml | 8 + nuget.config | 1 + 20 files changed, 17992 insertions(+) create mode 100644 CodeCoverage/Tailspin.SpaceGame.Web_ErrorViewModel.html create mode 100644 CodeCoverage/Tailspin.SpaceGame.Web_HomeController.html create mode 100644 CodeCoverage/Tailspin.SpaceGame.Web_LeaderboardViewModel.html create mode 100644 CodeCoverage/Tailspin.SpaceGame.Web_LocalDocumentDBRepository_1.html create mode 100644 CodeCoverage/Tailspin.SpaceGame.Web_Model.html create mode 100644 CodeCoverage/Tailspin.SpaceGame.Web_Profile.html create mode 100644 CodeCoverage/Tailspin.SpaceGame.Web_Program.html create mode 100644 CodeCoverage/Tailspin.SpaceGame.Web_Score.html create mode 100644 CodeCoverage/Tailspin.SpaceGame.Web_Startup.html create mode 100644 CodeCoverage/Tailspin.SpaceGame.Web_Views_Home_Index.html create mode 100644 CodeCoverage/Tailspin.SpaceGame.Web_Views_Home_Privacy.html create mode 100644 CodeCoverage/Tailspin.SpaceGame.Web_Views_Home_Profile.html create mode 100644 CodeCoverage/Tailspin.SpaceGame.Web_Views_Shared_Error.html create mode 100644 CodeCoverage/Tailspin.SpaceGame.Web_Views_Shared__CookieConsentPartial.html create mode 100644 CodeCoverage/Tailspin.SpaceGame.Web_Views__ViewStart.html create mode 100644 CodeCoverage/index.htm create mode 100644 CodeCoverage/index.html create mode 100644 nuget.config diff --git a/CodeCoverage/Tailspin.SpaceGame.Web_ErrorViewModel.html b/CodeCoverage/Tailspin.SpaceGame.Web_ErrorViewModel.html new file mode 100644 index 00000000000..272ced47505 --- /dev/null +++ b/CodeCoverage/Tailspin.SpaceGame.Web_ErrorViewModel.html @@ -0,0 +1,999 @@ + + + + + + + +TailSpin.SpaceGame.Web.Models.ErrorViewModel - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:TailSpin.SpaceGame.Web.Models.ErrorViewModel
Assembly:Tailspin.SpaceGame.Web
File(s):C:\Users\john.mathew.dasalla\Documents\ACN\DevOpUpskillin\mslearn-tailspin-spacegame-web\Tailspin.SpaceGame.Web\Models\ErrorViewModel.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:2
Coverable lines:2
Total lines:9
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++++ + + + + + +
MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
get_RequestId()100%210%
get_ShowRequestId()100%210%
+
+

File(s)

+

C:\Users\john.mathew.dasalla\Documents\ACN\DevOpUpskillin\mslearn-tailspin-spacegame-web\Tailspin.SpaceGame.Web\Models\ErrorViewModel.cs

+
+ + + + + + + + + + + + + +
#LineLine coverage
 1namespace TailSpin.SpaceGame.Web.Models
 2{
 3    public class ErrorViewModel
 4    {
 05        public string RequestId { get; set; }
 6
 07        public bool ShowRequestId => !string.IsNullOrEmpty(RequestId);
 8    }
 9}
+
+
+
+
+

Methods/Properties

+get_RequestId()
+get_ShowRequestId()
+
+
+ + \ No newline at end of file diff --git a/CodeCoverage/Tailspin.SpaceGame.Web_HomeController.html b/CodeCoverage/Tailspin.SpaceGame.Web_HomeController.html new file mode 100644 index 00000000000..66054fd5a0c --- /dev/null +++ b/CodeCoverage/Tailspin.SpaceGame.Web_HomeController.html @@ -0,0 +1,1133 @@ + + + + + + + +TailSpin.SpaceGame.Web.Controllers.HomeController - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:TailSpin.SpaceGame.Web.Controllers.HomeController
Assembly:Tailspin.SpaceGame.Web
File(s):C:\Users\john.mathew.dasalla\Documents\ACN\DevOpUpskillin\mslearn-tailspin-spacegame-web\Tailspin.SpaceGame.Web\Controllers\HomeController.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:60
Coverable lines:60
Total lines:137
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
0%
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:16
Branch coverage:0%
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++++ + + + + + + + + +
MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%210%
Index()0%4260%
Profile()100%210%
Privacy()100%210%
Error()0%2040%
+
+

File(s)

+

C:\Users\john.mathew.dasalla\Documents\ACN\DevOpUpskillin\mslearn-tailspin-spacegame-web\Tailspin.SpaceGame.Web\Controllers\HomeController.cs

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1using System;
 2using System.Collections.Generic;
 3using System.Diagnostics;
 4using System.Linq;
 5using System.Threading.Tasks;
 6using Microsoft.AspNetCore.Mvc;
 7using TailSpin.SpaceGame.Web.Models;
 8
 9namespace TailSpin.SpaceGame.Web.Controllers
 10{
 11    public class HomeController : Controller
 12    {
 13        // High score repository.
 14        private readonly IDocumentDBRepository<Score> _scoreRepository;
 15        // User profile repository.
 16        private readonly IDocumentDBRepository<Profile> _profileRespository;
 17
 018        public HomeController(
 019            IDocumentDBRepository<Score> scoreRepository,
 020            IDocumentDBRepository<Profile> profileRespository
 021            )
 22        {
 023            _scoreRepository = scoreRepository;
 024            _profileRespository = profileRespository;
 025        }
 26
 27        public async Task<IActionResult> Index(
 28            int page = 1,
 29            int pageSize = 10,
 30            string mode = "",
 31            string region = ""
 32            )
 33        {
 34            // Create the view model with initial values we already know.
 035            var vm = new LeaderboardViewModel
 036            {
 037                Page = page,
 038                PageSize = pageSize,
 039                SelectedMode = mode,
 040                SelectedRegion = region,
 041
 042                GameModes = new List<string>()
 043                {
 044                    "Solo",
 045                    "Duo",
 046                    "Trio"
 047                },
 048
 049                GameRegions = new List<string>()
 050                {
 051                    "Milky Way",
 052                    "Andromeda",
 053                    "Pinwheel",
 054                    "NGC 1300",
 055                    "Messier 82",
 056                }
 057            };
 58
 59            try
 60            {
 61                // Form the query predicate.
 62                // Select all scores that match the provided game mode and region (map).
 63                // Select the score if the game mode or region is empty.
 064                Func<Score, bool> queryPredicate = score =>
 065                    (string.IsNullOrEmpty(mode) || score.GameMode == mode) &&
 066                    (string.IsNullOrEmpty(region) || score.GameRegion == region);
 67
 68                // Fetch the total number of results in the background.
 069                var countItemsTask = _scoreRepository.CountItemsAsync(queryPredicate);
 70
 71                // Fetch the scores that match the current filter.
 072                IEnumerable<Score> scores = await _scoreRepository.GetItemsAsync(
 073                    queryPredicate, // the predicate defined above
 074                    score => score.HighScore, // sort descending by high score
 075                    page - 1, // subtract 1 to make the query 0-based
 076                    pageSize
 077                  );
 78
 79                // Wait for the total count.
 080                vm.TotalResults = await countItemsTask;
 81
 82                // Set previous and next hyperlinks.
 083                if (page > 1)
 84                {
 085                    vm.PrevLink = $"/?page={page - 1}&pageSize={pageSize}&mode={mode}&region={region}#leaderboard";
 86                }
 087                if (vm.TotalResults > page * pageSize)
 88                {
 089                    vm.NextLink = $"/?page={page + 1}&pageSize={pageSize}&mode={mode}&region={region}#leaderboard";
 90                }
 91
 92                // Fetch the user profile for each score.
 93                // This creates a list that's parallel with the scores collection.
 094                var profiles = new List<Task<Profile>>();
 095                foreach (var score in scores)
 96                {
 097                    profiles.Add(_profileRespository.GetItemAsync(score.ProfileId));
 98                }
 099                Task<Profile>.WaitAll(profiles.ToArray());
 100
 101                // Combine each score with its profile.
 0102                vm.Scores = scores.Zip(profiles, (score, profile) => new ScoreProfile { Score = score, Profile = profile
 103
 0104                return View(vm);
 105            }
 0106            catch (Exception)
 107            {
 0108                return View(vm);
 109            }
 0110        }
 111
 112        [Route("/profile/{id}")]
 113        public async Task<IActionResult> Profile(string id, string rank="")
 114        {
 115            try
 116            {
 117                // Fetch the user profile with the given identifier.
 0118                return View(new ProfileViewModel { Profile = await _profileRespository.GetItemAsync(id), Rank = rank });
 119            }
 0120            catch (Exception)
 121            {
 0122                return RedirectToAction("/");
 123            }
 0124        }
 125
 126        public IActionResult Privacy()
 127        {
 0128            return View();
 129        }
 130
 131        [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
 132        public IActionResult Error()
 133        {
 0134            return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
 135        }
 136    }
 137}
+
+
+
+ + \ No newline at end of file diff --git a/CodeCoverage/Tailspin.SpaceGame.Web_LeaderboardViewModel.html b/CodeCoverage/Tailspin.SpaceGame.Web_LeaderboardViewModel.html new file mode 100644 index 00000000000..1efe1f2f5e1 --- /dev/null +++ b/CodeCoverage/Tailspin.SpaceGame.Web_LeaderboardViewModel.html @@ -0,0 +1,1049 @@ + + + + + + + +TailSpin.SpaceGame.Web.Models.LeaderboardViewModel - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:TailSpin.SpaceGame.Web.Models.LeaderboardViewModel
Assembly:Tailspin.SpaceGame.Web
File(s):C:\Users\john.mathew.dasalla\Documents\ACN\DevOpUpskillin\mslearn-tailspin-spacegame-web\Tailspin.SpaceGame.Web\Models\LeaderboardViewModel.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:10
Coverable lines:10
Total lines:43
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++++ + + + + + + + + + + + + + +
MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
get_SelectedMode()100%210%
get_SelectedRegion()100%210%
get_Page()100%210%
get_PageSize()100%210%
get_Scores()100%210%
get_GameModes()100%210%
get_GameRegions()100%210%
get_PrevLink()100%210%
get_NextLink()100%210%
get_TotalResults()100%210%
+
+

File(s)

+

C:\Users\john.mathew.dasalla\Documents\ACN\DevOpUpskillin\mslearn-tailspin-spacegame-web\Tailspin.SpaceGame.Web\Models\LeaderboardViewModel.cs

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1using System.Collections.Generic;
 2
 3namespace TailSpin.SpaceGame.Web.Models
 4{
 5    public class LeaderboardViewModel
 6    {
 7        // The game mode selected in the view.
 08        public string SelectedMode { get; set; }
 9        // The game region (map) selected in the view.
 010        public string SelectedRegion { get; set; }
 11        // The current page to be shown in the view.
 012        public int Page { get; set; }
 13        // The number of items to show per page in the view.
 014        public int PageSize { get; set; }
 15
 16        // The scores to display in the view.
 017        public IEnumerable<ScoreProfile> Scores { get; set; }
 18        // The game modes to display in the view.
 019        public IEnumerable<string> GameModes { get; set; }
 20        // The game regions (maps) to display in the view.
 021        public IEnumerable<string> GameRegions { get; set; }
 22
 23        // Hyperlink to the previous page of results.
 24        // This is empty if this is the first page.
 025        public string PrevLink { get; set; }
 26        // Hyperlink to the next page of results.
 27        // This is empty if this is the last page.
 028        public string NextLink { get; set; }
 29        // The total number of results for the selected game mode and region in the view.
 030        public int TotalResults { get; set; }
 31    }
 32
 33    /// <summary>
 34    /// Combines a score and a user profile.
 35    /// </summary>
 36    public struct ScoreProfile
 37    {
 38        // The player's score.
 39        public Score Score;
 40        // The player's profile.
 41        public Profile Profile;
 42    }
 43}
+
+
+
+ + \ No newline at end of file diff --git a/CodeCoverage/Tailspin.SpaceGame.Web_LocalDocumentDBRepository_1.html b/CodeCoverage/Tailspin.SpaceGame.Web_LocalDocumentDBRepository_1.html new file mode 100644 index 00000000000..3ad526acff1 --- /dev/null +++ b/CodeCoverage/Tailspin.SpaceGame.Web_LocalDocumentDBRepository_1.html @@ -0,0 +1,1081 @@ + + + + + + + +TailSpin.SpaceGame.Web.LocalDocumentDBRepository<T> - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:TailSpin.SpaceGame.Web.LocalDocumentDBRepository<T>
Assembly:Tailspin.SpaceGame.Web
File(s):C:\Users\john.mathew.dasalla\Documents\ACN\DevOpUpskillin\mslearn-tailspin-spacegame-web\Tailspin.SpaceGame.Web\LocalDocumentDBRepository.cs
+
+
+
+
+
+
+
Line coverage
+
+
52%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:9
Uncovered lines:8
Coverable lines:17
Total lines:85
Line coverage:52.9%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++++ + + + + + + + + +
MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%210%
.ctor(...)100%11100%
GetItemAsync(...)100%210%
GetItemsAsync(...)100%11100%
CountItemsAsync(...)100%210%
+
+

File(s)

+

C:\Users\john.mathew.dasalla\Documents\ACN\DevOpUpskillin\mslearn-tailspin-spacegame-web\Tailspin.SpaceGame.Web\LocalDocumentDBRepository.cs

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1using System;
 2using System.Collections.Generic;
 3using System.IO;
 4using System.Linq;
 5using System.Threading.Tasks;
 6using System.Text.Json;
 7using TailSpin.SpaceGame.Web.Models;
 8
 9namespace TailSpin.SpaceGame.Web
 10{
 11    public class LocalDocumentDBRepository<T> : IDocumentDBRepository<T> where T : Model
 12    {
 13        // An in-memory list of all items in the collection.
 14        private readonly List<T> _items;
 15
 016        public LocalDocumentDBRepository(string fileName)
 17        {
 18            // Serialize the items from the provided JSON document.
 019            _items = JsonSerializer.Deserialize<List<T>>(File.ReadAllText(fileName));
 020        }
 21
 522        public LocalDocumentDBRepository(Stream stream)
 23        {
 24            // Serialize the items from the provided JSON document.
 525            _items = JsonSerializer.Deserialize<List<T>>(new StreamReader(stream).ReadToEnd());
 526        }
 27
 28        /// <summary>
 29        /// Retrieves the item from the store with the given identifier.
 30        /// </summary>
 31        /// <returns>
 32        /// A task that represents the asynchronous operation.
 33        /// The task result contains the retrieved item.
 34        /// </returns>
 35        /// <param name="id">The identifier of the item to retrieve.</param>
 36        public Task<T> GetItemAsync(string id)
 37        {
 038            return Task<T>.FromResult(_items.Single(item => item.Id == id));
 39        }
 40
 41        /// <summary>
 42        /// Retrieves items from the store that match the given query predicate.
 43        /// Results are given in descending order by the given ordering predicate.
 44        /// </summary>
 45        /// <returns>
 46        /// A task that represents the asynchronous operation.
 47        /// The task result contains the collection of retrieved items.
 48        /// </returns>
 49        /// <param name="queryPredicate">Predicate that specifies which items to select.</param>
 50        /// <param name="orderDescendingPredicate">Predicate that specifies how to sort the results in descending order.
 51        /// <param name="page">The 1-based page of results to return.</param>
 52        /// <param name="pageSize">The number of items on a page.</param>
 53        public Task<IEnumerable<T>> GetItemsAsync(
 54            Func<T, bool> queryPredicate,
 55            Func<T, int> orderDescendingPredicate,
 56            int page = 1, int pageSize = 10
 57        )
 58        {
 559            var result = _items
 560                .Where(queryPredicate) // filter
 561                .OrderByDescending(orderDescendingPredicate) // sort
 562                .Skip(page * pageSize) // find page
 563                .Take(pageSize); // take items
 64
 565            return Task<IEnumerable<T>>.FromResult(result);
 66        }
 67
 68        /// <summary>
 69        /// Retrieves the number of items that match the given query predicate.
 70        /// </summary>
 71        /// <returns>
 72        /// A task that represents the asynchronous operation.
 73        /// The task result contains the number of items that match the query predicate.
 74        /// </returns>
 75        /// <param name="queryPredicate">Predicate that specifies which items to select.</param>
 76        public Task<int> CountItemsAsync(Func<T, bool> queryPredicate)
 77        {
 078            var count = _items
 079                .Where(queryPredicate) // filter
 080                .Count(); // count
 81
 082            return Task<int>.FromResult(count);
 83        }
 84    }
 85}
+
+
+
+ + \ No newline at end of file diff --git a/CodeCoverage/Tailspin.SpaceGame.Web_Model.html b/CodeCoverage/Tailspin.SpaceGame.Web_Model.html new file mode 100644 index 00000000000..2f321e5fd46 --- /dev/null +++ b/CodeCoverage/Tailspin.SpaceGame.Web_Model.html @@ -0,0 +1,1002 @@ + + + + + + + +TailSpin.SpaceGame.Web.Models.Model - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:TailSpin.SpaceGame.Web.Models.Model
Assembly:Tailspin.SpaceGame.Web
File(s):C:\Users\john.mathew.dasalla\Documents\ACN\DevOpUpskillin\mslearn-tailspin-spacegame-web\Tailspin.SpaceGame.Web\Models\Model.cs
+
+
+
+
+
+
+
Line coverage
+
+
100%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:1
Uncovered lines:0
Coverable lines:1
Total lines:14
Line coverage:100%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++++ + + + + +
MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
get_Id()100%11100%
+
+

File(s)

+

C:\Users\john.mathew.dasalla\Documents\ACN\DevOpUpskillin\mslearn-tailspin-spacegame-web\Tailspin.SpaceGame.Web\Models\Model.cs

+
+ + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1using System.Text.Json.Serialization;
 2
 3namespace TailSpin.SpaceGame.Web.Models
 4{
 5    /// <summary>
 6    /// Base class for data models.
 7    /// </summary>
 8    public abstract class Model
 9    {
 10        // The value that uniquely identifies this object.
 11        [JsonPropertyName("id")]
 12512        public string Id { get; set; }
 13    }
 14}
+
+
+
+
+

Methods/Properties

+get_Id()
+
+
+ + \ No newline at end of file diff --git a/CodeCoverage/Tailspin.SpaceGame.Web_Profile.html b/CodeCoverage/Tailspin.SpaceGame.Web_Profile.html new file mode 100644 index 00000000000..4ae61ad4294 --- /dev/null +++ b/CodeCoverage/Tailspin.SpaceGame.Web_Profile.html @@ -0,0 +1,1011 @@ + + + + + + + +TailSpin.SpaceGame.Web.Models.Profile - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:TailSpin.SpaceGame.Web.Models.Profile
Assembly:Tailspin.SpaceGame.Web
File(s):C:\Users\john.mathew.dasalla\Documents\ACN\DevOpUpskillin\mslearn-tailspin-spacegame-web\Tailspin.SpaceGame.Web\Models\Profile.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:3
Coverable lines:3
Total lines:19
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++++ + + + + + + +
MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
get_UserName()100%210%
get_AvatarUrl()100%210%
get_Achievements()100%210%
+
+

File(s)

+

C:\Users\john.mathew.dasalla\Documents\ACN\DevOpUpskillin\mslearn-tailspin-spacegame-web\Tailspin.SpaceGame.Web\Models\Profile.cs

+
+ + + + + + + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1using System.Text.Json.Serialization;
 2
 3namespace TailSpin.SpaceGame.Web.Models
 4{
 5    public class Profile : Model
 6    {
 7        // The player's user name.
 8        [JsonPropertyName("userName")]
 09        public string UserName { get; set; }
 10
 11        // The URL of the player's avatar image.
 12        [JsonPropertyName("avatarUrl")]
 013        public string AvatarUrl { get; set; }
 14
 15        // The achievements the player earned.
 16        [JsonPropertyName("achievements")]
 017        public string[] Achievements { get; set; }
 18    }
 19}
+
+
+
+ +
+ + \ No newline at end of file diff --git a/CodeCoverage/Tailspin.SpaceGame.Web_Program.html b/CodeCoverage/Tailspin.SpaceGame.Web_Program.html new file mode 100644 index 00000000000..69c0009c8ba --- /dev/null +++ b/CodeCoverage/Tailspin.SpaceGame.Web_Program.html @@ -0,0 +1,1007 @@ + + + + + + + +TailSpin.SpaceGame.Web.Program - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:TailSpin.SpaceGame.Web.Program
Assembly:Tailspin.SpaceGame.Web
File(s):C:\Users\john.mathew.dasalla\Documents\ACN\DevOpUpskillin\mslearn-tailspin-spacegame-web\Tailspin.SpaceGame.Web\Program.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:4
Coverable lines:4
Total lines:17
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++++ + + + + + +
MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
Main(...)100%210%
CreateWebHostBuilder(...)100%210%
+
+

File(s)

+

C:\Users\john.mathew.dasalla\Documents\ACN\DevOpUpskillin\mslearn-tailspin-spacegame-web\Tailspin.SpaceGame.Web\Program.cs

+
+ + + + + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1using Microsoft.AspNetCore;
 2using Microsoft.AspNetCore.Hosting;
 3
 4namespace TailSpin.SpaceGame.Web
 5{
 6    public class Program
 7    {
 8        public static void Main(string[] args)
 9        {
 010            CreateWebHostBuilder(args).Build().Run();
 011        }
 12
 13        public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
 014            WebHost.CreateDefaultBuilder(args)
 015                .UseStartup<Startup>();
 16    }
 17}
+
+
+
+ + \ No newline at end of file diff --git a/CodeCoverage/Tailspin.SpaceGame.Web_Score.html b/CodeCoverage/Tailspin.SpaceGame.Web_Score.html new file mode 100644 index 00000000000..27ddd6983ce --- /dev/null +++ b/CodeCoverage/Tailspin.SpaceGame.Web_Score.html @@ -0,0 +1,1017 @@ + + + + + + + +TailSpin.SpaceGame.Web.Models.Score - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:TailSpin.SpaceGame.Web.Models.Score
Assembly:Tailspin.SpaceGame.Web
File(s):C:\Users\john.mathew.dasalla\Documents\ACN\DevOpUpskillin\mslearn-tailspin-spacegame-web\Tailspin.SpaceGame.Web\Models\Score.cs
+
+
+
+
+
+
+
Line coverage
+
+
100%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:4
Uncovered lines:0
Coverable lines:4
Total lines:23
Line coverage:100%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++++ + + + + + + + +
MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
get_ProfileId()100%11100%
get_HighScore()100%11100%
get_GameMode()100%11100%
get_GameRegion()100%11100%
+
+

File(s)

+

C:\Users\john.mathew.dasalla\Documents\ACN\DevOpUpskillin\mslearn-tailspin-spacegame-web\Tailspin.SpaceGame.Web\Models\Score.cs

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1using System.Text.Json.Serialization;
 2
 3namespace TailSpin.SpaceGame.Web.Models
 4{
 5    public class Score : Model
 6    {
 7        // The ID of the player profile associated with this score.
 8        [JsonPropertyName("profileId")]
 1259        public string ProfileId { get; set; }
 10
 11        // The score value.
 12        [JsonPropertyName("score")]
 12513        public int HighScore { get; set; }
 14
 15        // The game mode the score is associated with.
 16        [JsonPropertyName("gameMode")]
 12517        public string GameMode { get; set; }
 18
 19        // The game region (map) the score is associated with.
 20        [JsonPropertyName("gameRegion")]
 27121        public string GameRegion { get; set; }
 22    }
 23}
+
+
+
+ + \ No newline at end of file diff --git a/CodeCoverage/Tailspin.SpaceGame.Web_Startup.html b/CodeCoverage/Tailspin.SpaceGame.Web_Startup.html new file mode 100644 index 00000000000..8c5c4da32e4 --- /dev/null +++ b/CodeCoverage/Tailspin.SpaceGame.Web_Startup.html @@ -0,0 +1,1064 @@ + + + + + + + +TailSpin.SpaceGame.Web.Startup - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:TailSpin.SpaceGame.Web.Startup
Assembly:Tailspin.SpaceGame.Web
File(s):C:\Users\john.mathew.dasalla\Documents\ACN\DevOpUpskillin\mslearn-tailspin-spacegame-web\Tailspin.SpaceGame.Web\Startup.cs
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:29
Coverable lines:29
Total lines:70
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
0%
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:2
Branch coverage:0%
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++++ + + + + + + + +
MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%210%
get_Configuration()100%210%
ConfigureServices(...)100%210%
Configure(...)0%620%
+
+

File(s)

+

C:\Users\john.mathew.dasalla\Documents\ACN\DevOpUpskillin\mslearn-tailspin-spacegame-web\Tailspin.SpaceGame.Web\Startup.cs

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1using System;
 2using System.Collections.Generic;
 3using System.Linq;
 4using System.Threading.Tasks;
 5using Microsoft.AspNetCore.Builder;
 6using Microsoft.AspNetCore.Hosting;
 7using Microsoft.AspNetCore.HttpsPolicy;
 8using Microsoft.Extensions.Configuration;
 9using Microsoft.Extensions.DependencyInjection;
 10using Microsoft.Extensions.Hosting;
 11using TailSpin.SpaceGame.Web.Models;
 12using Microsoft.AspNetCore.Http;
 13
 14
 15namespace TailSpin.SpaceGame.Web
 16{
 17    public class Startup
 18    {
 019        public Startup(IConfiguration configuration)
 20        {
 021            Configuration = configuration;
 022        }
 23
 024        public IConfiguration Configuration { get; }
 25
 26        // This method gets called by the runtime. Use this method to add services to the container.
 27        public void ConfigureServices(IServiceCollection services)
 28        {
 029            services.AddControllersWithViews();
 030            services.Configure<CookiePolicyOptions>(options =>
 031            {
 032                // This lambda determines whether user consent for non-essential cookies is needed for a given request.
 033                options.CheckConsentNeeded = context => true;
 034                options.MinimumSameSitePolicy = SameSiteMode.None;
 035            });
 36
 37            // Add document stores. These are passed to the HomeController constructor.
 038            services.AddSingleton<IDocumentDBRepository<Score>>(new LocalDocumentDBRepository<Score>(@"SampleData/scores
 039            services.AddSingleton<IDocumentDBRepository<Profile>>(new LocalDocumentDBRepository<Profile>(@"SampleData/pr
 040        }
 41
 42        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
 43        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
 44        {
 045            if (env.IsDevelopment())
 46            {
 047                app.UseDeveloperExceptionPage();
 48            }
 49            else
 50            {
 051                app.UseExceptionHandler("/Home/Error");
 052                app.UseHsts();
 53            }
 54
 055            app.UseHttpsRedirection();
 056            app.UseStaticFiles();
 57
 058            app.UseRouting();
 59
 060            app.UseAuthorization();
 61
 062            app.UseEndpoints(endpoints =>
 063            {
 064                endpoints.MapControllerRoute(
 065                    name: "default",
 066                    pattern: "{controller=Home}/{action=Index}/{id?}");
 067            });
 068        }
 69    }
 70}
+
+
+
+ + \ No newline at end of file diff --git a/CodeCoverage/Tailspin.SpaceGame.Web_Views_Home_Index.html b/CodeCoverage/Tailspin.SpaceGame.Web_Views_Home_Index.html new file mode 100644 index 00000000000..1f59c3b949e --- /dev/null +++ b/CodeCoverage/Tailspin.SpaceGame.Web_Views_Home_Index.html @@ -0,0 +1,1258 @@ + + + + + + + +AspNetCoreGeneratedDocument.Views_Home_Index - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:AspNetCoreGeneratedDocument.Views_Home_Index
Assembly:Tailspin.SpaceGame.Web
File(s):C:\Users\john.mathew.dasalla\Documents\ACN\DevOpUpskillin\mslearn-tailspin-spacegame-web\Tailspin.SpaceGame.Web\Views\Home\Index.cshtml
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:17
Coverable lines:17
Total lines:270
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
0%
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:28
Branch coverage:0%
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++++ + + + + +
MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
ExecuteAsync()0%812280%
+
+

File(s)

+

C:\Users\john.mathew.dasalla\Documents\ACN\DevOpUpskillin\mslearn-tailspin-spacegame-web\Tailspin.SpaceGame.Web\Views\Home\Index.cshtml

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1@model TailSpin.SpaceGame.Web.Models.LeaderboardViewModel
 2@{
 03    ViewData["Title"] = "Home Page";
 4}
 5<section class="intro">
 6    <div class="container">
 7        <img class="title" src="/images/space-game-title.svg" alt="Space Game">
 8        <p>Welcome to the official Space Game site!</p>
 9    </div>
 10</section>
 11<section class="download">
 12    <div class="image-cap"></div>
 13    <div class="container">
 14        <a href="" class="btn btn-default btn-lg" data-toggle="modal" data-target="#pretend-modal">Download game</a>
 15    </div>
 16</section>
 17
 18<!-- Screenshots -->
 19<section class="screens">
 20    <div class="container">
 21        <ul>
 22            <li><a href="" data-toggle="modal" data-target=".pic-01"><img src="/images/space-game-placeholder.svg" alt="
 23            <li><a href="" data-toggle="modal" data-target=".pic-01"><img src="/images/space-game-placeholder.svg" alt="
 24            <li><a href="" data-toggle="modal" data-target=".pic-01"><img src="/images/space-game-placeholder.svg" alt="
 25            <li><a href="" data-toggle="modal" data-target=".pic-01"><img src="/images/space-game-placeholder.svg" alt="
 26        </ul>
 27    </div>
 28</section>
 29
 30<!-- Leaderboard -->
 31<section class="leaderboard">
 32    <div class="container">
 33        <a name="leaderboard"></a>
 34        <h2>Space leaders</h2>
 35        <!-- Start Leaderboard table -->
 36        <div class="row">
 37            <div class="col-sm-9 leader-scores">
 38                <div class="row high-score hidden-xs">
 39                    <div class="col-sm-1">
 40                        Rank
 41                    </div>
 42                    <div class="col-sm-4">
 43                        Player
 44                    </div>
 45                    <div class="col-sm-2">
 46                        Mode
 47                    </div>
 48                    <div class="col-sm-3">
 49                        Galaxy
 50                    </div>
 51                    <div class="col-sm-2">
 52                        Score
 53                    </div>
 54                </div>
 55
 56                @{
 057                    if (Model.Scores.Count() == 0)
 58                    {
 59                        <div class="row" style="margin-left: 5px; margin-top: 20px;">No scores match your selection.</di
 60                    }
 61
 062                    int rank = ((Model.Page - 1) * Model.PageSize) + 1;
 063                    foreach (var score in Model.Scores)
 64                    {
 65                        <div class="row high-score align-items-center">
 66                            <div class="col-sm-1 score-data">
 67                                @(rank++).
 68                            </div>
 69                            <div class="col-sm-4 score-data">
 70                                <div style="text-align: left; margin-left: 100px;">
 71                                    <partial name="Profile" model="new ProfileViewModel { Profile = score.Profile, Rank 
 72                                    <a href="" data-toggle="modal" data-target="#profile-modal-@((rank - 1).ToString())"
 73                                        <img class="avatar" src="@score.Profile.AvatarUrl" alt="@score.Profile.UserName"
 74                                        <div class="score-data username">
 75                                            @score.Profile.UserName
 76                                        </div>
 77                                    </a>
 78                                </div>
 79                            </div>
 80                            <div class="col-sm-2 score-data">
 81                                @score.Score.GameMode
 82                            </div>
 83                            <div class="col-sm-3 score-data">
 84                                @score.Score.GameRegion
 85                            </div>
 86                            <div class="col-sm-2 score-data">
 87                                @score.Score.HighScore.ToString("N0")
 88                            </div>
 89                        </div>
 090                    }
 91                }
 92                <nav aria-label="...">
 93                    <ul class="pagination">
 094                        @if (string.IsNullOrEmpty(Model.PrevLink))
 95                        {
 96                            <li class="disabled"><span aria-hidden="true">&laquo;</span></li>
 97                        }
 98                        else
 99                        {
 100                            <li class=""><a href="@Model.PrevLink" aria-label="Previous"><span aria-hidden="true">&laquo
 101                        }
 102                        @{
 0103                            var totalPages = Model.TotalResults / Model.PageSize;
 0104                            if (Model.TotalResults % Model.PageSize != 0)
 105                            {
 0106                                totalPages++;
 107                            }
 108
 0109                            for (int i = 1; i <= totalPages; i++)
 110                            {
 111                                <li class="@(i == Model.Page ? "active" : null)">
 112                                    <a href="@($"/?page={i}&pageSize={@Model.PageSize}&mode={@Model.SelectedMode}&region
 113                                        @i
 114                                        <span class="sr-only">(current)</span>
 115                                    </a>
 116                                </li>
 117                            }
 118                        }
 0119                        @if (string.IsNullOrEmpty(Model.NextLink))
 120                        {
 121                            <li class="disabled"><span aria-hidden="true">&raquo;</span></li>
 122                        }
 123                        else
 124                        {
 125                            <li class=""><a href="@Model.NextLink" aria-label="Next"><span aria-hidden="true">&raquo;</s
 126                        }
 127                    </ul>
 128                </nav>
 129            </div>
 130
 131            <div class="col-sm-3">
 132                <div class="leader-nav hidden-xs">
 133                    <div class="row nav-buttons">
 134                        <h4>Mode</h4>
 135                        <ul>
 0136                            @if (string.IsNullOrEmpty(Model.SelectedMode))
 137                            {
 138                                <li class="filter-active">All</li>
 139                            }
 140                            else
 141                            {
 142                                <li class="filter-button">
 143                                    <a class="" href="/?region=@Model.SelectedRegion#leaderboard">All</a>
 144                                </li>
 145                            }
 146                            @{
 0147                                foreach (var mode in Model.GameModes)
 148                                {
 0149                                    @if (mode.Equals(Model.SelectedMode))
 150                                    {
 151                                        <li class="filter-active">@mode</li>
 152                                    }
 153                                    else
 154                                    {
 155                                        <li class="filter-button"><a href="/?mode=@mode&region=@Model.SelectedRegion#lea
 156                                    }
 157                                }
 158                            }
 159                        </ul>
 160                    </div>
 161
 162                    <div class="row nav-buttons">
 163                        <h4>Galaxy</h4>
 164                        <ul>
 0165                            @if (string.IsNullOrEmpty(Model.SelectedRegion))
 166                            {
 167                                <li class="filter-active">All</li>
 168                            }
 169                            else
 170                            {
 171                                <li class="filter-button"><a href="/?mode=@Model.SelectedMode#leaderboard">All</a></li>
 172                            }
 173
 174                            @{
 0175                                foreach (var region in Model.GameRegions)
 176                                {
 0177                                    @if (region.Equals(Model.SelectedRegion))
 178                                    {
 179                                        <li class="filter-active">@region</li>
 180                                    }
 181                                    else
 182                                    {
 183                                        <li class="filter-button"><a href="/?mode=@Model.SelectedMode&region=@region#lea
 184                                    }
 185                                }
 186                            }
 187                        </ul>
 188                    </div>
 189                </div>
 190            </div>
 191        </div>
 192        <!-- End Leaderboard -->
 193    </div>
 194</section>
 195
 196<!-- About section -->
 197<section class="about">
 198    <h2>More about Space Game</h2>
 199    <p>Space Game is an example website for learning purposes. Check out <a href="https://aka.ms/mslearndevops/">Microso
 200</section>
 201<section class="social">
 202    <div class="container">
 203        <div class="share">
 204            <ul>
 205                <li><a href="" data-toggle="modal" data-target=".social-media"><img src="/images/space-game-placeholder.
 206                <li><a href="" data-toggle="modal" data-target=".social-media"><img src="/images/space-game-placeholder.
 207                <li><a href="" data-toggle="modal" data-target=".social-media"><img src="/images/space-game-placeholder.
 208            </ul>
 209        </div>
 210    </div>
 211    <p>&copy; @DateTime.Now.Year - TailSpin Toys</p>
 212</section>
 213
 214
 215<!-- Modals -->
 216<div class="modal fade" id="test-modal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
 217    <div class="modal-dialog" role="document">
 218        <div class="modal-content">
 219            <div class="modal-header no-border">
 220                <button type="button" class="close" data-dismiss="modal">&times;</button>
 221            </div>
 222            <div class="modal-body">
 223                modal
 224            </div>
 225        </div>
 226    </div>
 227</div>
 228
 229<!-- Pic modals -->
 230<div class="modal fade pic-01" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
 231    <div class="modal-dialog" role="document">
 232        <div class="modal-content">
 233            <div class="modal-header no-border">
 234                <button type="button" class="close" data-dismiss="modal">&times;</button>
 235            </div>
 236            <div class="modal-body text-center">
 237                <img src="/images/space-game-placeholder.svg" width="100%" alt="">
 238                <p>Gamescreen example</p>
 239            </div>
 240        </div>
 241    </div>
 242</div>
 243
 244<!-- Social -->
 245<div class="modal fade social-media" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
 246    <div class="modal-dialog" role="document">
 247        <div class="modal-content">
 248            <div class="modal-header no-border">
 249                <button type="button" class="close" data-dismiss="modal">&times;</button>
 250            </div>
 251            <div class="modal-body text-center">
 252                Social media example
 253            </div>
 254        </div>
 255    </div>
 256</div>
 257
 258<!-- Dead end modal -->
 259<div class="modal fade" id="pretend-modal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
 260    <div class="modal-dialog" role="document">
 261        <div class="modal-content">
 262            <div class="modal-header no-border">
 263                <button type="button" class="close" data-dismiss="modal">&times;</button>
 264            </div>
 265            <div class="modal-body text-center">
 266                This link is for example purposes and goes nowhere. 😐
 267            </div>
 268        </div>
 269    </div>
 270</div>
+
+
+
+
+

Methods/Properties

+ExecuteAsync()
+
+
+ + \ No newline at end of file diff --git a/CodeCoverage/Tailspin.SpaceGame.Web_Views_Home_Privacy.html b/CodeCoverage/Tailspin.SpaceGame.Web_Views_Home_Privacy.html new file mode 100644 index 00000000000..b6a6bea8ef9 --- /dev/null +++ b/CodeCoverage/Tailspin.SpaceGame.Web_Views_Home_Privacy.html @@ -0,0 +1,994 @@ + + + + + + + +AspNetCoreGeneratedDocument.Views_Home_Privacy - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:AspNetCoreGeneratedDocument.Views_Home_Privacy
Assembly:Tailspin.SpaceGame.Web
File(s):C:\Users\john.mathew.dasalla\Documents\ACN\DevOpUpskillin\mslearn-tailspin-spacegame-web\Tailspin.SpaceGame.Web\Views\Home\Privacy.cshtml
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:1
Coverable lines:1
Total lines:6
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++++ + + + + +
MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
ExecuteAsync()100%210%
+
+

File(s)

+

C:\Users\john.mathew.dasalla\Documents\ACN\DevOpUpskillin\mslearn-tailspin-spacegame-web\Tailspin.SpaceGame.Web\Views\Home\Privacy.cshtml

+
+ + + + + + + + + + +
#LineLine coverage
 1@{
 02    ViewData["Title"] = "Privacy Policy";
 3}
 4<h2>@ViewData["Title"]</h2>
 5
 6<p>Use this page to detail your site's privacy policy.</p>
+
+
+
+
+

Methods/Properties

+ExecuteAsync()
+
+
+ + \ No newline at end of file diff --git a/CodeCoverage/Tailspin.SpaceGame.Web_Views_Home_Profile.html b/CodeCoverage/Tailspin.SpaceGame.Web_Views_Home_Profile.html new file mode 100644 index 00000000000..d7c9029ac0f --- /dev/null +++ b/CodeCoverage/Tailspin.SpaceGame.Web_Views_Home_Profile.html @@ -0,0 +1,1023 @@ + + + + + + + +AspNetCoreGeneratedDocument.Views_Home_Profile - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:AspNetCoreGeneratedDocument.Views_Home_Profile
Assembly:Tailspin.SpaceGame.Web
File(s):C:\Users\john.mathew.dasalla\Documents\ACN\DevOpUpskillin\mslearn-tailspin-spacegame-web\Tailspin.SpaceGame.Web\Views\Home\Profile.cshtml
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:2
Coverable lines:2
Total lines:35
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
0%
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:2
Branch coverage:0%
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++++ + + + + +
MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
ExecuteAsync()0%620%
+
+

File(s)

+

C:\Users\john.mathew.dasalla\Documents\ACN\DevOpUpskillin\mslearn-tailspin-spacegame-web\Tailspin.SpaceGame.Web\Views\Home\Profile.cshtml

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1@model TailSpin.SpaceGame.Web.Models.ProfileViewModel
 2@{
 03    ViewData["Title"] = "@Model.Profile.UserName Profile";
 4}
 5<div class="modal fade profile" id="profile-modal-@Model.Rank" tabindex="-1" role="dialog" aria-labelledby="myModalLabel
 6    <div class="modal-dialog" role="document">
 7        <div class="modal-content">
 8            <div class="modal-header no-border">
 9                <button type="button" class="close" data-dismiss="modal">&times;</button>
 10            </div>
 11            <div class="modal-body">
 12                <div class="row">
 13                    <div class="col-sm-4">
 14                        <div class="avatar">
 15                            <div style="background-image:url('@Model.Profile.AvatarUrl');"></div>
 16                        </div>
 17                    </div>
 18                    <div class="col-sm-8">
 19                        <div class="content">
 20                            <h1>@Model.Profile.UserName</h1>
 21                            <b>Rank #@Model.Rank</b>
 22                            <h2>Achievements</h2>
 23                            <ul>
 024                                @foreach (var achievement in Model.Profile.Achievements)
 25                                {
 26                                    <li>@achievement</li>
 27                                }
 28                            </ul>
 29                        </div>
 30                    </div>
 31                </div>
 32            </div>
 33        </div>
 34    </div>
 35</div>
+
+
+
+
+

Methods/Properties

+ExecuteAsync()
+
+
+ + \ No newline at end of file diff --git a/CodeCoverage/Tailspin.SpaceGame.Web_Views_Shared_Error.html b/CodeCoverage/Tailspin.SpaceGame.Web_Views_Shared_Error.html new file mode 100644 index 00000000000..5d3cc798940 --- /dev/null +++ b/CodeCoverage/Tailspin.SpaceGame.Web_Views_Shared_Error.html @@ -0,0 +1,1010 @@ + + + + + + + +AspNetCoreGeneratedDocument.Views_Shared_Error - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:AspNetCoreGeneratedDocument.Views_Shared_Error
Assembly:Tailspin.SpaceGame.Web
File(s):C:\Users\john.mathew.dasalla\Documents\ACN\DevOpUpskillin\mslearn-tailspin-spacegame-web\Tailspin.SpaceGame.Web\Views\Shared\Error.cshtml
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:2
Coverable lines:2
Total lines:22
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
0%
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:2
Branch coverage:0%
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++++ + + + + +
MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
ExecuteAsync()0%620%
+
+

File(s)

+

C:\Users\john.mathew.dasalla\Documents\ACN\DevOpUpskillin\mslearn-tailspin-spacegame-web\Tailspin.SpaceGame.Web\Views\Shared\Error.cshtml

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1@model ErrorViewModel
 2@{
 03    ViewData["Title"] = "Error";
 4}
 5
 6<h1 class="text-danger">Error.</h1>
 7<h2 class="text-danger">An error occurred while processing your request.</h2>
 8
 09@if (Model.ShowRequestId)
 10{
 11<p>
 12    <strong>Request ID:</strong> <code>@Model.RequestId</code>
 13</p>
 14}
 15
 16<h3>Development Mode</h3>
 17<p>
 18    Swapping to <strong>Development</strong> environment will display more detailed information about the error that occ
 19</p>
 20<p>
 21    <strong>Development environment should not be enabled in deployed applications</strong>, as it can result in sensiti
 22</p>
+
+
+
+
+

Methods/Properties

+ExecuteAsync()
+
+
+ + \ No newline at end of file diff --git a/CodeCoverage/Tailspin.SpaceGame.Web_Views_Shared__CookieConsentPartial.html b/CodeCoverage/Tailspin.SpaceGame.Web_Views_Shared__CookieConsentPartial.html new file mode 100644 index 00000000000..07aa36f046a --- /dev/null +++ b/CodeCoverage/Tailspin.SpaceGame.Web_Views_Shared__CookieConsentPartial.html @@ -0,0 +1,1030 @@ + + + + + + + +AspNetCoreGeneratedDocument.Views_Shared__CookieConsentPartial - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:AspNetCoreGeneratedDocument.Views_Shared__CookieConsentPartial
Assembly:Tailspin.SpaceGame.Web
File(s):C:\Users\john.mathew.dasalla\Documents\ACN\DevOpUpskillin\mslearn-tailspin-spacegame-web\Tailspin.SpaceGame.Web\Views\Shared\_CookieConsentPartial.cshtml
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:5
Coverable lines:5
Total lines:42
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
0%
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:8
Branch coverage:0%
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++++ + + + + +
MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
ExecuteAsync()0%7280%
+
+

File(s)

+

C:\Users\john.mathew.dasalla\Documents\ACN\DevOpUpskillin\mslearn-tailspin-spacegame-web\Tailspin.SpaceGame.Web\Views\Shared\_CookieConsentPartial.cshtml

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#LineLine coverage
 1@using Microsoft.AspNetCore.Http.Features
 2
 3@{
 04    var consentFeature = Context.Features.Get<ITrackingConsentFeature>
 05    ();
 06    var showBanner = !consentFeature?.CanTrack ?? false;
 07    var cookieString = consentFeature?.CreateConsentCookie();
 8    }
 9
 010    @if (showBanner)
 11    {
 12    <nav id="cookieConsent" class="navbar navbar-default navbar-fixed-top" role="alert">
 13        <div class="container">
 14            <div class="navbar-header">
 15                <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#cookieConsent .navbar-c
 16                    <span class="sr-only">Toggle cookie consent banner</span>
 17                    <span class="icon-bar"></span>
 18                    <span class="icon-bar"></span>
 19                    <span class="icon-bar"></span>
 20                </button>
 21                <span class="navbar-brand"><span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span></span>
 22            </div>
 23            <div class="collapse navbar-collapse">
 24                <p class="navbar-text">
 25                    Use this space to summarize your privacy and cookie use policy.
 26                </p>
 27                <div class="navbar-right">
 28                    <a asp-controller="Home" asp-action="Privacy" class="btn btn-info navbar-btn">Learn More</a>
 29                    <button type="button" class="btn btn-default navbar-btn" data-cookie-string="@cookieString">Accept</
 30                </div>
 31            </div>
 32        </div>
 33    </nav>
 34    <script>
 35        (function () {
 36            document.querySelector("#cookieConsent button[data-cookie-string]").addEventListener("click", function (el) 
 37                document.cookie = el.target.dataset.cookieString;
 38                document.querySelector("#cookieConsent").classList.add("hidden");
 39            }, false);
 40        })();
 41    </script>
 42    }
+
+
+
+
+

Methods/Properties

+ExecuteAsync()
+
+
+ + \ No newline at end of file diff --git a/CodeCoverage/Tailspin.SpaceGame.Web_Views__ViewStart.html b/CodeCoverage/Tailspin.SpaceGame.Web_Views__ViewStart.html new file mode 100644 index 00000000000..d602970419c --- /dev/null +++ b/CodeCoverage/Tailspin.SpaceGame.Web_Views__ViewStart.html @@ -0,0 +1,991 @@ + + + + + + + +AspNetCoreGeneratedDocument.Views__ViewStart - Coverage Report + +
+

< Summary

+
+
+
Information
+
+
+ + + + + + + + + + + + + +
Class:AspNetCoreGeneratedDocument.Views__ViewStart
Assembly:Tailspin.SpaceGame.Web
File(s):C:\Users\john.mathew.dasalla\Documents\ACN\DevOpUpskillin\mslearn-tailspin-spacegame-web\Tailspin.SpaceGame.Web\Views\_ViewStart.cshtml
+
+
+
+
+
+
+
Line coverage
+
+
0%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:0
Uncovered lines:1
Coverable lines:1
Total lines:3
Line coverage:0%
+
+
+
+
+
Branch coverage
+
+
N/A
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:0
Branch coverage:N/A
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Metrics

+
+ +++++++ + + + + +
MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
ExecuteAsync()100%210%
+
+

File(s)

+

C:\Users\john.mathew.dasalla\Documents\ACN\DevOpUpskillin\mslearn-tailspin-spacegame-web\Tailspin.SpaceGame.Web\Views\_ViewStart.cshtml

+
+ + + + + + + +
#LineLine coverage
 1@{
 02    Layout = "_Layout";
 3}
+
+
+
+
+

Methods/Properties

+ExecuteAsync()
+
+
+ + \ No newline at end of file diff --git a/CodeCoverage/index.htm b/CodeCoverage/index.htm new file mode 100644 index 00000000000..103382b41e7 --- /dev/null +++ b/CodeCoverage/index.htm @@ -0,0 +1,1153 @@ + + + + + + + +Summary - Coverage Report + +
+

SummaryStarSponsor

+
+
+
Information
+
+
+ + + + + + + + + + + + + + + + + + + + + +
Parser:Cobertura
Assemblies:1
Classes:15
Files:15
Coverage date:7/23/2025 - 10:58:20 AM
+
+
+
+
+
Line coverage
+
+
8%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:14
Uncovered lines:144
Coverable lines:158
Total lines:795
Line coverage:8.8%
+
+
+
+
+
Branch coverage
+
+
0%
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:58
Branch coverage:0%
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Risk Hotspots

+ +
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +
AssemblyClassMethodCrap Score Cyclomatic complexity
Tailspin.SpaceGame.WebAspNetCoreGeneratedDocument.Views_Home_IndexExecuteAsync()81228
Tailspin.SpaceGame.WebAspNetCoreGeneratedDocument.Views_Shared__CookieConsentPartialExecuteAsync()728
Tailspin.SpaceGame.WebTailSpin.SpaceGame.Web.Controllers.HomeControllerIndex()426
+
+
+

Coverage

+ + + +
+ + \ No newline at end of file diff --git a/CodeCoverage/index.html b/CodeCoverage/index.html new file mode 100644 index 00000000000..103382b41e7 --- /dev/null +++ b/CodeCoverage/index.html @@ -0,0 +1,1153 @@ + + + + + + + +Summary - Coverage Report + +
+

SummaryStarSponsor

+
+
+
Information
+
+
+ + + + + + + + + + + + + + + + + + + + + +
Parser:Cobertura
Assemblies:1
Classes:15
Files:15
Coverage date:7/23/2025 - 10:58:20 AM
+
+
+
+
+
Line coverage
+
+
8%
+
+ + + + + + + + + + + + + + + + + + + + + +
Covered lines:14
Uncovered lines:144
Coverable lines:158
Total lines:795
Line coverage:8.8%
+
+
+
+
+
Branch coverage
+
+
0%
+
+ + + + + + + + + + + + + +
Covered branches:0
Total branches:58
Branch coverage:0%
+
+
+
+
+
Method coverage
+
+
+

Feature is only available for sponsors

+Upgrade to PRO version +
+
+
+
+

Risk Hotspots

+ +
+ +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +
AssemblyClassMethodCrap Score Cyclomatic complexity
Tailspin.SpaceGame.WebAspNetCoreGeneratedDocument.Views_Home_IndexExecuteAsync()81228
Tailspin.SpaceGame.WebAspNetCoreGeneratedDocument.Views_Shared__CookieConsentPartialExecuteAsync()728
Tailspin.SpaceGame.WebTailSpin.SpaceGame.Web.Controllers.HomeControllerIndex()426
+
+
+

Coverage

+ + + +
+ + \ No newline at end of file diff --git a/Tailspin.SpaceGame.Web/Tailspin.SpaceGame.Web.csproj b/Tailspin.SpaceGame.Web/Tailspin.SpaceGame.Web.csproj index a3696867955..1c81f74a7b7 100644 --- a/Tailspin.SpaceGame.Web/Tailspin.SpaceGame.Web.csproj +++ b/Tailspin.SpaceGame.Web/Tailspin.SpaceGame.Web.csproj @@ -7,5 +7,13 @@ + + + + + + + + diff --git a/azure-pipelines.yml b/azure-pipelines.yml index bfbd290d264..ffab52fb2a1 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -60,3 +60,11 @@ steps: pathToPublish: '$(Build.ArtifactStagingDirectory)/$(buildConfiguration)' artifactName: 'drop' condition: succeeded() + + - task: NuGetCommand@2 + displayName: 'Restore project dependencies' + inputs: + command: 'restore' + restoreSolution: '**/*.sln' + feedsToUse: 'select' + vstsFeed: '$(System.TeamProject)/Tailspin.SpaceGame.Web.Models' \ No newline at end of file diff --git a/nuget.config b/nuget.config new file mode 100644 index 00000000000..90663f905e1 --- /dev/null +++ b/nuget.config @@ -0,0 +1 @@ + \ No newline at end of file From 39920081d0324c35334773662f5d8d275a00468d Mon Sep 17 00:00:00 2001 From: "Dasalla, John Mathew" Date: Wed, 23 Jul 2025 16:09:01 +0800 Subject: [PATCH 6/7] Package added --- azure-pipelines.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index ffab52fb2a1..40aa264a3b1 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -61,10 +61,10 @@ steps: artifactName: 'drop' condition: succeeded() - - task: NuGetCommand@2 +- task: NuGetCommand@2 displayName: 'Restore project dependencies' inputs: command: 'restore' restoreSolution: '**/*.sln' feedsToUse: 'select' - vstsFeed: '$(System.TeamProject)/Tailspin.SpaceGame.Web.Models' \ No newline at end of file + vstsFeed: 'Sample/Tailspin.SpaceGame.Web.Models' # Replace with your actual feed path From 25981706cd2e157518668b167a179eacf59fd536 Mon Sep 17 00:00:00 2001 From: "Dasalla, John Mathew" Date: Wed, 23 Jul 2025 16:11:38 +0800 Subject: [PATCH 7/7] brought back version --- azure-pipelines.yml | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 40aa264a3b1..e50c8d0ee08 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -61,10 +61,4 @@ steps: artifactName: 'drop' condition: succeeded() -- task: NuGetCommand@2 - displayName: 'Restore project dependencies' - inputs: - command: 'restore' - restoreSolution: '**/*.sln' - feedsToUse: 'select' - vstsFeed: 'Sample/Tailspin.SpaceGame.Web.Models' # Replace with your actual feed path +