From f839452df96e5c19b4cf98ffbc6889e20261afc9 Mon Sep 17 00:00:00 2001 From: Maikel Linke Date: Fri, 6 Sep 2024 12:46:58 +1000 Subject: [PATCH] Complete an open order --- app/services/fdc_backorderer.rb | 5 + .../completes_an_order.yml | 297 ++++++++++++++++++ spec/services/fdc_backorderer_spec.rb | 12 + 3 files changed, 314 insertions(+) create mode 100644 spec/fixtures/vcr_cassettes/FdcBackorderer/_find_or_build_order/completes_an_order.yml diff --git a/app/services/fdc_backorderer.rb b/app/services/fdc_backorderer.rb index e1dcf54396..550c4fb0bf 100644 --- a/app/services/fdc_backorderer.rb +++ b/app/services/fdc_backorderer.rb @@ -97,6 +97,11 @@ class FdcBackorderer end end + def complete_order(ofn_order, backorder) + backorder.orderStatus = "dfc-v:Complete" + send_order(ofn_order, backorder) + end + def build_sale_session(order) SaleSessionBuilder.build(order.order_cycle).tap do |session| session.semanticId = FDC_SALE_SESSION_URL diff --git a/spec/fixtures/vcr_cassettes/FdcBackorderer/_find_or_build_order/completes_an_order.yml b/spec/fixtures/vcr_cassettes/FdcBackorderer/_find_or_build_order/completes_an_order.yml new file mode 100644 index 0000000000..b88d3aaad7 --- /dev/null +++ b/spec/fixtures/vcr_cassettes/FdcBackorderer/_find_or_build_order/completes_an_order.yml @@ -0,0 +1,297 @@ +--- +http_interactions: +- request: + method: get + uri: https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Orders + body: + encoding: US-ASCII + string: '' + headers: + Content-Type: + - application/json + Authorization: + - "" + User-Agent: + - Faraday v2.9.0 + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 403 + message: Forbidden + headers: + Server: + - openresty + Date: + - Fri, 06 Sep 2024 02:45:01 GMT + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '78' + Connection: + - keep-alive + X-Powered-By: + - Express + Access-Control-Allow-Origin: + - "*" + Etag: + - W/"4e-vJeBLxgahmv23yP9gdPJW/woako" + Strict-Transport-Security: + - max-age=15811200 + body: + encoding: UTF-8 + string: '{"message":"User access denied - token missing","error":"User not authorized"}' + recorded_at: Fri, 06 Sep 2024 02:45:01 GMT +- request: + method: get + uri: https://login.lescommuns.org/auth/realms/data-food-consortium/.well-known/openid-configuration + body: + encoding: US-ASCII + string: '' + headers: + User-Agent: + - SWD 2.0.3 + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Date: + - Fri, 06 Sep 2024 02:45:02 GMT + Content-Type: + - application/json;charset=UTF-8 + Transfer-Encoding: + - chunked + Connection: + - keep-alive + Vary: + - Accept-Encoding + Set-Cookie: + - AUTH_SESSION_ID=1725590703.404.30947.436446|78230f584c0d7db97d376e98de5321dc; + Path=/; Secure; HttpOnly + Cache-Control: + - no-cache, must-revalidate, no-transform, no-store + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - SAMEORIGIN + X-Xss-Protection: + - 1; mode=block + body: + encoding: ASCII-8BIT + string: '{"issuer":"https://login.lescommuns.org/auth/realms/data-food-consortium","authorization_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/auth","token_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/token","introspection_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/token/introspect","userinfo_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/userinfo","end_session_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/logout","frontchannel_logout_session_supported":true,"frontchannel_logout_supported":true,"jwks_uri":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/certs","check_session_iframe":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/login-status-iframe.html","grant_types_supported":["authorization_code","implicit","refresh_token","password","client_credentials","urn:openid:params:grant-type:ciba","urn:ietf:params:oauth:grant-type:device_code"],"acr_values_supported":["0","1"],"response_types_supported":["code","none","id_token","token","id_token + token","code id_token","code token","code id_token token"],"subject_types_supported":["public","pairwise"],"id_token_signing_alg_values_supported":["PS384","ES384","RS384","HS256","HS512","ES256","RS256","HS384","ES512","PS256","PS512","RS512"],"id_token_encryption_alg_values_supported":["RSA-OAEP","RSA-OAEP-256","RSA1_5"],"id_token_encryption_enc_values_supported":["A256GCM","A192GCM","A128GCM","A128CBC-HS256","A192CBC-HS384","A256CBC-HS512"],"userinfo_signing_alg_values_supported":["PS384","ES384","RS384","HS256","HS512","ES256","RS256","HS384","ES512","PS256","PS512","RS512","none"],"userinfo_encryption_alg_values_supported":["RSA-OAEP","RSA-OAEP-256","RSA1_5"],"userinfo_encryption_enc_values_supported":["A256GCM","A192GCM","A128GCM","A128CBC-HS256","A192CBC-HS384","A256CBC-HS512"],"request_object_signing_alg_values_supported":["PS384","ES384","RS384","HS256","HS512","ES256","RS256","HS384","ES512","PS256","PS512","RS512","none"],"request_object_encryption_alg_values_supported":["RSA-OAEP","RSA-OAEP-256","RSA1_5"],"request_object_encryption_enc_values_supported":["A256GCM","A192GCM","A128GCM","A128CBC-HS256","A192CBC-HS384","A256CBC-HS512"],"response_modes_supported":["query","fragment","form_post","query.jwt","fragment.jwt","form_post.jwt","jwt"],"registration_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/clients-registrations/openid-connect","token_endpoint_auth_methods_supported":["private_key_jwt","client_secret_basic","client_secret_post","tls_client_auth","client_secret_jwt"],"token_endpoint_auth_signing_alg_values_supported":["PS384","ES384","RS384","HS256","HS512","ES256","RS256","HS384","ES512","PS256","PS512","RS512"],"introspection_endpoint_auth_methods_supported":["private_key_jwt","client_secret_basic","client_secret_post","tls_client_auth","client_secret_jwt"],"introspection_endpoint_auth_signing_alg_values_supported":["PS384","ES384","RS384","HS256","HS512","ES256","RS256","HS384","ES512","PS256","PS512","RS512"],"authorization_signing_alg_values_supported":["PS384","ES384","RS384","HS256","HS512","ES256","RS256","HS384","ES512","PS256","PS512","RS512"],"authorization_encryption_alg_values_supported":["RSA-OAEP","RSA-OAEP-256","RSA1_5"],"authorization_encryption_enc_values_supported":["A256GCM","A192GCM","A128GCM","A128CBC-HS256","A192CBC-HS384","A256CBC-HS512"],"claims_supported":["aud","sub","iss","auth_time","name","given_name","family_name","preferred_username","email","acr"],"claim_types_supported":["normal"],"claims_parameter_supported":true,"scopes_supported":["openid","microprofile-jwt","phone","roles","profile","email","address","web-origins","acr","offline_access"],"request_parameter_supported":true,"request_uri_parameter_supported":true,"require_request_uri_registration":true,"code_challenge_methods_supported":["plain","S256"],"tls_client_certificate_bound_access_tokens":true,"revocation_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/revoke","revocation_endpoint_auth_methods_supported":["private_key_jwt","client_secret_basic","client_secret_post","tls_client_auth","client_secret_jwt"],"revocation_endpoint_auth_signing_alg_values_supported":["PS384","ES384","RS384","HS256","HS512","ES256","RS256","HS384","ES512","PS256","PS512","RS512"],"backchannel_logout_supported":true,"backchannel_logout_session_supported":true,"device_authorization_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/auth/device","backchannel_token_delivery_modes_supported":["poll","ping"],"backchannel_authentication_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/ext/ciba/auth","backchannel_authentication_request_signing_alg_values_supported":["PS384","ES384","RS384","ES256","RS256","ES512","PS256","PS512","RS512"],"require_pushed_authorization_requests":false,"pushed_authorization_request_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/ext/par/request","mtls_endpoint_aliases":{"token_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/token","revocation_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/revoke","introspection_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/token/introspect","device_authorization_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/auth/device","registration_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/clients-registrations/openid-connect","userinfo_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/userinfo","pushed_authorization_request_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/ext/par/request","backchannel_authentication_endpoint":"https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/ext/ciba/auth"},"authorization_response_iss_parameter_supported":true}' + recorded_at: Fri, 06 Sep 2024 02:45:02 GMT +- request: + method: post + uri: https://login.lescommuns.org/auth/realms/data-food-consortium/protocol/openid-connect/token + body: + encoding: UTF-8 + string: grant_type=refresh_token&refresh_token= + headers: + User-Agent: + - Rack::OAuth2 (2.2.1) + Authorization: + - "" + Content-Type: + - application/x-www-form-urlencoded + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Date: + - Fri, 06 Sep 2024 02:45:03 GMT + Content-Type: + - application/json + Transfer-Encoding: + - chunked + Connection: + - keep-alive + Vary: + - Accept-Encoding + Set-Cookie: + - AUTH_SESSION_ID=1725590704.465.62477.104497|78230f584c0d7db97d376e98de5321dc; + Path=/; Secure; HttpOnly + Cache-Control: + - no-store + Pragma: + - no-cache + Referrer-Policy: + - no-referrer + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Content-Type-Options: + - nosniff + X-Frame-Options: + - SAMEORIGIN + X-Xss-Protection: + - 1; mode=block + body: + encoding: ASCII-8BIT + string: '{"access_token":"","expires_in":1800,"refresh_expires_in":31452490,"refresh_token":"","token_type":"Bearer","id_token":"","not-before-policy":0,"session_state":"78c74723-7be8-4383-a612-ad9e0bd2ddf9","scope":"openid + profile email"}' + recorded_at: Fri, 06 Sep 2024 02:45:03 GMT +- request: + method: get + uri: https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Orders + body: + encoding: US-ASCII + string: '' + headers: + Content-Type: + - application/json + Authorization: + - "" + User-Agent: + - Faraday v2.9.0 + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - openresty + Date: + - Fri, 06 Sep 2024 02:45:04 GMT + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '1262' + Connection: + - keep-alive + X-Powered-By: + - Express + Access-Control-Allow-Origin: + - "*" + Pageinfo: + - '{"hasPreviousPage":false,"hasNextPage":false,"startCursor":"eyJsYXN0X2lkIjoxMTQ5MTQ0NDk4NDgzLCJsYXN0X3ZhbHVlIjoxMTQ5MTQ0NDk4NDgzfQ==","endCursor":"eyJsYXN0X2lkIjoxMTc1MzA5MTg5NDI3LCJsYXN0X3ZhbHVlIjoxMTc1MzA5MTg5NDI3fQ=="}' + Etag: + - W/"4ee-ZGoz6P6DcxvE0rUKfSmmnj2VlEI" + Set-Cookie: + - SRVGROUP=common; path=/; HttpOnly + X-Resolver-Ip: + - 185.172.100.59 + Strict-Transport-Security: + - max-age=15811200 + body: + encoding: UTF-8 + string: '{"@context":"https://www.datafoodconsortium.org","@graph":[{"@id":"_:b70","@type":"dfc-b:Price","dfc-b:hasUnit":"dfc-m:PoundSterling","dfc-b:value":"2.09"},{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Offers/44519466467635","@type":"dfc-b:Offer","dfc-b:offeredItem":{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/SuppliedProducts/44519466467635"}},{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Orders/1175309189427","@type":"dfc-b:Order","dfc-b:hasOrderStatus":{"@id":"dfc-v:Held"},"dfc-b:hasPart":{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Orders/1175309189427/orderLines/124"}},{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Orders/1175309189427/orderLines/124","@type":"dfc-b:OrderLine","dfc-b:concerns":{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Offers/44519466467635"},"dfc-b:hasPrice":{"@id":"_:b70"},"dfc-b:quantity":"9"},{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/SuppliedProducts/44519466467635","@type":"dfc-b:SuppliedProduct"}]}' + recorded_at: Fri, 06 Sep 2024 02:45:05 GMT +- request: + method: put + uri: https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Orders/1175309189427 + body: + encoding: UTF-8 + string: '{"@context":"https://www.datafoodconsortium.org","@graph":[{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Orders/1175309189427","@type":"dfc-b:Order","dfc-b:orderNumber":"","dfc-b:date":"","dfc-b:hasPart":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Orders/1175309189427/orderLines/124","dfc-b:hasOrderStatus":"dfc-v:Complete"},{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Orders/1175309189427/orderLines/124","@type":"dfc-b:OrderLine","dfc-b:description":"","dfc-b:quantity":"9","dfc-b:hasPrice":{"@type":"dfc-b:Price","dfc-b:value":"2.09","dfc-b:VATrate":0.0,"dfc-b:hasUnit":"dfc-m:PoundSterling"},"dfc-b:concerns":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Offers/44519466467635"},{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Offers/44519466467635","@type":"dfc-b:Offer","dfc-b:stockLimitation":0.0,"dfc-b:offeredItem":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/SuppliedProducts/44519466467635"},{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/SuppliedProducts/44519466467635","@type":"dfc-b:SuppliedProduct","dfc-b:name":"","dfc-b:description":"","dfc-b:alcoholPercentage":0.0,"dfc-b:lifetime":"","dfc-b:usageOrStorageCondition":"","dfc-b:totalTheoreticalStock":0.0}]}' + headers: + Content-Type: + - application/json + Authorization: + - "" + User-Agent: + - Faraday v2.9.0 + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - openresty + Date: + - Fri, 06 Sep 2024 02:45:15 GMT + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '1322' + Connection: + - keep-alive + X-Powered-By: + - Express + Access-Control-Allow-Origin: + - "*" + Etag: + - W/"52a-1ifg0ICyyNDSvY+Pztw5Z/uo0hc" + Set-Cookie: + - SRVGROUP=common; path=/; HttpOnly + X-Resolver-Ip: + - 185.172.100.59 + Strict-Transport-Security: + - max-age=15811200 + body: + encoding: UTF-8 + string: '{"@context":"https://www.datafoodconsortium.org","@graph":[{"@id":"_:b71","@type":"dfc-b:Price","dfc-b:hasUnit":"dfc-m:PoundSterling","dfc-b:value":"2.09"},{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Offers/44519466467635","@type":"dfc-b:Offer","dfc-b:offeredItem":{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/SuppliedProducts/44519466467635"}},{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Orders/1175309189427","@type":"dfc-b:Order","dfc-b:hasFulfilmentStatus":{"@id":"dfc-v:Unfulfilled"},"dfc-b:hasOrderStatus":{"@id":"dfc-v:Complete"},"dfc-b:hasPart":{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Orders/1175309189427/orderLines/124"}},{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Orders/1175309189427/orderLines/124","@type":"dfc-b:OrderLine","dfc-b:concerns":{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Offers/44519466467635"},"dfc-b:hasPrice":{"@id":"_:b71"},"dfc-b:quantity":"9"},{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/SuppliedProducts/44519466467635","@type":"dfc-b:SuppliedProduct"}]}' + recorded_at: Fri, 06 Sep 2024 02:45:15 GMT +- request: + method: get + uri: https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Orders + body: + encoding: US-ASCII + string: '' + headers: + Content-Type: + - application/json + Authorization: + - "" + User-Agent: + - Faraday v2.9.0 + Accept-Encoding: + - gzip;q=1.0,deflate;q=0.6,identity;q=0.3 + Accept: + - "*/*" + response: + status: + code: 200 + message: OK + headers: + Server: + - openresty + Date: + - Fri, 06 Sep 2024 02:45:18 GMT + Content-Type: + - application/json; charset=utf-8 + Content-Length: + - '1322' + Connection: + - keep-alive + X-Powered-By: + - Express + Access-Control-Allow-Origin: + - "*" + Pageinfo: + - '{"hasPreviousPage":false,"hasNextPage":false,"startCursor":"eyJsYXN0X2lkIjoxMTQ5MTQ0NDk4NDgzLCJsYXN0X3ZhbHVlIjoxMTQ5MTQ0NDk4NDgzfQ==","endCursor":"eyJsYXN0X2lkIjoxMTc1MzA5MTg5NDI3LCJsYXN0X3ZhbHVlIjoxMTc1MzA5MTg5NDI3fQ=="}' + Etag: + - W/"52a-OE1aS33Iqx+cPwf8sLeHhkCixJw" + Set-Cookie: + - SRVGROUP=common; path=/; HttpOnly + X-Resolver-Ip: + - 185.172.100.60 + Strict-Transport-Security: + - max-age=15811200 + body: + encoding: UTF-8 + string: '{"@context":"https://www.datafoodconsortium.org","@graph":[{"@id":"_:b72","@type":"dfc-b:Price","dfc-b:hasUnit":"dfc-m:PoundSterling","dfc-b:value":"2.09"},{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Offers/44519466467635","@type":"dfc-b:Offer","dfc-b:offeredItem":{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/SuppliedProducts/44519466467635"}},{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Orders/1175309189427","@type":"dfc-b:Order","dfc-b:hasFulfilmentStatus":{"@id":"dfc-v:Unfulfilled"},"dfc-b:hasOrderStatus":{"@id":"dfc-v:Complete"},"dfc-b:hasPart":{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Orders/1175309189427/orderLines/124"}},{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Orders/1175309189427/orderLines/124","@type":"dfc-b:OrderLine","dfc-b:concerns":{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/Offers/44519466467635"},"dfc-b:hasPrice":{"@id":"_:b72"},"dfc-b:quantity":"9"},{"@id":"https://env-0105831.jcloud-ver-jpe.ik-server.com/api/dfc/Enterprises/test-hodmedod/SuppliedProducts/44519466467635","@type":"dfc-b:SuppliedProduct"}]}' + recorded_at: Fri, 06 Sep 2024 02:45:18 GMT +recorded_with: VCR 6.2.0 diff --git a/spec/services/fdc_backorderer_spec.rb b/spec/services/fdc_backorderer_spec.rb index 79cfaf2ca3..71c4069f99 100644 --- a/spec/services/fdc_backorderer_spec.rb +++ b/spec/services/fdc_backorderer_spec.rb @@ -34,6 +34,18 @@ RSpec.describe FdcBackorderer do expect(backorder.semanticId).to match %r{^https.*/[0-9]+$} expect(backorder.lines.count).to eq 1 end + + it "completes an order", vcr: true do + backorder = subject.find_or_build_order(order) + + expect(backorder.semanticId).to match %r{^https.*/[0-9]+$} + expect(backorder.lines.count).to eq 1 + + subject.complete_order(order, backorder) + + remaining_open_order = subject.find_or_build_order(order) + expect(remaining_open_order.semanticId).not_to eq backorder.semanticId + end end describe "#find_or_build_order_line" do