public void TenantId_ProvidesTenantId_FromExtension()
        {
            // Arrange
            var tenantId   = new TenantId("custom");
            var extension  = CreateTenantWorkContextExtension(tenantId);
            var collection = new WorkContextExtensionCollection();

            collection.SetExtension(extension);

            // Act
            var context = new WorkContext(collection);

            // Assert
            Assert.Equal(tenantId, context.TenantId);
        }
        public void Cultures_ProvidedByExtension()
        {
            // Arrange
            var formatting = CultureInfo.GetCultureInfo("en-US");
            var resource   = CultureInfo.GetCultureInfo("es-ES");
            var extension  = CreateCultureWorkContextExtension(formatting, resource);
            var collection = new WorkContextExtensionCollection();

            collection.SetExtension(extension);

            // Act
            var context = new WorkContext(collection);

            // Assert
            Assert.NotNull(context.FormattingCulture);
            Assert.Same(formatting, context.FormattingCulture);

            Assert.NotNull(context.ResourceCulture);
            Assert.Same(resource, context.ResourceCulture);
        }
        public void FormattingCulture_CanBeChanged_WhenSettingExtension()
        {
            // Arrange
            var culture1 = new CultureInfo("en-GB");
            var culture2 = new CultureInfo("en-US");

            var extension1 = CreateCultureWorkContextExtension(culture1, culture1);
            var extension2 = CreateCultureWorkContextExtension(culture2, culture2);

            var collection = new WorkContextExtensionCollection();

            collection.SetExtension(extension1);

            var context = new WorkContext(collection);

            // Act
            context.Extensions.SetExtension(extension2);

            // Assert
            Assert.Equal(culture2, context.FormattingCulture);
        }
        public void Tenant_CanBeChanged_WhenSettingExtension()
        {
            // Arrange
            var tenant1 = new TenantId("one");
            var tenant2 = new TenantId("two");

            var extension1 = CreateTenantWorkContextExtension(tenant1);
            var extension2 = CreateTenantWorkContextExtension(tenant2);

            var collection = new WorkContextExtensionCollection();

            collection.SetExtension(extension1);

            var context = new WorkContext(collection);

            // Act
            context.Extensions.SetExtension(extension2);

            // Assert
            Assert.Equal(tenant2, context.TenantId);
        }