using Bunit;
using Bunit.TestDoubles;
using Fluxor;
using GoodWood.Application.DTOs;
using GoodWood.Application.Interfaces;
using GoodWood.Web.Store.AuthState;
using GoodWood.Web.Store.ClubState;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;
using MudBlazor;
using MudBlazor.Services;
using System.Security.Claims;
namespace GoodWood.Tests.Components;
///
/// Tests for the Home page component (now redirects to Dashboard).
///
public class HomePageTests : IDisposable
{
private readonly TestContext _ctx;
private readonly Mock _userServiceMock;
private readonly Mock _clubContextMock;
private readonly Mock _dispatcherMock;
private readonly Mock> _authStateMock;
private readonly Mock> _clubStateMock;
private readonly Mock _authorizationServiceMock;
public HomePageTests()
{
_ctx = new TestContext();
_userServiceMock = new Mock();
_clubContextMock = new Mock();
_dispatcherMock = new Mock();
// Setup default club context
_clubContextMock.Setup(c => c.ClubId).Returns(Guid.NewGuid());
_clubContextMock.Setup(c => c.ClubName).Returns("Test Club");
// Setup Fluxor states
_authStateMock = new Mock>();
_authStateMock.Setup(s => s.Value).Returns(AuthState.Initial);
_clubStateMock = new Mock>();
_clubStateMock.Setup(s => s.Value).Returns(ClubState.Initial);
// Setup authorization service mock
_authorizationServiceMock = new Mock();
_authorizationServiceMock
.Setup(s => s.AuthorizeAsync(
It.IsAny(),
It.IsAny