Skip to content

Commit

Permalink
Merge pull request #780 from NemeStats/bugfix/779-GamingGroup-EntityD…
Browse files Browse the repository at this point in the history
…oesNotExist

fix EntityDoesNotExistException when gaming group not found #779
  • Loading branch information
HolisticDeveloper committed Jun 1, 2023
2 parents 0fba795 + ec21891 commit 79859ea
Show file tree
Hide file tree
Showing 3 changed files with 59 additions and 22 deletions.
18 changes: 9 additions & 9 deletions Source/BusinessLogic/Logic/GamingGroups/IGamingGroupRetriever.cs
Original file line number Diff line number Diff line change
Expand Up @@ -26,18 +26,18 @@

namespace BusinessLogic.Logic.GamingGroups
{
public interface IGamingGroupRetriever
{
public interface IGamingGroupRetriever
{
GamingGroupSummary GetGamingGroupDetails(GamingGroupFilter gamingGroupFilter);

GamingGroup GetGamingGroupById(int gamingGroupId);

IList<GamingGroupListItemModel> GetGamingGroupsForUser(string applicationUserId);
IList<GamingGroupListItemModel> GetGamingGroupsForUser(string applicationUserId);

List<TopGamingGroupSummary> GetTopGamingGroups(int numberOfTopGamingGroupsToShow);
List<GamingGroupSitemapInfo> GetGamingGroupsSitemapInfo();
GamingGroupStats GetGamingGroupStats(int gamingGroupId, BasicDateRangeFilter dateFilter);
GamingGroupWithUsers GetGamingGroupWithUsers(int gamingGroupId, ApplicationUser currentUser);
RecentGamingGroupChanges GetRecentChanges(int gamingGroupId, BasicDateRangeFilter dateFilter);
}
List<TopGamingGroupSummary> GetTopGamingGroups(int numberOfTopGamingGroupsToShow);
List<GamingGroupSitemapInfo> GetGamingGroupsSitemapInfo();
GamingGroupStats GetGamingGroupStats(int gamingGroupId, BasicDateRangeFilter dateFilter);
GamingGroupWithUsers GetGamingGroupWithUsers(int gamingGroupId, ApplicationUser currentUser);
RecentGamingGroupChanges GetRecentChanges(int gamingGroupId, BasicDateRangeFilter dateFilter);
}
}
32 changes: 22 additions & 10 deletions Source/UI/Controllers/GamingGroupController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,26 +15,28 @@

#endregion LICENSE

using System.Collections.Generic;
using BusinessLogic.Logic;
using BusinessLogic.Logic.GamingGroups;
using BusinessLogic.Logic.Users;
using BusinessLogic.Models.GamingGroups;
using BusinessLogic.Models.User;
using BusinessLogic.Models.Utility;
using System.Linq;
using System.Web.Mvc;
using BusinessLogic.DataAccess.Security;
using BusinessLogic.Exceptions;
using BusinessLogic.Facades;
using BusinessLogic.Logic;
using BusinessLogic.Logic.Champions;
using BusinessLogic.Logic.GameDefinitions;
using BusinessLogic.Logic.GamingGroups;
using BusinessLogic.Logic.Nemeses;
using BusinessLogic.Logic.PlayedGames;
using BusinessLogic.Logic.Players;
using BusinessLogic.Logic.Users;
using BusinessLogic.Models;
using BusinessLogic.Models.Achievements;
using BusinessLogic.Models.Champions;
using BusinessLogic.Models.GamingGroups;
using BusinessLogic.Models.Nemeses;
using BusinessLogic.Models.Players;
using BusinessLogic.Models.User;
using BusinessLogic.Models.Utility;
using System.Collections.Generic;
using System.Linq;
using System.Web.Mvc;
using UI.Attributes.Filters;
using UI.Controllers.Helpers;
using UI.Mappers.Extensions;
Expand Down Expand Up @@ -129,7 +131,17 @@ public virtual ActionResult Details(int id, ApplicationUser currentUser, [System
ModelState.AddModelError("dateRangeFilter", errorMessage);
}

var gamingGroupSummary = GetGamingGroupSummary(id, dateRangeFilter);
GamingGroupSummary gamingGroupSummary;

try
{
gamingGroupSummary = GetGamingGroupSummary(id, dateRangeFilter);
}
catch (EntityDoesNotExistException<GamingGroup>)
{
return new HttpNotFoundResult();
}

var viewModel = new GamingGroupViewModel
{
PublicDetailsView = new GamingGroupPublicDetailsViewModel
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,17 @@

#endregion LICENSE

using System;
using BusinessLogic.Exceptions;
using BusinessLogic.Logic.GamingGroups;
using BusinessLogic.Models;
using BusinessLogic.Models.GamingGroups;
using BusinessLogic.Models.Utility;
using NUnit.Framework;
using Rhino.Mocks;
using System.Web.Mvc;
using Shouldly;
using System;
using System.Net;
using System.Web.Mvc;
using UI.Models.GamingGroup;

namespace UI.Tests.UnitTests.ControllerTests.GamingGroupControllerTests
Expand All @@ -32,7 +36,7 @@ public class DetailsTests : GamingGroupControllerTestBase
private GamingGroupSummary _gamingGroupSummary;
private BasicDateRangeFilter _dateRangeFilter;

[Test]
[SetUp]
public override void SetUp()
{
base.SetUp();
Expand All @@ -47,7 +51,10 @@ public override void SetUp()
Active = true
};
_dateRangeFilter = new BasicDateRangeFilter();
}

private void SetUpAutoMockerToReturnSummary()
{
autoMocker.ClassUnderTest.Expect(mock => mock.GetGamingGroupSummary(
Arg<int>.Is.Anything,
Arg<IDateRangeFilter>.Is.Anything))
Expand All @@ -58,6 +65,7 @@ public override void SetUp()
[Test]
public void ItReturnsTheDetailsView()
{
SetUpAutoMockerToReturnSummary();
var viewResult = autoMocker.ClassUnderTest.Details(currentUser.CurrentGamingGroupId.Value, currentUser, _dateRangeFilter) as ViewResult;

Assert.AreEqual(MVC.GamingGroup.Views.Details, viewResult.ViewName);
Expand All @@ -66,6 +74,7 @@ public void ItReturnsTheDetailsView()
[Test]
public void ItAddsAGamingGroupViewModelToTheView()
{
SetUpAutoMockerToReturnSummary();
var viewResult = autoMocker.ClassUnderTest.Details(currentUser.CurrentGamingGroupId.Value, currentUser, _dateRangeFilter) as ViewResult;

var viewModel = viewResult.Model as GamingGroupViewModel;
Expand All @@ -80,6 +89,7 @@ public void ItAddsAGamingGroupViewModelToTheView()
[Test]
public void ItPreservesTheDateRangeFilter()
{
SetUpAutoMockerToReturnSummary();
var viewResult = autoMocker.ClassUnderTest.Details(currentUser.CurrentGamingGroupId.Value, currentUser, _dateRangeFilter) as ViewResult;

var model = viewResult.Model as GamingGroupViewModel;
Expand All @@ -89,6 +99,7 @@ public void ItPreservesTheDateRangeFilter()
[Test]
public void ItAddsAModelErrorIfTheBasicDateRangeFilterHasValidationErrors()
{
SetUpAutoMockerToReturnSummary();
var basicDateRangeFilterMock = MockRepository.GenerateMock<BasicDateRangeFilter>();
var expectedErrorMessage = "some error message";
basicDateRangeFilterMock.Expect(mock => mock.IsValid(out Arg<string>.Out(expectedErrorMessage).Dummy)).Return(false);
Expand All @@ -99,5 +110,19 @@ public void ItAddsAModelErrorIfTheBasicDateRangeFilterHasValidationErrors()
Assert.That(modelErrorsForKey.Count, Is.EqualTo(1));
Assert.That(modelErrorsForKey[0].ErrorMessage, Is.EqualTo(expectedErrorMessage));
}

[Test]
public void ItReturnsAnHttpNotFoundStatusCodeIfTheGamingGroupIsNotFound()
{
const int nonExistentGamingGroupId = -1;
autoMocker.Get<IGamingGroupRetriever>().BackToRecord(BackToRecordOptions.All);
autoMocker.Get<IGamingGroupRetriever>().Expect(mock => mock.GetGamingGroupDetails(Arg<GamingGroupFilter>.Is.Anything))
.Throw(new EntityDoesNotExistException<GamingGroup>(nonExistentGamingGroupId));
autoMocker.Get<IGamingGroupRetriever>().Replay();

var result = autoMocker.ClassUnderTest.Details(nonExistentGamingGroupId, currentUser) as HttpStatusCodeResult;

Assert.That(result.StatusCode, Is.EqualTo((int)HttpStatusCode.NotFound));
}
}
}

0 comments on commit 79859ea

Please sign in to comment.