public async Task UpdateWithGranularLocationData() { OAuth2Token oAuth2Token = new OAuth2TokenBuilder().Build(); var link = $"{AdvertisementLink}/{AdvertisementId}"; var viewRenderedAdvertisementLink = $"{AdvertisementLink}/{AdvertisementId}/view"; var allFieldsWithGranularLocationInitializer = new AllFieldsInitializer(LocationType.UseGranularLocation); this.Fixture.AdPostingApiService .Given("There is a standout advertisement with maximum data") .UponReceiving("a PUT advertisement request to update granular location") .With(new ProviderServiceRequest { Method = HttpVerb.Put, Path = link, Headers = new Dictionary <string, string> { { "Authorization", "Bearer " + oAuth2Token.AccessToken }, { "Content-Type", RequestContentTypes.AdvertisementVersion1 }, { "Accept", $"{ResponseContentTypes.AdvertisementVersion1}, {ResponseContentTypes.AdvertisementErrorVersion1}" }, { "User-Agent", AdPostingApiFixture.UserAgentHeaderValue } }, Body = new AdvertisementContentBuilder(allFieldsWithGranularLocationInitializer) .Build() }) .WillRespondWith( new ProviderServiceResponse { Status = 200, Headers = new Dictionary <string, string> { { "Content-Type", ResponseContentTypes.AdvertisementVersion1 }, { "X-Request-Id", RequestId } }, Body = new AdvertisementResponseContentBuilder(allFieldsWithGranularLocationInitializer) .WithId(AdvertisementId) .WithState(AdvertisementState.Open.ToString()) .WithLink("self", link) .WithLink("view", viewRenderedAdvertisementLink) .WithGranularLocationState(null) .Build() }); Advertisement requestModel = new AdvertisementModelBuilder(allFieldsWithGranularLocationInitializer) .Build(); AdvertisementResource result; using (AdPostingApiClient client = this.Fixture.GetClient(oAuth2Token)) { result = await client.UpdateAdvertisementAsync(new Uri(this.Fixture.AdPostingApiServiceBaseUri, link), requestModel); } AdvertisementResource expectedResult = new AdvertisementResourceBuilder(allFieldsWithGranularLocationInitializer) .WithId(new Guid(AdvertisementId)) .WithLinks(AdvertisementId) .WithGranularLocationState(null) .Build(); result.ShouldBeEquivalentTo(expectedResult); }
private void AssertRetrievedAdvertisementMatchesExpected(AllFieldsInitializer builderInitializer, string advertisementId, AdvertisementResource result) { AdvertisementResource expectedResult = new AdvertisementResourceBuilder(builderInitializer) .WithId(new Guid(advertisementId)) .WithLinks(advertisementId) .WithProcessingStatus(ProcessingStatus.Completed) .Build(); result.ShouldBeEquivalentTo(expectedResult); }
public async Task GetExistingAdvertisementUsingHalSelfLink(string givenStatement) { const string advertisementId = "8e2fde50-bc5f-4a12-9cfb-812e50500184"; OAuth2Token oAuth2Token = new OAuth2TokenBuilder().Build(); var link = $"{AdvertisementLink}/{advertisementId}"; var viewRenderedAdvertisementLink = $"{AdvertisementLink}/{advertisementId}/view"; var builderInitializer = new AllFieldsInitializer(); this.SetupPactForGettingExistingAdvertisement(givenStatement, link, oAuth2Token, builderInitializer, advertisementId, viewRenderedAdvertisementLink); AdvertisementResource result; using (AdPostingApiClient client = this.Fixture.GetClient(oAuth2Token)) { result = await client.GetAdvertisementAsync(new Uri(this.Fixture.AdPostingApiServiceBaseUri, link)); } this.AssertRetrievedAdvertisementMatchesExpected(builderInitializer, advertisementId, result); }
public async Task GetExistingAdvertisementUsingHalSelfLink(LocationType locationType, string givenStatement) { const string advertisementId = "8e2fde50-bc5f-4a12-9cfb-812e50500184"; OAuth2Token oAuth2Token = new OAuth2TokenBuilder().Build(); var link = $"{AdvertisementLink}/{advertisementId}"; var viewRenderedAdvertisementLink = $"{AdvertisementLink}/{advertisementId}/view"; var builderInitializer = new AllFieldsInitializer(locationType); this.SetupPactForGettingExistingAdvertisement(givenStatement, link, oAuth2Token, builderInitializer, advertisementId, viewRenderedAdvertisementLink); AdvertisementResource result; using (AdPostingApiClient client = this.Fixture.GetClient(oAuth2Token)) { result = await client.GetAdvertisementAsync(new Uri(this.Fixture.AdPostingApiServiceBaseUri, link)); } this.AssertRetrievedAdvertisementMatchesExpected(builderInitializer, advertisementId, result); }
public async Task GetExistingAdvertisementUsingHalTemplateWithAdvertisementId(LocationType locationType, string givenStatement) { const string advertisementId = "8e2fde50-bc5f-4a12-9cfb-812e50500184"; OAuth2Token oAuth2Token = new OAuth2TokenBuilder().Build(); var link = $"{AdvertisementLink}/{advertisementId}"; var viewRenderedAdvertisementLink = $"{AdvertisementLink}/{advertisementId}/view"; var builderInitializer = new AllFieldsInitializer(locationType); this.Fixture.RegisterIndexPageInteractions(oAuth2Token); this.SetupPactForGettingExistingAdvertisement(givenStatement, link, oAuth2Token, builderInitializer, advertisementId, viewRenderedAdvertisementLink); AdvertisementResource result; using (AdPostingApiClient client = this.Fixture.GetClient(oAuth2Token)) { result = await client.GetAdvertisementAsync(new Guid(advertisementId)); } this.AssertRetrievedAdvertisementMatchesExpected(builderInitializer, advertisementId, result); }
private void SetupPactForGettingExistingAdvertisement(string givenStatement, string link, OAuth2Token oAuth2Token, AllFieldsInitializer builderInitializer, string advertisementId, string viewRenderedAdvertisementLink) { this.Fixture.AdPostingApiService .Given(givenStatement) .UponReceiving("a GET advertisement request") .With(new ProviderServiceRequest { Method = HttpVerb.Get, Path = link, Headers = new Dictionary <string, string> { { "Authorization", "Bearer " + oAuth2Token.AccessToken }, { "Accept", $"{ResponseContentTypes.AdvertisementVersion1}, {ResponseContentTypes.AdvertisementErrorVersion1}" }, { "User-Agent", AdPostingApiFixture.UserAgentHeaderValue } } }) .WillRespondWith(new ProviderServiceResponse { Status = 200, Headers = new Dictionary <string, string> { { "Content-Type", ResponseContentTypes.AdvertisementVersion1 }, { "Processing-Status", "Completed" }, { "X-Request-Id", RequestId } }, Body = new AdvertisementResponseContentBuilder(builderInitializer) .WithId(advertisementId) .WithState(AdvertisementState.Open.ToString()) .WithLink("self", link) .WithLink("view", viewRenderedAdvertisementLink) .Build() }); }
public async Task PostAdWithGranularLocation() { const string advertisementId = "75b2b1fc-9050-4f45-a632-ec6b7ac2bb4a"; OAuth2Token oAuth2Token = new OAuth2TokenBuilder().Build(); var link = $"{AdvertisementLink}/{advertisementId}"; var viewRenderedAdvertisementLink = $"{AdvertisementLink}/{advertisementId}/view"; var location = $"http://localhost{link}"; this.Fixture.RegisterIndexPageInteractions(oAuth2Token); var allFieldsWithGranularLocationInitializer = new AllFieldsInitializer(LocationType.UseGranularLocation); this.Fixture.AdPostingApiService .UponReceiving("a POST advertisement request to create a job ad with granular location") .With( new ProviderServiceRequest { Method = HttpVerb.Post, Path = AdvertisementLink, Headers = new Dictionary<string, string> { { "Authorization", "Bearer " + oAuth2Token.AccessToken }, { "Content-Type", RequestContentTypes.AdvertisementVersion1 }, { "Accept", $"{ResponseContentTypes.AdvertisementVersion1}, {ResponseContentTypes.AdvertisementErrorVersion1}" }, { "User-Agent", AdPostingApiFixture.UserAgentHeaderValue } }, Body = new AdvertisementContentBuilder(allFieldsWithGranularLocationInitializer) .WithRequestCreationId(CreationIdForAdWithMinimumRequiredData) .Build() } ) .WillRespondWith( new ProviderServiceResponse { Status = 202, Headers = new Dictionary<string, string> { { "Content-Type", ResponseContentTypes.AdvertisementVersion1 }, { "Location", location }, { "X-Request-Id", RequestId } }, Body = new AdvertisementResponseContentBuilder(allFieldsWithGranularLocationInitializer) .WithId(advertisementId) .WithState(AdvertisementState.Open.ToString()) .WithLink("self", link) .WithLink("view", viewRenderedAdvertisementLink) .WithGranularLocationState(null) .Build() }); var requestModel = new AdvertisementModelBuilder(allFieldsWithGranularLocationInitializer) .WithRequestCreationId(CreationIdForAdWithMinimumRequiredData) .Build(); AdvertisementResource result; using (AdPostingApiClient client = this.Fixture.GetClient(oAuth2Token)) { result = await client.CreateAdvertisementAsync(requestModel); } AdvertisementResource expectedResult = new AdvertisementResourceBuilder(allFieldsWithGranularLocationInitializer) .WithId(new Guid(advertisementId)) .WithLinks(advertisementId) .WithGranularLocationState(null) .Build(); result.ShouldBeEquivalentTo(expectedResult); }
public async Task PostAdWithGranularLocation() { const string advertisementId = "75b2b1fc-9050-4f45-a632-ec6b7ac2bb4a"; OAuth2Token oAuth2Token = new OAuth2TokenBuilder().Build(); var link = $"{AdvertisementLink}/{advertisementId}"; var viewRenderedAdvertisementLink = $"{AdvertisementLink}/{advertisementId}/view"; var location = $"http://localhost{link}"; this.Fixture.RegisterIndexPageInteractions(oAuth2Token); var allFieldsWithGranularLocationInitializer = new AllFieldsInitializer(LocationType.UseGranularLocation); this.Fixture.AdPostingApiService .UponReceiving("a POST advertisement request to create a job ad with granular location") .With( new ProviderServiceRequest { Method = HttpVerb.Post, Path = AdvertisementLink, Headers = new Dictionary <string, string> { { "Authorization", "Bearer " + oAuth2Token.AccessToken }, { "Content-Type", RequestContentTypes.AdvertisementVersion1 }, { "Accept", $"{ResponseContentTypes.AdvertisementVersion1}, {ResponseContentTypes.AdvertisementErrorVersion1}" }, { "User-Agent", AdPostingApiFixture.UserAgentHeaderValue } }, Body = new AdvertisementContentBuilder(allFieldsWithGranularLocationInitializer) .WithRequestCreationId(CreationIdForAdWithMinimumRequiredData) .Build() } ) .WillRespondWith( new ProviderServiceResponse { Status = 200, Headers = new Dictionary <string, string> { { "Content-Type", ResponseContentTypes.AdvertisementVersion1 }, { "Location", location }, { "X-Request-Id", RequestId } }, Body = new AdvertisementResponseContentBuilder(allFieldsWithGranularLocationInitializer) .WithId(advertisementId) .WithState(AdvertisementState.Open.ToString()) .WithLink("self", link) .WithLink("view", viewRenderedAdvertisementLink) .WithGranularLocationState(null) .Build() }); var requestModel = new AdvertisementModelBuilder(allFieldsWithGranularLocationInitializer) .WithRequestCreationId(CreationIdForAdWithMinimumRequiredData) .Build(); AdvertisementResource result; using (AdPostingApiClient client = this.Fixture.GetClient(oAuth2Token)) { result = await client.CreateAdvertisementAsync(requestModel); } AdvertisementResource expectedResult = new AdvertisementResourceBuilder(allFieldsWithGranularLocationInitializer) .WithId(new Guid(advertisementId)) .WithLinks(advertisementId) .WithGranularLocationState(null) .Build(); result.ShouldBeEquivalentTo(expectedResult); }
private void SetupPactForGettingExistingAdvertisement(string givenStatement, string link, OAuth2Token oAuth2Token, AllFieldsInitializer builderInitializer, string advertisementId, string viewRenderedAdvertisementLink) { this.Fixture.AdPostingApiService .Given(givenStatement) .UponReceiving("a GET advertisement request") .With(new ProviderServiceRequest { Method = HttpVerb.Get, Path = link, Headers = new Dictionary<string, string> { { "Authorization", "Bearer " + oAuth2Token.AccessToken }, { "Accept", $"{ResponseContentTypes.AdvertisementVersion1}, {ResponseContentTypes.AdvertisementErrorVersion1}" }, { "User-Agent", AdPostingApiFixture.UserAgentHeaderValue } } }) .WillRespondWith(new ProviderServiceResponse { Status = 200, Headers = new Dictionary<string, string> { {"Content-Type", ResponseContentTypes.AdvertisementVersion1}, {"Processing-Status", "Pending"}, {"X-Request-Id", RequestId} }, Body = new AdvertisementResponseContentBuilder(builderInitializer) .WithId(advertisementId) .WithState(AdvertisementState.Open.ToString()) .WithLink("self", link) .WithLink("view", viewRenderedAdvertisementLink) .WithAgentId(null) .WithAdditionalProperties(AdditionalPropertyType.ResidentsOnly.ToString(), AdditionalPropertyType.Graduate.ToString()) .Build() }); }
private void AssertRetrievedAdvertisementMatchesExpected(AllFieldsInitializer builderInitializer, string advertisementId, AdvertisementResource result) { AdvertisementResource expectedResult = new AdvertisementResourceBuilder(builderInitializer) .WithId(new Guid(advertisementId)) .WithLinks(advertisementId) .WithProcessingStatus(ProcessingStatus.Pending) .WithAgentId(null) .Build(); result.ShouldBeEquivalentTo(expectedResult); }