require File.expand_path(File.dirname(__FILE__) + '/test_helper')

  describe "Webmock" do
    include HttpRequestTestHelper

    before do
      @stub_http = stub_http_request(:any, "http://www.example.com")
      @stub_https = stub_http_request(:any, "https://www.example.com")
    end

    it "should update assertions count" do
      assert_equal 0, assertions
      http_request(:get, "http://www.example.com/")

      assert_requested(@stub_http)
      assert_equal 2, assertions

      assert_not_requested(:post, "http://www.example.com")
      assert_equal 4, assertions
    end

    it "should raise error on non stubbed request" do
      expect { http_request(:get, "http://www.example.net/") }.must_raise(WebMock::NetConnectNotAllowedError)
    end

    it "should verify that expected request occured" do
      http_request(:get, "http://www.example.com/")
      assert_requested(:get, "http://www.example.com", times: 1)
      assert_requested(:get, "http://www.example.com")
    end

    it "should verify that expected http stub occured" do
      http_request(:get, "http://www.example.com/")
      assert_requested(@stub_http, times: 1)
      assert_requested(@stub_http)
    end

    it "should verify that expected https stub occured" do
      http_request(:get, "https://www.example.com/")
      http_request(:get, "https://www.example.com/")
      assert_requested(@stub_https, times: 2)
    end

    it  "should verify that expect request didn't occur" do
     expected_message = "The request GET http://www.example.com/ was expected to execute 1 time but it executed 0 times"
     expected_message += "\n\nThe following requests were made:\n\nNo requests were made.\n============================================================"
     assert_fail(expected_message) do
       assert_requested(:get, "http://www.example.com")
     end
    end

    it  "should verify that expect stub didn't occur" do
     expected_message = "The request ANY http://www.example.com/ was expected to execute 1 time but it executed 0 times"
     expected_message += "\n\nThe following requests were made:\n\nNo requests were made.\n============================================================"
     assert_fail(expected_message) do
       assert_requested(@stub_http)
     end
    end
  end

