Renames core domain entities and services from "User" to "Account" Refactors project-wide namespaces, classes, and database tables to use "Account" terminology Updates related components, services, and database schema to reflect new domain naming Standardizes naming conventions across authentication and organization setup features
90 lines
2.4 KiB
C#
90 lines
2.4 KiB
C#
using LightBDD.Framework;
|
|
using LightBDD.Framework.Scenarios;
|
|
using LightBDD.MsTest3;
|
|
using PlanTempus.X.Services;
|
|
using Shouldly;
|
|
namespace PlanTempus.X.BDD.FeatureFixtures;
|
|
|
|
[TestClass]
|
|
[FeatureDescription(@"As a new user
|
|
I want to register with my email
|
|
So I can start using the system")]
|
|
public partial class AccountRegistrationSpecs : FeatureFixture
|
|
{
|
|
protected Account _currentAccount;
|
|
protected string _currentEmail;
|
|
protected Exception _registrationError;
|
|
|
|
IAccountService _accountService;
|
|
IEmailService _emailService;
|
|
IOrganizationService _organizationService;
|
|
|
|
public async Task Given_no_account_exists_with_email(string email)
|
|
{
|
|
// Ensure account doesn't exist with email
|
|
var account = await _accountService.GetAccountByEmailAsync(email);
|
|
account.ShouldBeNull();
|
|
_currentEmail = email;
|
|
}
|
|
|
|
public async Task When_I_submit_registration_with_email_and_password(string email, string password)
|
|
{
|
|
try
|
|
{
|
|
_currentAccount = await _accountService.CreateAccountAsync(email, password);
|
|
_currentEmail = email;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
_registrationError = ex;
|
|
}
|
|
}
|
|
|
|
public async Task When_I_submit_registration_with_email(string email)
|
|
{
|
|
try
|
|
{
|
|
_currentAccount = await _accountService.CreateAccountAsync(email, "TestPassword123!");
|
|
_currentEmail = email;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
_registrationError = ex;
|
|
}
|
|
}
|
|
|
|
public async Task Then_a_new_account_should_be_created_with_email_and_confirmation_status(string email, bool confirmationStatus)
|
|
{
|
|
_currentAccount.ShouldNotBeNull();
|
|
_currentAccount.Email.ShouldBe(email);
|
|
_currentAccount.EmailConfirmed.ShouldBe(confirmationStatus);
|
|
|
|
await Task.CompletedTask;
|
|
}
|
|
|
|
public async Task Then_a_confirmation_email_should_be_sent()
|
|
{
|
|
var emailSent = _emailService.WasConfirmationEmailSent(_currentEmail);
|
|
emailSent.ShouldBeTrue();
|
|
|
|
await Task.CompletedTask;
|
|
}
|
|
|
|
public async Task Given_an_account_already_exists_with_email(string email)
|
|
{
|
|
// Create an account first to ensure it exists
|
|
_currentAccount = await _accountService.CreateAccountAsync(email, "ExistingPassword123!");
|
|
_currentAccount.ShouldNotBeNull();
|
|
_currentEmail = email;
|
|
|
|
await Task.CompletedTask;
|
|
}
|
|
|
|
public async Task Then_registration_should_fail_with_error(string expectedErrorMessage)
|
|
{
|
|
_registrationError.ShouldNotBeNull();
|
|
_registrationError.Message.ShouldBe(expectedErrorMessage);
|
|
|
|
await Task.CompletedTask;
|
|
}
|
|
}
|