public BaseJsonTests()
		{
			this._settings = new ConnectionSettings(UnitTestDefaults.Uri, UnitTestDefaults.DefaultIndex)
				.DisablePing()
				.ExposeRawResponse();
			var connection = new InMemoryConnection(this._settings);
			this._connection = connection;
			this._client = new ElasticClient(this._settings, this._connection);
		}
        public void UsePrettyResponsesShouldSurviveUrlModififications()
        {
            var settings = new ConnectionSettings(UnitTestDefaults.Uri, UnitTestDefaults.DefaultIndex)
                .UsePrettyResponses();
            var connection = new InMemoryConnection(settings);
            var client = new ElasticClient(settings, connection);

            var r = client.ClusterHealth(h=>h.Level(LevelOptions.Cluster));
            var u = new Uri(r.ConnectionStatus.RequestUrl);
            u.AbsolutePath.Should().StartWith("/_cluster/health");
            u.Query.Should().Contain("level=cluster");

            u.Query.Should().Contain("pretty=true");
        }
		protected ElasticClient GetFixedReturnClient(
			MethodBase methodInfo, 
			string fileName = null,
			int statusCode = 200,
			Func<ConnectionSettings, ConnectionSettings> alterSettings = null
			)
		{
			Func<ConnectionSettings, ConnectionSettings> alter = alterSettings ?? (s => s);
			var settings = alter(new ConnectionSettings(UnitTestDefaults.Uri, UnitTestDefaults.DefaultIndex)
				.ExposeRawResponse());
			var file = this.GetFileFromMethod(methodInfo, fileName);
			var jsonResponse = File.ReadAllText(file);
			var connection = new InMemoryConnection(settings, jsonResponse, statusCode);
			var client = new ElasticClient(settings, connection);
			return client;
		}
		public void ConvenienceExtensionShouldGenerateExactBodyAsMethodOnClient()
		{
			var connection = new InMemoryConnection(this._settings) { RecordRequests = true };
			var client = new ElasticClient(this._settings, connection);

			var response = client.GetMany<ElasticsearchProject>(new[] { "123" });
            var response2 = client.MultiGet(s => s.GetMany<ElasticsearchProject>(new[] { "123" }));
			
			connection.Requests.Should().NotBeEmpty().And.HaveCount(2);

			var getManyRequest = connection.Requests[0];
			var multiGetRequest = connection.Requests[1];

			getManyRequest.Item3.Should().NotBeNull()
				.And.BeEquivalentTo(multiGetRequest.Item3);

			getManyRequest.Item3.Utf8String().Should().Contain("_index\":");
			getManyRequest.Item3.Utf8String().Should().Contain("_type\":");
				

		}
		private IElasticClient GetTestClient(NullValueHandling nullValueHandling)
		{
			var settings = new ConnectionSettings(UnitTestDefaults.Uri, UnitTestDefaults.DefaultIndex)
				.SetJsonSerializerSettingsModifier(m => m
					.NullValueHandling = nullValueHandling
				);
			var connection = new InMemoryConnection(settings);
			var client = new ElasticClient(settings, connection);

			return client;
		}