94 lines
2.3 KiB
C#
94 lines
2.3 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 UserRegistrationSpecs : FeatureFixture
|
|
{
|
|
protected User _currentUser;
|
|
protected string _currentEmail;
|
|
protected Exception _registrationError;
|
|
|
|
IUserService _userService;
|
|
IEmailService _emailService;
|
|
IOrganizationService _organizationService;
|
|
|
|
public async Task Given_no_user_exists_with_email(string email)
|
|
{
|
|
// Ensure user doesn't exist with email
|
|
var user = await _userService.GetUserByEmailAsync(email);
|
|
user.ShouldBeNull();
|
|
_currentEmail = email;
|
|
}
|
|
|
|
public async Task When_I_submit_registration_with_name_and_email(string name, string email)
|
|
{
|
|
try
|
|
{
|
|
_currentUser = await _userService.CreateUserAsync(email, name);
|
|
_currentEmail = email;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
_registrationError = ex;
|
|
}
|
|
}
|
|
|
|
public async Task When_I_submit_registration_with_email(string email)
|
|
{
|
|
try
|
|
{
|
|
_currentUser = await _userService.CreateUserAsync(email, "Test User");
|
|
_currentEmail = email;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
_registrationError = ex;
|
|
}
|
|
}
|
|
|
|
public async Task Then_a_new_user_should_be_created_with_email_and_confirmation_status(string email, bool confirmationStatus)
|
|
{
|
|
_currentUser.ShouldNotBeNull();
|
|
_currentUser.Email.ShouldBe(email);
|
|
_currentUser.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_a_user_already_exists_with_email(string email)
|
|
{
|
|
// Create a user first to ensure it exists
|
|
_currentUser = await _userService.CreateUserAsync(email, "Existing User");
|
|
_currentUser.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;
|
|
|
|
}
|
|
}
|