public void SetUp()
        {
            _mocks       = new MockRepository();
            _mockTracker = _mocks.CreateMock <ITracker>();

            CacheTracker.ClearCache();
        }
        public PackageTracker(IWebPoster webPoster, IGeocodeDb geocodeDb)
        {
            //Todo: This is a bad place to load these:
            var uspsUserName = WebConfigurationManager.AppSettings["UspsUserName"];
            var uspsPassword = WebConfigurationManager.AppSettings["UspsPassword"];

            var fedexKey = WebConfigurationManager.AppSettings["FedexKey"];
            var fedexPassword = WebConfigurationManager.AppSettings["FedexPassword"];
            var fedexAccountNumber = WebConfigurationManager.AppSettings["FedexAccountNumber"];
            var fedexMeterNumber = WebConfigurationManager.AppSettings["FedexMeterNumber"];

            var coreTrackers = new List<ITracker>();
            coreTrackers.Add(new Tracking.Simulation.SimulationTracker());
            coreTrackers.Add(new UpsTracker());
            coreTrackers.Add(new UspsTracker(new PostUtility(), uspsUserName, uspsPassword, true));
            coreTrackers.Add(new FedexTracker(new TrackService(), fedexKey, fedexPassword, fedexAccountNumber, fedexMeterNumber, false));
            //coreTrackers.Add(new DhlTracker(new PostUtility(), "", "");

            var multiTracker = new MultiTracker(coreTrackers);
            var cacheTracker = new CacheTracker(multiTracker);
            var emptyTracker = new EmptyTrackingNumberTracker(cacheTracker);
            var loggingTracker = new LoggingTracker(emptyTracker);
            var sanitizerTracker = new TrackingNumberStandardizerTracker(loggingTracker);
            var geocodingTracker = new GeocodingTracker(sanitizerTracker, geocodeDb);
            var errorHandlerTracker = new ErrorHandlerTracker(geocodingTracker);

            _defaultTracker = errorHandlerTracker;
        }
        public void Simple_Cache_Check()
        {
            var td = new TrackingData();

            Expect.Call(_mockTracker.GetTrackingData("abc")).Return(td);

            _mocks.ReplayAll();

            _ct = new CacheTracker(_mockTracker, TimeSpan.FromSeconds(10.0));
            _ct.GetTrackingData("abc"); //This should use the passed in tracker
            _ct.GetTrackingData("abc"); //This should use the cache

            _mocks.VerifyAll();
        }
        public void No_Tracking_Data_Available()
        {
            var td = new TrackingData();

            Expect.Call(_mockTracker.GetTrackingData("abc")).Return(null).Repeat.Twice();

            _mocks.ReplayAll();

            _ct = new CacheTracker(_mockTracker);
            Assert.AreEqual(null, _ct.GetTrackingData("abc"));
            Assert.AreEqual(null, _ct.GetTrackingData("abc"));

            _mocks.VerifyAll();
        }
        public void No_Tracking_Data_Available()
        {
            var td = new TrackingData();

            Expect.Call(_mockTracker.GetTrackingData("abc")).Return(null).Repeat.Twice();

            _mocks.ReplayAll();

            _ct = new CacheTracker(_mockTracker);
            Assert.AreEqual(null, _ct.GetTrackingData("abc"));
            Assert.AreEqual(null, _ct.GetTrackingData("abc"));

            _mocks.VerifyAll();
        }
        public void Try_Default_Cache_Time()
        {
            var td = new TrackingData();

            Expect.Call(_mockTracker.GetTrackingData("abc")).Return(td);

            _mocks.ReplayAll();

            _ct = new CacheTracker(_mockTracker);
            _ct.GetTrackingData("abc");             //This should use the passed in tracker
            _ct.GetTrackingData("abc");             //This should use the cache

            _mocks.VerifyAll();
        }
        public void Simple_Cache_Check()
        {
            var td = new TrackingData();

            Expect.Call(_mockTracker.GetTrackingData("abc")).Return(td);

            _mocks.ReplayAll();

            _ct = new CacheTracker(_mockTracker, TimeSpan.FromSeconds(10.0));
            _ct.GetTrackingData("abc");             //This should use the passed in tracker
            _ct.GetTrackingData("abc");             //This should use the cache

            _mocks.VerifyAll();
        }
        public void Cache_Expired_Recheck_Tracker()
        {
            var td = new TrackingData();

            Expect.Call(_mockTracker.GetTrackingData("abc")).Return(td).Repeat.Twice();

            _mocks.ReplayAll();

            _ct = new CacheTracker(_mockTracker, TimeSpan.FromSeconds(1.0));
            _ct.GetTrackingData("abc"); //This should use the passed in tracker
            Thread.Sleep(2000);
            _ct.GetTrackingData("abc"); //This should use ask the pass in tracker again

            _mocks.VerifyAll();
        }
        public void Cache_Expired_Recheck_Tracker()
        {
            var td = new TrackingData();

            Expect.Call(_mockTracker.GetTrackingData("abc")).Return(td).Repeat.Twice();

            _mocks.ReplayAll();

            _ct = new CacheTracker(_mockTracker, TimeSpan.FromSeconds(1.0));
            _ct.GetTrackingData("abc");             //This should use the passed in tracker
            Thread.Sleep(2000);
            _ct.GetTrackingData("abc");             //This should use ask the pass in tracker again

            _mocks.VerifyAll();
        }
        public void Try_Default_Cache_Time()
        {
            var td = new TrackingData();

            Expect.Call(_mockTracker.GetTrackingData("abc")).Return(td);

            _mocks.ReplayAll();

            _ct = new CacheTracker(_mockTracker);
            _ct.GetTrackingData("abc"); //This should use the passed in tracker
            _ct.GetTrackingData("abc"); //This should use the cache

            _mocks.VerifyAll();
        }