using System; using Xunit; using Landmark.OLA.Models.Addresses; using Landmark.OLA.Models.Addresses.Enums; using Landmark.OLA.Models.Addresses.Validators; namespace Landmark.OLA.Tests.Addresses.Validators { public class AddressValidatorTest { [Fact] public void TestWithNull() { Address address = null; Assert.Throws(() => new AddressValidator().Validate(address).IsValid); } [Theory] [InlineData(false, null, null, null, null, null, null, null)] [InlineData(true, "address1", "address2", "city", "postalCode", "ext", "WI", "UnitedStates")] [InlineData(true, "address1", null, "city", "postalCode", null, "WI", null)] [InlineData(false, null, null, "city", "postalCode", null, "WI", null)] [InlineData(false, "address1", null, null, "postalCode", null, "WI", null)] [InlineData(false, "address1", null, "city", null, null, "WI", null)] [InlineData(false, "address1", null, "city", "postalCode", null, null, null)] [InlineData(false, "address1", null, "city", null, null, null, null)] public void TestCombinationsWithValidStateAndCountry(bool expected, string address1, string address2, string city, string postalCode, string postalCodeExt, string state, string country) { StateOption? stateOptionToUse = null; if(!string.IsNullOrEmpty(state)) { Enum.TryParse(state, out StateOption stateOption); stateOptionToUse = stateOption; } CountryOption? countryOptionToUse = null; if (!string.IsNullOrEmpty(country)) { Enum.TryParse(state, out CountryOption countryOption); countryOptionToUse = countryOption; } Address address = new() { Address1 = address1, Address2 = address2, City = city, State = stateOptionToUse, PostalCode = postalCode, Country = countryOptionToUse, PostalCodeExt = postalCodeExt }; Assert.Equal(expected, new AddressValidator().Validate(address).IsValid); } } }