Add comprehensive test suite infrastructure
- Create backend xUnit test project with Moq and FluentAssertions - Add test utilities: TestDataFactory, MockHttpContext, TestUserClaims - Create AuthControllerTests with comprehensive auth scenarios - Install Jest and React Testing Library for frontend - Configure jest.config.ts and jest.setup.ts with Next.js support - Add test scripts to package.json
This commit is contained in:
@@ -0,0 +1,99 @@
|
||||
using RacePlannerApi.Models;
|
||||
|
||||
namespace backend.Tests.Utilities;
|
||||
|
||||
public static class TestDataFactory
|
||||
{
|
||||
public static User CreateUser(
|
||||
string email = "test@example.com",
|
||||
string name = "Test User",
|
||||
UserRole role = UserRole.Participant,
|
||||
string password = "password123")
|
||||
{
|
||||
return new User
|
||||
{
|
||||
Id = Guid.NewGuid(),
|
||||
Email = email,
|
||||
Name = name,
|
||||
Role = role,
|
||||
PasswordHash = BCrypt.Net.BCrypt.HashPassword(password),
|
||||
CreatedAt = DateTime.UtcNow
|
||||
};
|
||||
}
|
||||
|
||||
public static Event CreateEvent(
|
||||
string name = "Test Event",
|
||||
string description = "Test event description",
|
||||
DateTime? eventDate = null,
|
||||
string location = "Test Location",
|
||||
Guid? organizerId = null,
|
||||
EventStatus status = EventStatus.Draft)
|
||||
{
|
||||
return new Event
|
||||
{
|
||||
Id = Guid.NewGuid(),
|
||||
Name = name,
|
||||
Description = description,
|
||||
EventDate = eventDate ?? DateTime.UtcNow.AddDays(7),
|
||||
Location = location,
|
||||
OrganizerId = organizerId ?? Guid.NewGuid(),
|
||||
Status = status,
|
||||
Category = "Running",
|
||||
Tags = new List<string>(),
|
||||
MaxParticipants = 100,
|
||||
CreatedAt = DateTime.UtcNow,
|
||||
UpdatedAt = DateTime.UtcNow
|
||||
};
|
||||
}
|
||||
|
||||
public static Registration CreateRegistration(
|
||||
Guid eventId,
|
||||
Guid participantId,
|
||||
RegistrationStatus status = RegistrationStatus.Pending)
|
||||
{
|
||||
return new Registration
|
||||
{
|
||||
Id = Guid.NewGuid(),
|
||||
EventId = eventId,
|
||||
ParticipantId = participantId,
|
||||
Status = status,
|
||||
EmergencyContact = "Emergency Contact: 123-456-7890",
|
||||
Category = "Open",
|
||||
CreatedAt = DateTime.UtcNow,
|
||||
Payments = new List<Payment>()
|
||||
};
|
||||
}
|
||||
|
||||
public static Payment CreatePayment(
|
||||
Guid registrationId,
|
||||
decimal amount = 50.00m,
|
||||
PaymentMethod method = PaymentMethod.Cash)
|
||||
{
|
||||
return new Payment
|
||||
{
|
||||
Id = Guid.NewGuid(),
|
||||
RegistrationId = registrationId,
|
||||
Amount = amount,
|
||||
Method = method,
|
||||
TransactionId = method == PaymentMethod.Online ? Guid.NewGuid().ToString() : null,
|
||||
PaymentDate = DateTime.UtcNow,
|
||||
CreatedAt = DateTime.UtcNow
|
||||
};
|
||||
}
|
||||
|
||||
public static Announcement CreateAnnouncement(
|
||||
Guid eventId,
|
||||
string title = "Test Announcement",
|
||||
string content = "Test announcement content")
|
||||
{
|
||||
return new Announcement
|
||||
{
|
||||
Id = Guid.NewGuid(),
|
||||
EventId = eventId,
|
||||
Title = title,
|
||||
Content = content,
|
||||
CreatedAt = DateTime.UtcNow,
|
||||
UpdatedAt = DateTime.UtcNow
|
||||
};
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user