/// <summary>
        /// Tests whether the <see cref="Microsoft.AspNetCore.Mvc.ViewComponentResult"/>
        /// is of the same type as the provided one.
        /// </summary>
        /// <param name="viewComponentTestBuilder">
        /// Instance of <see cref="IViewComponentTestBuilder"/> type.
        /// </param>
        /// <param name="viewComponentType">Expected view component type.</param>
        /// <returns>The same <see cref="IAndViewComponentTestBuilder"/>.</returns>
        public static IAndViewComponentTestBuilder OfType(
            this IViewComponentTestBuilder viewComponentTestBuilder,
            Type viewComponentType)
        {
            var actualBuilder = GetActualBuilder(viewComponentTestBuilder);

            var actualViewComponentType = actualBuilder
                                          .ActionResult
                                          .ViewComponentType;

            if (viewComponentType != actualViewComponentType)
            {
                throw ViewResultAssertionException.ForNameEquality(
                          actualBuilder.TestContext.ExceptionMessagePrefix,
                          "view component",
                          viewComponentType.ToFriendlyTypeName(),
                          actualViewComponentType.ToFriendlyTypeName());
            }

            return(actualBuilder);
        }
        /// <summary>
        /// Tests whether the <see cref="Microsoft.AspNetCore.Mvc.ViewComponentResult"/>
        /// has the same name as the provided one.
        /// </summary>
        /// <param name="viewComponentTestBuilder">
        /// Instance of <see cref="IViewComponentTestBuilder"/> type.
        /// </param>
        /// <param name="viewComponentName">Expected view component name.</param>
        /// <returns>The same <see cref="IAndViewComponentTestBuilder"/>.</returns>
        public static IAndViewComponentTestBuilder WithName(
            this IViewComponentTestBuilder viewComponentTestBuilder,
            string viewComponentName)
        {
            var actualBuilder = GetActualBuilder(viewComponentTestBuilder);

            var actualViewComponentName = actualBuilder
                                          .ActionResult
                                          .ViewComponentName;

            if (viewComponentName != actualViewComponentName)
            {
                throw ViewResultAssertionException.ForNameEquality(
                          actualBuilder.TestContext.ExceptionMessagePrefix,
                          "view component",
                          viewComponentName,
                          actualViewComponentName);
            }

            return(actualBuilder);
        }
Example #3
0
        /// <summary>
        /// Tests whether the action result is <see cref="ViewComponentResult"/> with the provided view component type.
        /// </summary>
        /// <typeparam name="TActionResult">Type of action result type.</typeparam>
        /// <param name="builder">Instance of <see cref="IShouldReturnTestBuilder{TActionResult}"/> type.</param>
        /// <param name="viewComponentType">Expected view component type.</param>
        /// <returns>Test builder of <see cref="IAndViewComponentTestBuilder"/> type.</returns>
        public static IAndViewComponentTestBuilder ViewComponent <TActionResult>(
            this IShouldReturnTestBuilder <TActionResult> builder,
            Type viewComponentType)
        {
            var actualShouldReturnTestBuilder = (ShouldReturnTestBuilder <TActionResult>)builder;

            var viewComponentResult = InvocationResultValidator
                                      .GetInvocationResult <ViewComponentResult>(actualShouldReturnTestBuilder.TestContext);

            var actualViewComponentType = viewComponentResult.ViewComponentType;

            if (viewComponentType != actualViewComponentType)
            {
                throw ViewResultAssertionException.ForNameEquality(
                          actualShouldReturnTestBuilder.TestContext.ExceptionMessagePrefix,
                          "view component",
                          viewComponentType.ToFriendlyTypeName(),
                          actualViewComponentType.ToFriendlyTypeName());
            }

            return(new ViewComponentTestBuilder(actualShouldReturnTestBuilder.TestContext));
        }
        /// <summary>
        /// Tests whether the action result is <see cref="ViewComponentResult"/> with the provided view component name.
        /// </summary>
        /// <typeparam name="TActionResult">Type of action result type.</typeparam>
        /// <param name="shouldReturnTestBuilder">Instance of <see cref="IShouldReturnTestBuilder{TActionResult}"/> type.</param>
        /// <param name="viewComponentName">Expected view component name.</param>
        /// <returns>Test builder of <see cref="IViewComponentTestBuilder"/> type.</returns>
        public static IViewComponentTestBuilder ViewComponent <TActionResult>(
            this IShouldReturnTestBuilder <TActionResult> shouldReturnTestBuilder,
            string viewComponentName)
        {
            var actualShouldReturnTestBuilder = (ShouldReturnTestBuilder <TActionResult>)shouldReturnTestBuilder;

            var viewComponentResult = InvocationResultValidator
                                      .GetInvocationResult <ViewComponentResult>(actualShouldReturnTestBuilder.TestContext);

            var actualViewComponentName = viewComponentResult.ViewComponentName;

            if (viewComponentName != actualViewComponentName)
            {
                throw ViewResultAssertionException.ForNameEquality(
                          actualShouldReturnTestBuilder.TestContext.ExceptionMessagePrefix,
                          "view component",
                          viewComponentName,
                          actualViewComponentName);
            }

            return(new ViewComponentTestBuilder(actualShouldReturnTestBuilder.TestContext));
        }
Example #5
0
        /// <summary>
        /// Tests whether the action result is <see cref="ViewResult"/> with the provided view name.
        /// </summary>
        /// <typeparam name="TActionResult">Type of action result type.</typeparam>
        /// <param name="builder">Instance of <see cref="IShouldReturnTestBuilder{TActionResult}"/> type.</param>
        /// <param name="viewName">Expected view name.</param>
        /// <returns>Test builder of <see cref="IAndViewTestBuilder"/> type.</returns>
        public static IAndViewTestBuilder View <TActionResult>(
            this IShouldReturnTestBuilder <TActionResult> builder,
            string viewName)
        {
            var actualShouldReturnTestBuilder = (ShouldReturnTestBuilder <TActionResult>)builder;

            var viewType = "view";

            var viewResult = InvocationResultValidator
                             .GetInvocationResult <ViewResult>(actualShouldReturnTestBuilder.TestContext);

            var actualViewName = viewResult.ViewName;

            if (viewName != actualViewName)
            {
                throw ViewResultAssertionException.ForNameEquality(
                          actualShouldReturnTestBuilder.TestContext.ExceptionMessagePrefix,
                          viewType,
                          viewName,
                          actualViewName);
            }

            return(new ViewTestBuilder <ViewResult>(actualShouldReturnTestBuilder.TestContext, viewType));
        }
Example #6
0
        /// <summary>
        /// Tests whether the <see cref="Microsoft.AspNetCore.Mvc.ViewComponentResult"/>
        /// is of the same type as the provided one.
        /// </summary>
        /// <param name="viewComponentTestBuilder">
        /// Instance of <see cref="IViewComponentTestBuilder"/> type.
        /// </param>
        /// <param name="viewComponentType">Expected view component type.</param>
        /// <returns>The same <see cref="IAndViewComponentTestBuilder"/>.</returns>
        public static IAndViewComponentTestBuilder OfType(
            this IViewComponentTestBuilder viewComponentTestBuilder,
            Type viewComponentType)
        {
            var actualBuilder = GetActualBuilder(viewComponentTestBuilder);

            var actualViewComponentType = actualBuilder
                                          .ActionResult
                                          .ViewComponentType;

            if (viewComponentType != actualViewComponentType)
            {
                var(expectedViewComponentName, actualViewComponentName) =
                    (viewComponentType, actualViewComponentType).GetTypeComparisonNames();

                throw ViewResultAssertionException.ForNameEquality(
                          actualBuilder.TestContext.ExceptionMessagePrefix,
                          "view component",
                          expectedViewComponentName,
                          actualViewComponentName);
            }

            return(actualBuilder);
        }