public async Task No_Close_By_Other_Venue(GoogleGeo.LocationType locationType, long venueId, bool isNew, bool emptyList, bool success)
        {
            var venue = new VenueEntity {
                Id = 1, IsNew = isNew
            };

            var closeByVenues = new List <VenueDistanceResultRow>
            {
                new VenueDistanceResultRow {
                    Id = 1, Distance = .3
                },
                new VenueDistanceResultRow {
                    Id = 2, Distance = .4
                },
                new VenueDistanceResultRow {
                    Id = 3, Distance = .7
                },
                new VenueDistanceResultRow {
                    Id = 4, Distance = .9
                }
            };

            if (emptyList)
            {
                closeByVenues.Clear();
            }

            var vv = new VenueValidator(venue, (new GoogleGeo.GeoResponse {
                Success = true, Found = true, GeoLocation = new GoogleGeo.GeoLocation {
                    LocationType = locationType
                }
            }, closeByVenues));

            var factResult = await vv.CheckAsync(VenueValidator.FactId.NotExistingGeoLocation, CancellationToken.None);

            Assert.Multiple(() =>
            {
                Assert.IsTrue(factResult.Enabled);
                Assert.AreEqual(success, factResult.Success);
                if (!success)
                {
                    Assert.IsTrue(factResult.Message.Contains((closeByVenues.Max(v => v.Distance) * 1000).ToString(CultureInfo.InvariantCulture)));
                }
                Assert.IsNull(factResult.Exception);
            });
        }
        public async Task No_Close_By_Other_Venue_Should_be_disabled(GoogleGeo.LocationType locationType, bool enabled)
        {
            var venue = new VenueEntity();

            var vv = new VenueValidator(venue, (new GoogleGeo.GeoResponse {
                Success = true, Found = true, GeoLocation = new GoogleGeo.GeoLocation {
                    LocationType = locationType
                }
            }, new List <VenueDistanceResultRow>()));

            var factResult = await vv.CheckAsync(VenueValidator.FactId.NotExistingGeoLocation, CancellationToken.None);

            Assert.Multiple(() =>
            {
                Assert.AreEqual(factResult.Enabled, enabled);
                Assert.AreEqual(enabled, factResult.Success);
                Assert.IsNull(factResult.Exception);
            });
        }
        public async Task Position_should_be_found(GoogleGeo.LocationType locationType, bool expected)
        {
            var venue = new VenueEntity();

            var vv = new VenueValidator(venue, (new GoogleGeo.GeoResponse {
                Success = true, Found = true, GeoLocation = new GoogleGeo.GeoLocation {
                    LocationType = locationType
                }
            }, new List <VenueDistanceResultRow>()));

            var factResult = await vv.CheckAsync(VenueValidator.FactId.LocationIsPrecise, CancellationToken.None);

            Assert.Multiple(() =>
            {
                Assert.IsTrue(factResult.Enabled);
                Assert.AreEqual(expected, factResult.Success);
                Assert.IsNull(factResult.Exception);
            });
        }