/
githubmirror
/
aspnetcore
Обзор
Документация
Войти
/
githubmirror
/
aspnetcore
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/Components/Endpoints/test/TempData/TempDataCascadingValueSupplierTest.cs
125 строк
4 KB
Daria Tiurina
SupplyParameterFromTempData support for Blazor (#65306)
18 апр 2026, 00:17
Не верифицирован
18 апр 2026, 00:17
319e87f
Код
Авторство
О чём код?
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Logging.Abstractions; namespace Microsoft.AspNetCore.Components.Endpoints; public class TempDataCascadingValueSupplierTest { private readonly TempDataCascadingValueSupplier _supplier; public TempDataCascadingValueSupplierTest() { _supplier = new TempDataCascadingValueSupplier(NullLogger<TempDataCascadingValueSupplier>.Instance); } [Fact] public void RegisterValueCallback_AddsCallback() { var callbackInvoked = false; _supplier.RegisterValueCallback("key", () => { callbackInvoked = true; return "value"; }); var tempData = new TempData(() => new Dictionary<string, object>()); _supplier.PersistValues(tempData); Assert.True(callbackInvoked); } [Fact] public void RegisterValueCallback_ThrowsForDuplicateKey() { _supplier.RegisterValueCallback("key", () => "value1"); var ex = Assert.Throws<InvalidOperationException>(() => _supplier.RegisterValueCallback("key", () => "value2")); Assert.Contains("key", ex.Message); } [Fact] public void PersistValues_SetsValueInTempData() { _supplier.RegisterValueCallback("key", () => "persisted value"); var tempData = new TempData(() => new Dictionary<string, object>()); _supplier.PersistValues(tempData); Assert.Equal("persisted value", tempData.Peek("key")); } [Fact] public void PersistValues_RemovesKey_WhenCallbackReturnsNull() { var tempData = new TempData(() => new Dictionary<string, object>()); tempData["key"] = "existing"; _supplier.RegisterValueCallback("key", () => null); _supplier.PersistValues(tempData); Assert.Null(tempData.Peek("key")); } [Fact] public void PersistValues_HandlesMultipleKeys() { _supplier.RegisterValueCallback("key1", () => "value1"); _supplier.RegisterValueCallback("key2", () => "value2"); _supplier.RegisterValueCallback("key3", () => "value3"); var tempData = new TempData(() => new Dictionary<string, object>()); _supplier.PersistValues(tempData); Assert.Equal("value1", tempData.Peek("key1")); Assert.Equal("value2", tempData.Peek("key2")); Assert.Equal("value3", tempData.Peek("key3")); } [Fact] public void PersistValues_ContinuesOnCallbackException() { _supplier.RegisterValueCallback("key1", () => throw new InvalidOperationException("Test exception")); _supplier.RegisterValueCallback("key2", () => "value2"); var tempData = new TempData(() => new Dictionary<string, object>()); _supplier.PersistValues(tempData); Assert.Null(tempData.Peek("key1")); Assert.Equal("value2", tempData.Peek("key2")); } [Fact] public void PersistValues_IsCaseInsensitiveForKeys() { _supplier.RegisterValueCallback("MyKey", () => "value"); var tempData = new TempData(() => new Dictionary<string, object>()); _supplier.PersistValues(tempData); Assert.True(tempData.ContainsKey("mykey")); } [Fact] public void DeleteCallbacks_RemovesCallbacksForKey() { var callbackInvoked = false; _supplier.RegisterValueCallback("key", () => { callbackInvoked = true; return "value"; }); _supplier.DeleteValueCallback("key"); var tempData = new TempData(() => new Dictionary<string, object>()); _supplier.PersistValues(tempData); Assert.False(callbackInvoked); Assert.Null(tempData.Peek("key")); } }