$:.unshift "../lib" require 'th_mauve' require 'mauve/calendar_interface' require 'mauve/configuration_builder' require 'mauve/configuration' require 'webmock' # # Ugh webmock is annoying. WebMock.allow_net_connect! class TcMauveCalendarInterface < Mauve::UnitTest include WebMock::API include Mauve def setup WebMock.disable_net_connect! super end def teardown WebMock.reset! WebMock.allow_net_connect! super end def test_get_attendees attendees = %w(test1 test2) stub_request(:get, "http://localhost/calendar/api/attendees/support_shift/2011-08-01T00:00:00"). to_return(:status => 200, :body => YAML.dump(attendees)) config =< 200, :body => YAML.dump(attendees)) config =< 200, :body => YAML.dump(attendees)) config =< 301, :body => nil, :headers => {:location => next_url}) url = next_url end # # And finally the answer. # stub_request(:get, url). to_return(:status => 200, :body => "OK!", :headers => {}) # # Now do_get should return "OK!" when the maximum number of redirects is set to two. # result = nil assert_nothing_raised{ result = CalendarInterface.__send__(:do_get, "http://localhost/", 2) } assert_equal("OK!",result) # # do_get should return nil when the maximum number of redirects is set to two. # assert_nothing_raised{ result = CalendarInterface.__send__(:do_get, "http://localhost/", 1) } assert_nil(result) # # Pop the warning about the redirect off the end of the log. # logger_pop end def test_do_get_with_cache url = "http://localhost/" # # This stubs the request to give out the time # stub_request(:get, url). to_return( lambda{ {:status => 200, :body => YAML.dump(Time.now), :headers => {}} } ) # # This reponse should not be cached, the cache-until paramter is "now" # assert_equal(Time.now, CalendarInterface.__send__(:do_get_with_cache, url, Time.now)) # # Since the last request wasn't cached, the next one should give back # "now", and should be cached for the next 10 seconds. # Timecop.freeze(Time.now + 5) assert_equal(Time.now, CalendarInterface.__send__(:do_get_with_cache, url, Time.now + 10)) # # This should have been cached from the last query. # Timecop.freeze(Time.now + 5) assert_equal(Time.now - 5, CalendarInterface.__send__(:do_get_with_cache, url, Time.now + 10)) # # Finally, this should now have expired from the cache. # Timecop.freeze(Time.now + 5) assert_equal(Time.now, CalendarInterface.__send__(:do_get_with_cache, url, Time.now + 10)) Timecop.freeze(Time.now + 50) cache = CalendarInterface.__send__(:clean_cache) assert(cache.empty?) end end