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));
        }
Exemple #4
0
        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);
        }
Exemple #5
0
 public void StoreSentSms(SentSms sentSms)
 {
     try
     {
         _smsSentHistory.Add(sentSms);
         while (_smsSentHistory.Count > 100)
         {
             _smsSentHistory.RemoveAt(0);
         }
     }
     catch (Exception)
     {
         // ignored
     }
 }