public async Task GetOrNullAsync()
    {
        // Act
        (await FeatureManagementStore.GetOrNullAsync(Guid.NewGuid().ToString(),
                                                     EditionFeatureValueProvider.ProviderName,
                                                     TestEditionIds.Regular.ToString())).ShouldBeNull();

        (await FeatureManagementStore.GetOrNullAsync(TestFeatureDefinitionProvider.SocialLogins,
                                                     EditionFeatureValueProvider.ProviderName,
                                                     TestEditionIds.Regular.ToString())).ShouldNotBeNull();
    }
    public async Task Should_Get_Null_Where_Feature_Deleted()
    {
        // Arrange
        (await FeatureManagementStore.GetOrNullAsync(TestFeatureDefinitionProvider.SocialLogins,
                                                     EditionFeatureValueProvider.ProviderName,
                                                     TestEditionIds.Regular.ToString())).ShouldNotBeNull();

        // Act
        await FeatureManagementStore.DeleteAsync(TestFeatureDefinitionProvider.SocialLogins,
                                                 EditionFeatureValueProvider.ProviderName,
                                                 TestEditionIds.Regular.ToString());

        // Assert
        (await FeatureManagementStore.GetOrNullAsync(TestFeatureDefinitionProvider.SocialLogins,
                                                     EditionFeatureValueProvider.ProviderName,
                                                     TestEditionIds.Regular.ToString())).ShouldBeNull();
    }
    public async Task SetAsync()
    {
        // Arrange
        (await FeatureValueRepository.FindAsync(TestFeatureDefinitionProvider.SocialLogins,
                                                EditionFeatureValueProvider.ProviderName,
                                                TestEditionIds.Regular.ToString())).Value.ShouldBe(true.ToString().ToLowerInvariant());

        // Act
        await FeatureManagementStore.SetAsync(TestFeatureDefinitionProvider.SocialLogins,
                                              false.ToString().ToUpperInvariant(),
                                              EditionFeatureValueProvider.ProviderName,
                                              TestEditionIds.Regular.ToString());

        // Assert
        (await FeatureValueRepository.FindAsync(TestFeatureDefinitionProvider.SocialLogins,
                                                EditionFeatureValueProvider.ProviderName,
                                                TestEditionIds.Regular.ToString())).Value.ShouldBe(false.ToString().ToUpperInvariant());
    }
    public async Task DeleteAsync()
    {
        // Arrange
        (await FeatureValueRepository.FindAsync(TestFeatureDefinitionProvider.SocialLogins,
                                                EditionFeatureValueProvider.ProviderName,
                                                TestEditionIds.Regular.ToString())).ShouldNotBeNull();

        // Act
        await FeatureManagementStore.DeleteAsync(TestFeatureDefinitionProvider.SocialLogins,
                                                 EditionFeatureValueProvider.ProviderName,
                                                 TestEditionIds.Regular.ToString());


        // Assert
        (await FeatureValueRepository.FindAsync(TestFeatureDefinitionProvider.SocialLogins,
                                                EditionFeatureValueProvider.ProviderName,
                                                TestEditionIds.Regular.ToString())).ShouldBeNull();
    }
    public async Task Set_In_UnitOfWork_Should_Be_Consistent()
    {
        using (UnitOfWorkManager.Begin())
        {
            // Arrange
            (await FeatureManagementStore.GetOrNullAsync(TestFeatureDefinitionProvider.SocialLogins,
                                                         EditionFeatureValueProvider.ProviderName,
                                                         TestEditionIds.Regular.ToString())).ShouldNotBeNull();


            // Act
            await FeatureManagementStore.SetAsync(TestFeatureDefinitionProvider.SocialLogins,
                                                  false.ToString().ToUpperInvariant(),
                                                  EditionFeatureValueProvider.ProviderName,
                                                  TestEditionIds.Regular.ToString());

            // Assert
            (await FeatureManagementStore.GetOrNullAsync(TestFeatureDefinitionProvider.SocialLogins,
                                                         EditionFeatureValueProvider.ProviderName,
                                                         TestEditionIds.Regular.ToString())).ShouldBe(false.ToString().ToUpperInvariant());
        }
    }
    public async Task Delete_In_UnitOfWork_Should_Be_Consistent()
    {
        using (var uow = UnitOfWorkManager.Begin())
        {
            // Arrange
            (await FeatureManagementStore.GetOrNullAsync(TestFeatureDefinitionProvider.SocialLogins,
                                                         EditionFeatureValueProvider.ProviderName,
                                                         TestEditionIds.Regular.ToString())).ShouldNotBeNull();

            // Act
            await FeatureManagementStore.DeleteAsync(TestFeatureDefinitionProvider.SocialLogins,
                                                     EditionFeatureValueProvider.ProviderName,
                                                     TestEditionIds.Regular.ToString());

            await uow.SaveChangesAsync();

            // Assert
            (await FeatureManagementStore.GetOrNullAsync(TestFeatureDefinitionProvider.SocialLogins,
                                                         EditionFeatureValueProvider.ProviderName,
                                                         TestEditionIds.Regular.ToString())).ShouldBeNull();
        }
    }