From de86b58b82795685b02e16f5f425ba3b0daf46ba Mon Sep 17 00:00:00 2001 From: Sagnik Maji Date: Mon, 19 Jan 2026 19:14:47 +0530 Subject: [PATCH 1/2] Add optional icon field to Goal model --- CommBank-Server/Models/Goal.cs | 2 ++ CommBank-Server/Program.cs | 3 ++- CommBank-Server/Secrets.json | 7 ++++--- CommBank-Server/appsettings.Development.json | 6 ++++++ CommBank-Server/appsettings.json | 7 ++++++- 5 files changed, 20 insertions(+), 5 deletions(-) diff --git a/CommBank-Server/Models/Goal.cs b/CommBank-Server/Models/Goal.cs index 77ff1ad..81f0192 100644 --- a/CommBank-Server/Models/Goal.cs +++ b/CommBank-Server/Models/Goal.cs @@ -11,6 +11,8 @@ public class Goal public string? Name { get; set; } + public string? Icon { get; set; } + public UInt64 TargetAmount { get; set; } = 0; public DateTime TargetDate { get; set; } diff --git a/CommBank-Server/Program.cs b/CommBank-Server/Program.cs index a88e560..c459242 100644 --- a/CommBank-Server/Program.cs +++ b/CommBank-Server/Program.cs @@ -11,7 +11,8 @@ builder.Configuration.SetBasePath(Directory.GetCurrentDirectory()).AddJsonFile("Secrets.json"); -var mongoClient = new MongoClient(builder.Configuration.GetConnectionString("CommBank")); +var mongoConnectionString = builder.Configuration["MongoDbSettings:ConnectionString"]; +var mongoClient = new MongoClient(mongoConnectionString); var mongoDatabase = mongoClient.GetDatabase("CommBank"); IAccountsService accountsService = new AccountsService(mongoDatabase); diff --git a/CommBank-Server/Secrets.json b/CommBank-Server/Secrets.json index 0e5bf94..516784c 100644 --- a/CommBank-Server/Secrets.json +++ b/CommBank-Server/Secrets.json @@ -1,5 +1,6 @@ { - "ConnectionStrings": { - "CommBank": "{CONNECTION_STRING}" + "MongoDbSettings": { + "ConnectionString": "mongodb+srv://commbankUser:StrongPassword123@cluster0.3ehcohp.mongodb.net", + "DatabaseName": "CommBank" } -} \ No newline at end of file +} diff --git a/CommBank-Server/appsettings.Development.json b/CommBank-Server/appsettings.Development.json index ce16a2e..5f922c0 100644 --- a/CommBank-Server/appsettings.Development.json +++ b/CommBank-Server/appsettings.Development.json @@ -4,6 +4,12 @@ "Default": "Information", "Microsoft.AspNetCore": "Warning" } + }, + + "MongoDbSettings": { + "ConnectionString": "mongodb+srv://commbankUser:StrongPassword123@cluster0.3ehcohp.mongodb.net", + "DatabaseName": "CommBank" } } + diff --git a/CommBank-Server/appsettings.json b/CommBank-Server/appsettings.json index af0538f..12f84c8 100644 --- a/CommBank-Server/appsettings.json +++ b/CommBank-Server/appsettings.json @@ -5,6 +5,11 @@ "Microsoft.AspNetCore": "Warning" } }, - "AllowedHosts": "*" + "AllowedHosts": "*", + + "MongoDbSettings": { + "ConnectionString": "mongodb+srv://commbankUser:StrongPassword123@cluster0.3ehcohp.mongodb.net", + "DatabaseName": "CommBank" + } } From a6020e13188e42353b0f66301e40632f52d235de Mon Sep 17 00:00:00 2001 From: Sagnik Maji Date: Sun, 22 Feb 2026 20:24:40 +0530 Subject: [PATCH 2/2] Task 4 --- CommBank.Tests/GoalControllerTests.cs | 41 +++++++++++++++++++++++---- 1 file changed, 36 insertions(+), 5 deletions(-) diff --git a/CommBank.Tests/GoalControllerTests.cs b/CommBank.Tests/GoalControllerTests.cs index 8380181..42bc102 100644 --- a/CommBank.Tests/GoalControllerTests.cs +++ b/CommBank.Tests/GoalControllerTests.cs @@ -1,4 +1,8 @@ -using CommBank.Controllers; +using Xunit; +using Moq; +using System.Collections.Generic; +using System.Threading.Tasks; +using CommBank.Controllers; using CommBank.Services; using CommBank.Models; using CommBank.Tests.Fake; @@ -61,14 +65,41 @@ public async void Get() Assert.Equal(goals[0], result.Value); Assert.NotEqual(goals[1], result.Value); } - + [Fact] - public async void GetForUser() + public async Task GetForUser_ReturnsGoals_ForValidUser() { // Arrange - + var userId = "507f1f77bcf86cd799439011"; + + var mockGoalsService = new Mock(); + var mockUsersService = new Mock(); + + var expectedGoals = new List + { + new Goal + { + Id = "507f1f77bcf86cd799439012", + UserId = userId, + Name = "Test Goal" + } + }; + + mockGoalsService + .Setup(service => service.GetForUserAsync(userId)) + .ReturnsAsync(expectedGoals); + + var controller = new GoalController( + mockGoalsService.Object, + mockUsersService.Object + ); + // Act - + var result = await controller.GetForUser(userId); + // Assert + Assert.NotNull(result); + Assert.Single(result); + Assert.Equal("Test Goal", result[0].Name); } } \ No newline at end of file