Commit Graph

52 Commits

Author SHA1 Message Date
Maikel Linke
e5f5f3922c Add contact name to DFC Enterprise API 2023-11-16 09:10:43 +11:00
Maikel Linke
fc8f0ec4f2 Add email address to DFC Enterprise API 2023-11-15 17:00:53 +11:00
Maikel Linke
057c1363b1 Add phone number to DFC Enterprise API 2023-11-15 16:57:38 +11:00
Maikel Linke
80c0df9d1e Add website to DFC Enterprise API 2023-11-15 16:48:44 +11:00
Maikel Linke
1fb87bc497 Add SocialMedia to DFC Enterprise API 2023-11-15 16:19:23 +11:00
Maikel Linke
9311a29c9f Add logo URL to DFC Enterprise API 2023-11-15 15:16:39 +11:00
Maikel Linke
cde57fcfb4 Update specs for changed attribute URI 2023-11-09 16:16:24 +11:00
Maikel Linke
d0dd6e57ca Replace variable values with fixed values in Swagger doc 2023-11-08 17:12:42 +11:00
Gaetan Craig-Riou
7987967824 Check product image url is present on supplied product endpoint 2023-11-08 13:57:35 +11:00
Maikel Linke
02f251c900 Import DFC SuppliedProduct as new variant of existing product 2023-09-21 09:04:57 +10:00
Maikel Linke
c42f62e09f Add custom OFN product id to DFC SuppliedProduct
The Spree::Variant in OFN corresponds to a DFC SuppliedProduct. But
several Spree::Variant can be grouped under one Spree::Product which
wasn't exposed on the DFC API.

I'm adding a custom property here which can be used internally and
shouldn't break any other DFC tools.

A gotcha of this first test implementation:

The `ofn:` prefix has not been defined in the context. Software needs
to know that this is an Open Food Network attribute or ignore it.
We could define our own context and ontology and publish it on our
website but I don't see any benefit of that at this point.
2023-09-21 08:54:32 +10:00
Maikel Linke
2175c59a6b Load spec helper not knowing Rails
When the application is not preloaded then running Rspec doesn't know
Rails until the spec helper is loaded. So we can't use Rails to find the
path of the spec helper. This has been fixed before but the DFC Address
code was developed at the same time and missed.
2023-09-21 08:54:32 +10:00
Maikel Linke
7e222ad83e Include address when showing group
It may be nice to show more data like social media URLs but the DFC
Connector hasn't implemented that yet and it's not specified in the
current issue.
2023-09-13 16:36:36 +10:00
Maikel Linke
88a3615de7 List groups when showing DFC Enterprise 2023-09-13 16:36:36 +10:00
Maikel Linke
95d3987752 List enterprise groups on DFC API 2023-09-13 16:36:36 +10:00
Maikel Linke
a03fb01a8c List enterprises within groups on DFC API 2023-09-13 16:36:36 +10:00
Maikel Linke
2d91a61dcb Add DFC API EnterpriseGroups#show 2023-09-13 16:36:36 +10:00
Maikel Linke
df3fc83c8e Remove version from DFC API URL in specs
We were aiming to use stable URLs to identify resources but the URL
helpers were still using dfc-v1.7 because that was the last and
overriding path of the mounted DFC Provider engine.
2023-09-11 15:00:08 +10:00
Maikel Linke
7654d37fc3 DRY, shorten swagger file names 2023-09-11 14:57:39 +10:00
Maikel Linke
191c4a79db Load spec helpers before Rails is loaded
Using Spring was hiding an loading error. When you start Rspec, Rails
and its engines are not loaded yet. So our way to load the spec helper
via `Rails.root` did not work when you ran specs on their own without
loading Rails with Spring first.
2023-09-11 14:57:38 +10:00
Maikel Linke
57b4f615e8 Fix DFC context in spec example 2023-08-31 17:06:20 +10:00
Maikel Linke
96b79bce2d Encapsulate DFC-OFN data model bridge
Re-uses existing code and takes knowledge out of the controller.
2023-08-28 17:13:04 +10:00
Maikel Linke
faa112c3ae Spec DFC SuppliedProduct#update with new Prototype
I observed new data from the DFC Prototype. It now uses the DFC 1.8
ontology with the hasQuantity object.

It now also uses PUT requests for updates because PATCH is not as well
supported. Rails doesn't care though.

I couldn't observe a request for the CatalogItem yet because the
Prototype failed to send it.
2023-08-28 17:13:04 +10:00
Maikel Linke
1c3574ce79 Include address in DFC Enterprise endpoint 2023-08-24 16:51:36 +10:00
Maikel Linke
20b09b5352 Add DFC Address API endpoint 2023-08-24 16:20:13 +10:00
Gaetan Craig-Riou
a8d15154a2 Link address to enterprise
+ spec
2023-08-24 15:55:15 +10:00
Gaetan Craig-Riou
f5fb760128 Update Enterprise request spec
Check all the attributes supported by the DFC connector
2023-08-24 15:55:14 +10:00
Maikel Linke
9183c8acdd Deal with bad SuppliedProduct data 2023-07-03 14:17:18 +10:00
Maikel Linke
18bcc179ef Clarify request body required to create product
We have to work around an Rswag limitation here. But I think that this
version is clearer on the spec.
2023-07-03 14:17:18 +10:00
Maikel Linke
d5c41980d6 Document example for updating SuppliedProduct 2023-07-03 13:44:57 +10:00
Maikel Linke
7dc6cb151d Include DFC context in spec example
The DFC Prototype does include the context while the output of the DFC
Connector refers to the URL of the published context. While that's more
efficient, it's also brittle because the context is updated from time to
time. That happened three days ago and working with the newly published
context breaks our integration until we get an updated version of the
DFC Connector containing the new URLs for datatypes.
2023-07-03 13:27:24 +10:00
Maikel Linke
7a51995aeb Respond with SuppliedProduct data when creating 2023-07-03 12:37:23 +10:00
Maikel Linke
5a4efdbce3 Separate DFC API swagger config
This allows us to run the specs separately to generate the
documentation. It's more efficient this way and the separate swagger doc
file is easier to read.

The engine-specific swagger helper also allows us to simplify the spec
files.

Added an exception to our styleguide because it's intended and useful to
have a complete (lengthy) description of the API in one block.
2023-07-03 12:37:23 +10:00
Maikel Linke
78d6d129e8 Simplify with extracted helper method 2023-06-28 14:11:50 +10:00
Maikel Linke
d21e6f99bb Swaggerise CatalogItems spec 2023-06-28 14:11:50 +10:00
Maikel Linke
883e637545 Create deterministic test data for stable API docs
Otherwise the auto-generated Swagger file changes all the time without
code changes.
2023-06-28 13:50:54 +10:00
Maikel Linke
df29eaab98 Document DFC example body to create a product 2023-06-28 13:50:54 +10:00
Maikel Linke
db77d1591c Add test examples to DFC API documentation
In other API specs, you provide example values in the schema. So the
specs contain examples which can be used for the documentation. But
instead of defining example data separately, we can use the generated
data by the specs. This way we document real output and don't have to
double up on documentation.

Note that we don't have schema definitions for the DFC API yet. And it
wouldn't make sense to replicate the DFC Ontology manually in JSON
Schema for this purpose. The DFC Connector ensures already that we
comply with the ontology. But I hope that we can use a tool at some
point to generate JSON Schema from the DFC Ontology which would add more
detail to the Swagger docs, I think.
2023-06-28 13:50:54 +10:00
Maikel Linke
b14c9bdf4c Swaggerize SuppliedProduct spec 2023-06-28 13:50:54 +10:00
Maikel Linke
f0a5475563 Swaggerize Enterprise spec 2023-06-28 13:50:54 +10:00
Maikel Linke
494c5e78de Swaggerize Person spec
I chose the simplest spec first to demonstrate how it works. The UI at
/api-docs now shows this endpoint with two possible responses.

The docs are missing an example response which I hope to add later.
2023-06-28 13:50:54 +10:00
Maikel
e065910d2d Merge pull request #10939 from Matt-Yorkley/master-variants
Remove master variants
2023-06-23 13:42:58 +10:00
Maikel Linke
ec8c710e3a Import simple DFC SuppliedProduct
OFN products and variants need more data like a price but the DFC
stores that in a different object. We may get a larger graph containing
that information but we don't have any test data yet.
2023-06-19 16:19:48 +10:00
Matt-Yorkley
3ef7d2c9ff Remove master variant from product 2023-06-16 21:23:44 +01:00
Maikel Linke
0dcd87dda9 Update stock and SKU from DFC
The input has been observed with the nginx access log including
$request_body when the DFC Protoype pushed an update.
2023-05-28 10:39:08 +02:00
Maikel Linke
375b3a3cb0 Update variant's quantity from DFC 2023-05-28 10:39:08 +02:00
Maikel Linke
48a52582e6 Update variant description with DFC description
We used the name before because the DFC Prototype only displays the
description.
2023-05-28 10:39:08 +02:00
Maikel Linke
50ef06c973 Name DFC test data to clarify content
The DFC has several products like PhysicalProduct and SuppliedProduct.
Here we have a supplied product.
2023-05-28 10:39:08 +02:00
Maikel Linke
dde4ea9334 Convert CatalogItems controller spec to request spec 2023-05-28 10:39:08 +02:00
Maikel Linke
207a15e55c Convert SuppliedProducts controller spec to request spec 2023-05-28 10:39:08 +02:00