public List <City> UpdateCityData(Province province) { string errmsg = ""; List <City> cityList = new List <City>(); if (province == null || province.Status != "0") { return(null); } try { HttpHelper httpHelper = new HttpHelper(); foreach (var item in province.Result) { string requestUrl = string.Format(Configs.ApiCityUrl, item.Id); string result = httpHelper.HttpResponsePostString(requestUrl); if (string.IsNullOrEmpty(result)) { Console.WriteLine($"请求{item.Name}(ID:{item.Id})下的城市失败!"); continue; } CityBusiness cityBusiness = new CityBusiness(); City city = cityBusiness.SaveData(result, out errmsg); if (city != null && string.IsNullOrEmpty(errmsg)) { Console.WriteLine($"保存{item.Name}城市数据成功,共计{city.Result.Count}条记录。"); cityList.Add(city); } else { if (city != null) { switch (city.Status) { case "203": Console.WriteLine($"{item.Name}下没有数据."); break; default: Console.WriteLine($"获取{item.Name}数据失败,错误代码:{city.Status},错误信息:{city.Msg}"); break; } } else { Console.WriteLine($"保存{item.Name}城市数据失败!错误:" + errmsg); } continue; } } return(cityList); } catch (Exception ex) { throw new Exception($"更新城市数据出错,错误:{ex.Message}"); } }
public void Delete_ThrowsArgumentException_WhenSuppliersAreRelatedToTheCity() { // Arrange var cities = new List <City> { new City { Name = "TestCity1", Id = 1 }, new City { Name = "TestCity2", Id = 2 } }.AsQueryable(); var suppliers = new List <Supplier> { new Supplier { Name = "TestSupplier1", CityId = 1 } }.AsQueryable(); var citymockDbSet = new Mock <DbSet <City> >(); citymockDbSet.As <IQueryable <City> >().Setup(m => m.Provider).Returns(cities.Provider); citymockDbSet.As <IQueryable <City> >().Setup(m => m.Expression).Returns(cities.Expression); citymockDbSet.As <IQueryable <City> >().Setup(m => m.ElementType).Returns(cities.ElementType); citymockDbSet.As <IQueryable <City> >().Setup(m => m.GetEnumerator()).Returns(cities.GetEnumerator()); var suppliermockDbSet = new Mock <DbSet <Supplier> >(); suppliermockDbSet.As <IQueryable <Supplier> >().Setup(m => m.Provider).Returns(suppliers.Provider); suppliermockDbSet.As <IQueryable <Supplier> >().Setup(m => m.Expression).Returns(suppliers.Expression); suppliermockDbSet.As <IQueryable <Supplier> >().Setup(m => m.ElementType).Returns(suppliers.ElementType); suppliermockDbSet.As <IQueryable <Supplier> >().Setup(m => m.GetEnumerator()).Returns(suppliers.GetEnumerator()); var mockContext = new Mock <EazyCartContext>(); mockContext.Setup(c => c.Cities).Returns(citymockDbSet.Object); mockContext.Setup(c => c.Suppliers).Returns(suppliermockDbSet.Object); var cityBusiness = new CityBusiness(mockContext.Object); // Act & Assert try { int idToDelete = 1; cityBusiness.Delete(idToDelete); Assert.Fail("No exception was thrown."); } catch (ArgumentException ex) { string expectedMessage = string.Format("One or more suppliers are related to this city."); Assert.AreEqual(expectedMessage, ex.Message, "Wrong exception was thrown."); } }
public void Add_ThrowsArgumentException_WhenCityWithSuchIdAlreadyExists() { // Arrange var countries = new List <Country> { new Country { Name = "TestCountry1", Id = 1 } }.AsQueryable(); var cities = new List <City> { new City { Name = "TestCity1", Id = 1, CountryId = 1 }, }.AsQueryable(); var mockDbCountrySet = new Mock <DbSet <Country> >(); mockDbCountrySet.As <IQueryable <Country> >().Setup(m => m.Provider).Returns(countries.Provider); mockDbCountrySet.As <IQueryable <Country> >().Setup(m => m.Expression).Returns(countries.Expression); mockDbCountrySet.As <IQueryable <Country> >().Setup(m => m.ElementType).Returns(countries.ElementType); mockDbCountrySet.As <IQueryable <Country> >().Setup(m => m.GetEnumerator()).Returns(countries.GetEnumerator()); var mockDbCitySet = new Mock <DbSet <City> >(); mockDbCitySet.As <IQueryable <City> >().Setup(m => m.Provider).Returns(cities.Provider); mockDbCitySet.As <IQueryable <City> >().Setup(m => m.Expression).Returns(cities.Expression); mockDbCitySet.As <IQueryable <City> >().Setup(m => m.ElementType).Returns(cities.ElementType); mockDbCitySet.As <IQueryable <City> >().Setup(m => m.GetEnumerator()).Returns(cities.GetEnumerator()); var mockContext = new Mock <EazyCartContext>(); mockContext.Setup(c => c.Cities).Returns(mockDbCitySet.Object); mockContext.Setup(c => c.SaveChanges()).Throws(new Exception()); mockContext.Setup(c => c.Countries).Returns(mockDbCountrySet.Object); var cityBusiness = new CityBusiness(mockContext.Object); int duplicateId = 1; // Act & Assert try { cityBusiness.Add("TestCity1", duplicateId, "TestCountry1"); cityBusiness.Add("TestCity2", duplicateId, "TestCountry1"); Assert.Fail("No exception was thrown"); } catch (ArgumentException ex) { string expectedMessage = string.Format($"City with ID {duplicateId} already exists."); Assert.AreEqual(expectedMessage, ex.Message, "Wrong exception was thrown."); } }
// The following methods are responsible for updating information when it is changed. /// <summary> /// Updates the user control every time it is loaded. /// </summary> public void UpdateUserControl() { var eazyCartContext = new EazyCartContext(); this.productBusiness = new ProductBusiness(eazyCartContext); this.categoryBusiness = new CategoryBusiness(eazyCartContext); this.supplierBusiness = new SupplierBusiness(eazyCartContext); this.unitBusiness = new UnitBusiness(eazyCartContext); this.countryBusiness = new CountryBusiness(eazyCartContext); this.cityBusiness = new CityBusiness(eazyCartContext); this.ClearAndUpdateProductTab(); this.ClearAndUpdateDeliveryTab(); }
// The following methods are responsible for updating information when it is changed. /// <summary> /// Updates the user control every time it is loaded. /// </summary> public void UpdateUserControl() { var eazyCartContext = new EazyCartContext(); this.cityBusiness = new CityBusiness(eazyCartContext); this.countryBusiness = new CountryBusiness(eazyCartContext); this.categoryBusiness = new CategoryBusiness(eazyCartContext); this.supplierBusiness = new SupplierBusiness(eazyCartContext); this.ClearAndUpdateCategoryTab(); this.ClearAndUpdateCountryTab(); this.ClearAndUpdateCityTab(); this.ClearAndUpdateSupplierTab(); }
public void Delete_SuccessfullyDeletesCity_WhenNoSuppliersAreRelated() { // Arrange var cities = new List <City> { new City { Name = "TestCity1", Id = 1 }, new City { Name = "TestCity2", Id = 2 } }.AsQueryable(); var suppliers = new List <Supplier> { new Supplier { Name = "TestSupplier1", CityId = 1 } }.AsQueryable(); var citymockDbSet = new Mock <DbSet <City> >(); citymockDbSet.As <IQueryable <City> >().Setup(m => m.Provider).Returns(cities.Provider); citymockDbSet.As <IQueryable <City> >().Setup(m => m.Expression).Returns(cities.Expression); citymockDbSet.As <IQueryable <City> >().Setup(m => m.ElementType).Returns(cities.ElementType); citymockDbSet.As <IQueryable <City> >().Setup(m => m.GetEnumerator()).Returns(cities.GetEnumerator()); var suppliermockDbSet = new Mock <DbSet <Supplier> >(); suppliermockDbSet.As <IQueryable <Supplier> >().Setup(m => m.Provider).Returns(suppliers.Provider); suppliermockDbSet.As <IQueryable <Supplier> >().Setup(m => m.Expression).Returns(suppliers.Expression); suppliermockDbSet.As <IQueryable <Supplier> >().Setup(m => m.ElementType).Returns(suppliers.ElementType); suppliermockDbSet.As <IQueryable <Supplier> >().Setup(m => m.GetEnumerator()).Returns(suppliers.GetEnumerator()); var mockContext = new Mock <EazyCartContext>(); mockContext.Setup(c => c.Cities).Returns(citymockDbSet.Object); mockContext.Setup(c => c.Suppliers).Returns(suppliermockDbSet.Object); var cityBusiness = new CityBusiness(mockContext.Object); // Act int idToDelete = 2; cityBusiness.Delete(idToDelete); // Assert citymockDbSet.Verify(m => m.Remove(It.IsAny <City>()), Times.Once()); mockContext.Verify(m => m.SaveChanges(), Times.Once()); }
public void Update_ThrowsArgumentException_WhenCountryDoesNotExist() { // Arrange var countries = new List <Country> { new Country { Name = "TestCountry1", Id = 1 } }.AsQueryable(); var cities = new List <City> { new City { Name = "TestCity1", Id = 1, CountryId = 1 } }.AsQueryable(); var mockDbCountrySet = new Mock <DbSet <Country> >(); mockDbCountrySet.As <IQueryable <Country> >().Setup(m => m.Provider).Returns(countries.Provider); mockDbCountrySet.As <IQueryable <Country> >().Setup(m => m.Expression).Returns(countries.Expression); mockDbCountrySet.As <IQueryable <Country> >().Setup(m => m.ElementType).Returns(countries.ElementType); mockDbCountrySet.As <IQueryable <Country> >().Setup(m => m.GetEnumerator()).Returns(countries.GetEnumerator()); var mockDbCitySet = new Mock <DbSet <City> >(); mockDbCitySet.As <IQueryable <City> >().Setup(m => m.Provider).Returns(cities.Provider); mockDbCitySet.As <IQueryable <City> >().Setup(m => m.Expression).Returns(cities.Expression); mockDbCitySet.As <IQueryable <City> >().Setup(m => m.ElementType).Returns(cities.ElementType); mockDbCitySet.As <IQueryable <City> >().Setup(m => m.GetEnumerator()).Returns(cities.GetEnumerator()); var mockContext = new Mock <EazyCartContext>(); mockContext.Setup(c => c.Cities).Returns(mockDbCitySet.Object); mockContext.Setup(c => c.Countries).Returns(mockDbCountrySet.Object); var cityBusiness = new CityBusiness(mockContext.Object); // Act & Assert try { cityBusiness.Update("UpdatedCity1", 1, "InvalidCountry"); Assert.Fail("No exception was thrown"); } catch (ArgumentException ex) { string expectedMessage = string.Format("No such country exists."); Assert.AreEqual(expectedMessage, ex.Message, "Wrong exception was thrown."); } }
public void GetCityNameBySupplier_SuccessfullyReturnsACity() { // Arrange var cities = new List <City> { new City { Name = "TestCity1", Id = 1 }, new City { Name = "TestCity2", Id = 2, } }.AsQueryable(); var suppliers = new List <Supplier> { new Supplier { Name = "TestSupplier1", Id = 1, CityId = 1 } }.AsQueryable(); var mockDbCitySet = new Mock <DbSet <City> >(); mockDbCitySet.As <IQueryable <City> >().Setup(m => m.Provider).Returns(cities.Provider); mockDbCitySet.As <IQueryable <City> >().Setup(m => m.Expression).Returns(cities.Expression); mockDbCitySet.As <IQueryable <City> >().Setup(m => m.ElementType).Returns(cities.ElementType); mockDbCitySet.As <IQueryable <City> >().Setup(m => m.GetEnumerator()).Returns(cities.GetEnumerator()); var mockDbSupplierSet = new Mock <DbSet <Supplier> >(); mockDbSupplierSet.As <IQueryable <Supplier> >().Setup(m => m.Provider).Returns(suppliers.Provider); mockDbSupplierSet.As <IQueryable <Supplier> >().Setup(m => m.Expression).Returns(suppliers.Expression); mockDbSupplierSet.As <IQueryable <Supplier> >().Setup(m => m.ElementType).Returns(suppliers.ElementType); mockDbSupplierSet.As <IQueryable <Supplier> >().Setup(m => m.GetEnumerator()).Returns(suppliers.GetEnumerator()); var mockContext = new Mock <EazyCartContext>(); mockContext.Setup(c => c.Cities).Returns(mockDbCitySet.Object); mockContext.Setup(c => c.Suppliers).Returns(mockDbSupplierSet.Object); var cityBusiness = new CityBusiness(mockContext.Object); // Act string expectedName = "TestCity1"; string supplierName = "TestSupplier1"; var cityName = cityBusiness.GetNameBySupplier(supplierName); // Assert Assert.AreEqual(expectedName, cityName, "City names do not match."); }
public void Update_SuccessfullyUpdatesCity_WhenCityIdIsNotDuplicate() { // Arrange var countries = new List <Country> { new Country { Name = "TestCountry1", Id = 1 } }.AsQueryable(); var cities = new List <City> { new City { Name = "TestCity1", Id = 1, CountryId = 1 }, new City { Name = "TestCity2", Id = 2, CountryId = 2 } }.AsQueryable(); var mockDbCountrySet = new Mock <DbSet <Country> >(); mockDbCountrySet.As <IQueryable <Country> >().Setup(m => m.Provider).Returns(countries.Provider); mockDbCountrySet.As <IQueryable <Country> >().Setup(m => m.Expression).Returns(countries.Expression); mockDbCountrySet.As <IQueryable <Country> >().Setup(m => m.ElementType).Returns(countries.ElementType); mockDbCountrySet.As <IQueryable <Country> >().Setup(m => m.GetEnumerator()).Returns(countries.GetEnumerator()); var citymockDbSet = new Mock <DbSet <City> >(); citymockDbSet.As <IQueryable <City> >().Setup(m => m.Provider).Returns(cities.Provider); citymockDbSet.As <IQueryable <City> >().Setup(m => m.Expression).Returns(cities.Expression); citymockDbSet.As <IQueryable <City> >().Setup(m => m.ElementType).Returns(cities.ElementType); citymockDbSet.As <IQueryable <City> >().Setup(m => m.GetEnumerator()).Returns(cities.GetEnumerator()); var mockContext = new Mock <EazyCartContext>(); mockContext.Setup(c => c.Cities).Returns(citymockDbSet.Object); mockContext.Setup(c => c.Countries).Returns(mockDbCountrySet.Object); var cityBusiness = new CityBusiness(mockContext.Object); // Act cityBusiness.Update("UpdatedCity", 1, "TestCountry1"); // Assert mockContext.Verify(m => m.SaveChanges(), Times.Once()); }
public void GetCity_ReturnsACorrectCity() { // Arrange var countries = new List <Country> { new Country { Name = "TestCountry1", Id = 1 }, new Country { Name = "TestCountry2", Id = 2 } }.AsQueryable(); var cities = new List <City> { new City { Name = "TestCity1", Id = 1, CountryId = 1 }, new City { Name = "TestCity2", Id = 2, CountryId = 2 } }.AsQueryable(); var suppliers = new List <Supplier> { new Supplier { Name = "TestSupplier1", Id = 1, CityId = 1 } }.AsQueryable(); var mockDbCountrySet = new Mock <DbSet <Country> >(); mockDbCountrySet.As <IQueryable <Country> >().Setup(m => m.Provider).Returns(countries.Provider); mockDbCountrySet.As <IQueryable <Country> >().Setup(m => m.Expression).Returns(countries.Expression); mockDbCountrySet.As <IQueryable <Country> >().Setup(m => m.ElementType).Returns(countries.ElementType); mockDbCountrySet.As <IQueryable <Country> >().Setup(m => m.GetEnumerator()).Returns(countries.GetEnumerator()); var mockDbCitySet = new Mock <DbSet <City> >(); mockDbCitySet.As <IQueryable <City> >().Setup(m => m.Provider).Returns(cities.Provider); mockDbCitySet.As <IQueryable <City> >().Setup(m => m.Expression).Returns(cities.Expression); mockDbCitySet.As <IQueryable <City> >().Setup(m => m.ElementType).Returns(cities.ElementType); mockDbCitySet.As <IQueryable <City> >().Setup(m => m.GetEnumerator()).Returns(cities.GetEnumerator()); var mockDbSupplierSet = new Mock <DbSet <Supplier> >(); mockDbSupplierSet.As <IQueryable <Supplier> >().Setup(m => m.Provider).Returns(suppliers.Provider); mockDbSupplierSet.As <IQueryable <Supplier> >().Setup(m => m.Expression).Returns(suppliers.Expression); mockDbSupplierSet.As <IQueryable <Supplier> >().Setup(m => m.ElementType).Returns(suppliers.ElementType); mockDbSupplierSet.As <IQueryable <Supplier> >().Setup(m => m.GetEnumerator()).Returns(suppliers.GetEnumerator()); var mockContext = new Mock <EazyCartContext>(); mockContext.Setup(c => c.Cities).Returns(mockDbCitySet.Object); mockContext.Setup(c => c.Countries).Returns(mockDbCountrySet.Object); mockContext.Setup(c => c.Suppliers).Returns(mockDbSupplierSet.Object); var cityBusiness = new CityBusiness(mockContext.Object); // Act int idToGet = 1; var city = cityBusiness.Get(idToGet); // Assert Assert.AreEqual(idToGet, city.Id, "Ids do not match."); }
public void GetAllCityNamesFromCountry_ReturnsACorrectListOfCitiesLocatedInTheCountry() { // Arrange var countries = new List <Country> { new Country { Name = "TestCountry1", Id = 1 }, new Country { Name = "TestCountry2", Id = 2 } }.AsQueryable(); var cities = new List <City> { new City { Name = "TestCity1", Id = 1, CountryId = 1 }, new City { Name = "TestCity2", Id = 2, } }.AsQueryable(); var suppliers = new List <Supplier> { new Supplier { Name = "TestSupplier1", Id = 1, CityId = 1 } }.AsQueryable(); var mockDbCountrySet = new Mock <DbSet <Country> >(); mockDbCountrySet.As <IQueryable <Country> >().Setup(m => m.Provider).Returns(countries.Provider); mockDbCountrySet.As <IQueryable <Country> >().Setup(m => m.Expression).Returns(countries.Expression); mockDbCountrySet.As <IQueryable <Country> >().Setup(m => m.ElementType).Returns(countries.ElementType); mockDbCountrySet.As <IQueryable <Country> >().Setup(m => m.GetEnumerator()).Returns(countries.GetEnumerator()); var mockDbCitySet = new Mock <DbSet <City> >(); mockDbCitySet.As <IQueryable <City> >().Setup(m => m.Provider).Returns(cities.Provider); mockDbCitySet.As <IQueryable <City> >().Setup(m => m.Expression).Returns(cities.Expression); mockDbCitySet.As <IQueryable <City> >().Setup(m => m.ElementType).Returns(cities.ElementType); mockDbCitySet.As <IQueryable <City> >().Setup(m => m.GetEnumerator()).Returns(cities.GetEnumerator()); var mockDbSupplierSet = new Mock <DbSet <Supplier> >(); mockDbSupplierSet.As <IQueryable <Supplier> >().Setup(m => m.Provider).Returns(suppliers.Provider); mockDbSupplierSet.As <IQueryable <Supplier> >().Setup(m => m.Expression).Returns(suppliers.Expression); mockDbSupplierSet.As <IQueryable <Supplier> >().Setup(m => m.ElementType).Returns(suppliers.ElementType); mockDbSupplierSet.As <IQueryable <Supplier> >().Setup(m => m.GetEnumerator()).Returns(suppliers.GetEnumerator()); var mockContext = new Mock <EazyCartContext>(); mockContext.Setup(c => c.Cities).Returns(mockDbCitySet.Object); mockContext.Setup(c => c.Countries).Returns(mockDbCountrySet.Object); mockContext.Setup(c => c.Suppliers).Returns(mockDbSupplierSet.Object); var cityBusiness = new CityBusiness(mockContext.Object); // Act string expectedName = "TestCity1"; var allCityNamesFromCountry = cityBusiness.GetAllCityNamesFromCountry("TestCountry1"); // Assert Assert.AreEqual(expectedName, allCityNamesFromCountry[0], "City names do not match."); }
private async Task <AdvertiseLogBusiness> GetNextAdv(long simCardNumber) { var newAdvertiseLogBusiness = new AdvertiseLogBusiness(); var monitor = new PerfMonitor(); try { newAdvertiseLogBusiness.SimCardNumber = simCardNumber; #region find visitor and text replacements //پیدا کردن ویزیتور ها و متن جایگزین محتوا برای سیم کارت مورد نظر var replacements = await VisitorBusiness.GetMasterSlaveAdvReplacementsAsync(newAdvertiseLogBusiness.SimCardNumber); if (replacements?.MasterGuid == null) { return(null); } newAdvertiseLogBusiness.MasterVisitorGuid = (Guid)replacements.MasterGuid; if (replacements.SlaveGuid != null) { newAdvertiseLogBusiness.SlaveVisitorGuid = (Guid)replacements.SlaveGuid; } #endregion #region find visitorAdvs //لیست آگهی های مرتبط با ویزیتور دریافت می شود AdvertiseList = await Advertise.GetAllAsync(AdvRootPath, newAdvertiseLogBusiness.MasterVisitorGuid); AdvertiseList = AdvertiseList.Where(q => q.PishNevis == false).ToList(); if (!(AdvertiseList?.Count > 0)) { return(null); } #endregion #region findNextAdvIndex var nextAdvIndex = new Random().Next(AdvertiseList.Count); #endregion #region GetPath string path = null; path = Path.Combine(Path.Combine(_cls?.NiazSetting?.PicPath, AdvertiseList[nextAdvIndex].AdvName) == AdvertiseList[nextAdvIndex].AdvName ? AdvertiseList[nextAdvIndex].RootPath : _cls?.NiazSetting?.PicPath, AdvertiseList[nextAdvIndex].AdvName); newAdvertiseLogBusiness.Adv = path; #endregion #region FindNextTitle //تایتل آگهی دریافت می شود if (!(AdvertiseList[nextAdvIndex].Titles?.Count > 0)) { return(null); } var nextTitleIndex = new Random(DateTime.Now.Millisecond).Next(AdvertiseList[nextAdvIndex].Titles.Count); newAdvertiseLogBusiness.Title = AdvertiseList[nextAdvIndex].Titles[nextTitleIndex]; if (string.IsNullOrEmpty(newAdvertiseLogBusiness.Content)) { return(null); } #endregion #region GetContent //کانتنت آگهی دریافت می شود newAdvertiseLogBusiness.Content = AdvertiseList[nextAdvIndex].Content .Replace("<master>", replacements.AdvReplacement1) .Replace("<slave>", replacements.AdvReplacement2) .Replace("<tell>", replacements.Phone) .Replace("(", "<") .Replace(")", ">"); if (string.IsNullOrEmpty(newAdvertiseLogBusiness.Content)) { return(null); } #endregion #region FindImages //عکسهای آگهی دریافت می شود newAdvertiseLogBusiness.ImagesPathList = GetNextImages(newAdvertiseLogBusiness.Adv, _cls?.NiazSetting?.PicCountInPerAdv ?? 3); #endregion //قیمت آگهی دریافت می شود newAdvertiseLogBusiness.Price = AdvertiseList[nextAdvIndex].Price; #region GetCity var city = await CityBusiness.GetNextRandomCityAsync(newAdvertiseLogBusiness.MasterVisitorGuid, AdvertiseType.NiazKade); newAdvertiseLogBusiness.City = city?.CityName ?? "مشهد"; newAdvertiseLogBusiness.State = city?.State.StateName ?? "خراسان رضوی"; #endregion #region GetCategory if (AdvertiseList[nextAdvIndex].NiazKadeCategories != null && AdvertiseList[nextAdvIndex].NiazKadeCategories.Count > 0) { newAdvertiseLogBusiness.SubCategory1 = AdvertiseList[nextAdvIndex]?.NiazKadeCategories[0] ?? ""; newAdvertiseLogBusiness.SubCategory2 = AdvertiseList[nextAdvIndex]?.NiazKadeCategories[1] ?? ""; } else { newAdvertiseLogBusiness.SubCategory1 = null; newAdvertiseLogBusiness.SubCategory2 = null; } #endregion return(newAdvertiseLogBusiness); } catch (Exception ex) { WebErrorLog.ErrorLogInstance.StartLog(ex); return(null); } finally { monitor.Dispose(); } }