using LightBDD.Framework;
using LightBDD.Framework.Scenarios;
using LightBDD.MsTest3;

namespace PlanTempus.X.BDD.Scenarios;

[TestClass]
public partial class AccountRegistrationSpecs : FeatureFixtures.AccountRegistrationSpecs
{
    [Scenario]
    [TestMethod]
    public async Task Successful_account_registration_with_valid_email()
    {
        await Runner.RunScenarioAsync(
            _ => Given_a_unique_email_address(),
            _ => When_I_submit_registration_with_valid_credentials(),
            _ => Then_the_account_should_be_created_successfully()
        );
    }

    [Scenario]
    [TestMethod]
    public async Task Reject_duplicate_email_registration()
    {
        // Use a unique email for this test to avoid conflicts with other test runs
        var uniqueEmail = $"duplicate_{Guid.NewGuid():N}@test.example.com";

        await Runner.RunScenarioAsync(
            _ => Given_an_account_already_exists_with_email(uniqueEmail),
            _ => When_I_try_to_register_with_the_same_email(),
            _ => Then_registration_should_fail_with_duplicate_email_error()
        );
    }
}
