﻿using System.Collections.Generic;
using EasyApi.Mapping;
using NUnit.Framework;
using static EasyApi.Tests.TestUtils.TestCaseHelpers;
using static EasyApi.Tests.TestUtils.ValueHelpers;

namespace EasyApi.Tests.Mapping
{
	[TestFixture]
	[TestOf(typeof(EmptyParameterListMapping))]
	[Parallelizable]
	public class EmptyParameterListMappingTests : ParameterListMappingTests
	{
		protected override IParameterListMapping Mapping()
		{
			return new EmptyParameterListMapping();
		}

		protected override IEnumerable<TestCaseData> MapParametersToDtosWithInvalidArgumentsTestCases => TestCases(
			TestCase(Mapping(), ArgumentList(Argument<int>()))
		);

		protected override IEnumerable<TestCaseData> MapParametersToDtosTestCases => TestCases(
			TestCase(Mapping(), ArgumentList(), Is.Empty)
		);

		protected override IEnumerable<TestCaseData> MapDtosToParametersWithInvalidDtosTestCases => TestCases(
			TestCase(Mapping(), ArgumentList(Argument<int>()))
		);

		protected override IEnumerable<TestCaseData> MapDtosToParametersTestCases => TestCases(
			TestCase(Mapping(), ArgumentList(), Is.Empty)
		);

		protected override IEnumerable<TestCaseData> GetParameterMetadataListTestCases => TestCases(
			TestCase(Mapping(), Is.Empty)
		);

		protected override IEnumerable<TestCaseData> GetParameterDtoMetadataListTestCases => TestCases(
			TestCase(Mapping(), Is.Empty)
		);
	}
}