public void Setup() { //Create Repo _fakeSmsRepo = new Mock <IGenericRepository <Int32, Sms> >(); //Create unitOfWork and add Repo _fakeUnitOfWork = new Mock <IUnitOfWork>(); _fakeUnitOfWork.Setup(x => x.Repositories).Returns(new Dictionary <string, Object>()); _fakeUnitOfWork.Object.Repositories.Add(typeof(Sms).Name, _fakeSmsRepo.Object); //Repositories mapped by entity names in unitOfWork(for detail check UnitOfWork.cs) _fakeUnitOfWork.Object.Repositories.Add(typeof(Country).Name, _fakeCountryRepo.Object); //Repositories mapped by entity names in unitOfWork(for detail check UnitOfWork.cs) //Will work for first line of SendSms List <Country> countries; using (var op = new CountryOperations()) { countries = op.GetAll(); _fakeCountryRepo.Setup(r => r.FindBy(x => x.Cc == toParameter.Substring(1, 2))).Returns(countries.Find(x => x.Cc == toParameter)); } //get real smses from db and add it to repo memory //unit tests should not go to database, all logic should be in memory. using (var op = new SmsOperations()) { _realGetSentSmsResult = op.GetSentSms(dateFrom, dateTo, skip, take); _fakeSmsRepo.Setup(r => r.FilterBy(x => x.DateTime >= dateFrom && x.DateTime <= dateTo).ToList()) .Returns(op.GetAll().FindAll(x => x.DateTime >= dateFrom && x.DateTime <= dateTo).ToList()); } //put mocked unitOfWork to the operation _smsOperations = new SmsOperations(_fakeUnitOfWork.Object); }
public object Get(SentSms request) { if (request.DateTimeTo.Ticks == 0) { request.DateTimeTo = DateTime.MaxValue; } var expression = Db.From <Sms>() // .Where(s => (s.DateTime.Ticks >= request.DateTimeFrom.Ticks && s.DateTime.Ticks <= request.DateTimeTo.Ticks)) .Skip(request.Skip) .Take(request.Take) //.Select(x=>new {x, Total = Sql.Count("*") }) ; var expressionResult = Db.Select(expression); var countExpression = Db.From <Sms>().Select("COUNT(*)"); var totalCount = Db.Select <int>(countExpression).First(); return(new SentSmsResponse { TotalCoint = totalCount, Items = expressionResult }); }
public IHttpActionResult GetSentSms(int id) { SentSms result = BusinessLayer.GetRow <SentSms>(id); if (result == null) { return(NotFound()); } return(Ok(result)); }
public SentSms GetSentSms(DateTime dateTimeFrom, DateTime dateTimeTo, int skip, int take) { SentSms result = new SentSms(); var smsList = _smsRepo.FilterBy(x => x.DateTime >= dateTimeFrom && x.DateTime <= dateTimeTo).ToList(); result.TotalCount = smsList.Count; result.Items = new List <Sms>(); result.Items.AddRange(smsList.Skip(skip).Take(take)); return(result); }
public void StoreSentSms(SentSms sentSms) { try { _smsSentHistory.Add(sentSms); while (_smsSentHistory.Count > 100) { _smsSentHistory.RemoveAt(0); } } catch (Exception) { // ignored } }