public async Task GetAllAdvertisementsByAdvertiserNextPage()
{
const string advertiserId = "456";
const string advertisementId1 = "f7302df2-704b-407c-a42a-62ff822b5461";
const string beforeJobId = "5";
const string queryString = "advertiserId=" + advertiserId + "&beforeId=" + beforeJobId;
const string selfLink = "/advertisement?" + queryString;
OAuth2Token oAuth2Token = new OAuth2TokenBuilder().Build();
this.Fixture.AdPostingApiService
.Given("A page size of 3 with more than 1 page of data")
.UponReceiving("a GET advertisements request for the second page of advertisements belonging to the advertiser")
.With(new ProviderServiceRequest
{
Method = HttpVerb.Get,
Path = "/advertisement",
Query = queryString,
Headers = new Dictionary<string, string>
{
{ "Authorization", "Bearer " + oAuth2Token.AccessToken },
{ "Accept", $"{ResponseContentTypes.AdvertisementListVersion1}, {ResponseContentTypes.AdvertisementErrorVersion1}" },
{ "User-Agent", AdPostingApiFixture.UserAgentHeaderValue }
}
})
.WillRespondWith(new ProviderServiceResponse
{
Status = 200,
Headers = new Dictionary<string, string>
{
{ "Content-Type", ResponseContentTypes.AdvertisementListVersion1 },
{ "X-Request-Id", RequestId }
},
Body = new
{
_embedded = new
{
advertisements = new[]
{
new AdvertisementSummaryResponseContentBuilder()
.WithId(advertisementId1)
.WithAdvertiserId(advertiserId)
.WithJobTitle("Exciting Developer role in a great CBD location. Great $$")
.WithJobReference("JOB1111")
.WithResponseLink("self", this.GenerateSelfLink(advertisementId1))
.WithResponseLink("view", this.GenerateViewLink(advertisementId1))
.Build()
}
},
_links = new
{
self = new { href = selfLink }
}
}
});
AdvertisementSummaryPageResource pageResource = new AdvertisementSummaryPageResource
{
Links = new Links(this.Fixture.AdPostingApiServiceBaseUri)
{
{"self", new Link {Href = "/advertisement"}},
{"next", new Link {Href = $"/advertisement?advertiserId={advertiserId}&beforeId={beforeJobId}"}}
}
};
var oAuthClient = Mock.Of<IOAuth2TokenClient>(c => c.GetOAuth2TokenAsync() == Task.FromResult(oAuth2Token));
AdvertisementSummaryPageResource nextPageResource;
using (var client = new Hal.Client(new HttpClient(new AdPostingApiMessageHandler(new OAuthMessageHandler(oAuthClient)))))
{
pageResource.Initialise(client);
nextPageResource = await pageResource.NextPageAsync();
}
AdvertisementSummaryPageResource expectedNextPageResource = new AdvertisementSummaryPageResource
{
AdvertisementSummaries = new List<AdvertisementSummaryResource>
{
new AdvertisementSummaryResource
{
Id = new Guid(advertisementId1),
AdvertiserId = advertiserId,
JobReference = "JOB1111",
JobTitle = "Exciting Developer role in a great CBD location. Great $$",
Links = new Links(this.Fixture.AdPostingApiServiceBaseUri)
{
{"self", new Link {Href = $"/advertisement/{advertisementId1}"}},
{"view", new Link {Href = $"/advertisement/{advertisementId1}/view"}}
}
}
},
Links = new Links(this.Fixture.AdPostingApiServiceBaseUri)
{
{"self", new Link {Href = selfLink}}
},
RequestId = RequestId
};
nextPageResource.ShouldBeEquivalentTo(expectedNextPageResource);
}