Merge pull request #608 from sharetribe/custom-category-in-listing-page

Custom category in listing page
This commit is contained in:
Kimmo Puputti 2017-12-20 15:53:28 +02:00 committed by GitHub
commit 169cf22a15
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 95 additions and 5 deletions

View file

@ -57,6 +57,7 @@ exports[`TransactionPanel - Order accepted matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -162,6 +163,7 @@ exports[`TransactionPanel - Order accepted matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -286,6 +288,7 @@ exports[`TransactionPanel - Order accepted matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -407,6 +410,7 @@ exports[`TransactionPanel - Order accepted matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -528,6 +532,7 @@ exports[`TransactionPanel - Order accepted matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -767,6 +772,7 @@ exports[`TransactionPanel - Order accepted matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -876,6 +882,7 @@ exports[`TransactionPanel - Order autodeclined matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -981,6 +988,7 @@ exports[`TransactionPanel - Order autodeclined matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -1105,6 +1113,7 @@ exports[`TransactionPanel - Order autodeclined matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -1226,6 +1235,7 @@ exports[`TransactionPanel - Order autodeclined matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -1347,6 +1357,7 @@ exports[`TransactionPanel - Order autodeclined matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -1586,6 +1597,7 @@ exports[`TransactionPanel - Order autodeclined matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -1695,6 +1707,7 @@ exports[`TransactionPanel - Order canceled matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -1800,6 +1813,7 @@ exports[`TransactionPanel - Order canceled matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -1924,6 +1938,7 @@ exports[`TransactionPanel - Order canceled matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -2045,6 +2060,7 @@ exports[`TransactionPanel - Order canceled matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -2166,6 +2182,7 @@ exports[`TransactionPanel - Order canceled matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -2405,6 +2422,7 @@ exports[`TransactionPanel - Order canceled matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -2514,6 +2532,7 @@ exports[`TransactionPanel - Order declined matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -2619,6 +2638,7 @@ exports[`TransactionPanel - Order declined matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -2743,6 +2763,7 @@ exports[`TransactionPanel - Order declined matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -2864,6 +2885,7 @@ exports[`TransactionPanel - Order declined matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -2985,6 +3007,7 @@ exports[`TransactionPanel - Order declined matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -3224,6 +3247,7 @@ exports[`TransactionPanel - Order declined matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -3333,6 +3357,7 @@ exports[`TransactionPanel - Order delivered matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -3438,6 +3463,7 @@ exports[`TransactionPanel - Order delivered matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -3562,6 +3588,7 @@ exports[`TransactionPanel - Order delivered matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -3683,6 +3710,7 @@ exports[`TransactionPanel - Order delivered matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -3804,6 +3832,7 @@ exports[`TransactionPanel - Order delivered matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -4043,6 +4072,7 @@ exports[`TransactionPanel - Order delivered matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -4152,6 +4182,7 @@ exports[`TransactionPanel - Order preauthorized matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -4257,6 +4288,7 @@ exports[`TransactionPanel - Order preauthorized matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -4381,6 +4413,7 @@ exports[`TransactionPanel - Order preauthorized matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -4502,6 +4535,7 @@ exports[`TransactionPanel - Order preauthorized matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -4623,6 +4657,7 @@ exports[`TransactionPanel - Order preauthorized matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -4862,6 +4897,7 @@ exports[`TransactionPanel - Order preauthorized matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -4965,6 +5001,7 @@ exports[`TransactionPanel - Sale accepted matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -5070,6 +5107,7 @@ exports[`TransactionPanel - Sale accepted matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -5181,6 +5219,7 @@ exports[`TransactionPanel - Sale accepted matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -5290,6 +5329,7 @@ exports[`TransactionPanel - Sale accepted matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -5399,6 +5439,7 @@ exports[`TransactionPanel - Sale accepted matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -5626,6 +5667,7 @@ exports[`TransactionPanel - Sale accepted matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -5716,6 +5758,7 @@ exports[`TransactionPanel - Sale autodeclined matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -5821,6 +5864,7 @@ exports[`TransactionPanel - Sale autodeclined matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -5932,6 +5976,7 @@ exports[`TransactionPanel - Sale autodeclined matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -6041,6 +6086,7 @@ exports[`TransactionPanel - Sale autodeclined matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -6150,6 +6196,7 @@ exports[`TransactionPanel - Sale autodeclined matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -6377,6 +6424,7 @@ exports[`TransactionPanel - Sale autodeclined matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -6467,6 +6515,7 @@ exports[`TransactionPanel - Sale canceled matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -6572,6 +6621,7 @@ exports[`TransactionPanel - Sale canceled matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -6683,6 +6733,7 @@ exports[`TransactionPanel - Sale canceled matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -6792,6 +6843,7 @@ exports[`TransactionPanel - Sale canceled matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -6901,6 +6953,7 @@ exports[`TransactionPanel - Sale canceled matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -7128,6 +7181,7 @@ exports[`TransactionPanel - Sale canceled matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -7218,6 +7272,7 @@ exports[`TransactionPanel - Sale declined matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -7323,6 +7378,7 @@ exports[`TransactionPanel - Sale declined matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -7434,6 +7490,7 @@ exports[`TransactionPanel - Sale declined matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -7543,6 +7600,7 @@ exports[`TransactionPanel - Sale declined matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -7652,6 +7710,7 @@ exports[`TransactionPanel - Sale declined matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -7879,6 +7938,7 @@ exports[`TransactionPanel - Sale declined matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -7969,6 +8029,7 @@ exports[`TransactionPanel - Sale delivered matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -8074,6 +8135,7 @@ exports[`TransactionPanel - Sale delivered matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -8185,6 +8247,7 @@ exports[`TransactionPanel - Sale delivered matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -8294,6 +8357,7 @@ exports[`TransactionPanel - Sale delivered matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -8403,6 +8467,7 @@ exports[`TransactionPanel - Sale delivered matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -8630,6 +8695,7 @@ exports[`TransactionPanel - Sale delivered matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -8720,6 +8786,7 @@ exports[`TransactionPanel - Sale preauthorized matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -8825,6 +8892,7 @@ exports[`TransactionPanel - Sale preauthorized matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -8936,6 +9004,7 @@ exports[`TransactionPanel - Sale preauthorized matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -9045,6 +9114,7 @@ exports[`TransactionPanel - Sale preauthorized matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -9154,6 +9224,7 @@ exports[`TransactionPanel - Sale preauthorized matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -9381,6 +9452,7 @@ exports[`TransactionPanel - Sale preauthorized matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {

View file

@ -332,7 +332,7 @@
}
.separator {
margin: 0 10px;
margin: 0 6px;
}
.contactLink {

View file

@ -231,6 +231,15 @@ export class ListingPageComponent extends Component {
title = '',
} = currentListing.attributes;
const { customAttributes } = currentListing.attributes;
const category =
config.customAttributes.category && customAttributes && customAttributes.category ? (
<span>
<FormattedMessage id={`ListingPage.category.${customAttributes.category}`} />
<span className={css.separator}></span>
</span>
) : null;
const topbar = <TopbarContainer />;
const loadingTitle = intl.formatMessage({
@ -503,6 +512,7 @@ export class ListingPageComponent extends Component {
<div className={css.heading}>
<h1 className={css.title}>{title}</h1>
<div className={css.author}>
{category}
<FormattedMessage id="ListingPage.hostedBy" values={{ name: hostLink }} />
{showContactUser ? (
<span className={css.contactWrapper}>

View file

@ -143,6 +143,7 @@ exports[`TransactionPage - Order matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {
@ -333,6 +334,7 @@ exports[`TransactionPage - Sale matches snapshot 1`] = `
"attributes": Object {
"address": "listing1 address",
"closed": false,
"customAttributes": Object {},
"deleted": false,
"description": "listing1 description",
"geolocation": LatLng {

View file

@ -105,12 +105,12 @@
"DateRangeInputField.screenReaderInputMessage": "Date input",
"DateRangeInputField.startDatePlaceholderText": "Add start date",
"EditListingDescriptionForm.categoryLabel": "Sauna type",
"EditListingDescriptionForm.categoryPlaceholder": "Choose the type of your sauna…",
"EditListingDescriptionForm.categoryRequired": "You need to select a category for your sauna.",
"EditListingDescriptionForm.categoryOption.road": "Road",
"EditListingDescriptionForm.categoryOption.mountain": "Mountain",
"EditListingDescriptionForm.categoryOption.other": "Other",
"EditListingDescriptionForm.categoryOption.road": "Road",
"EditListingDescriptionForm.categoryOption.track": "Track",
"EditListingDescriptionForm.categoryPlaceholder": "Choose the type of your sauna…",
"EditListingDescriptionForm.categoryRequired": "You need to select a category for your sauna.",
"EditListingDescriptionForm.description": "Describe your sauna",
"EditListingDescriptionForm.descriptionPlaceholder": "How many people can fit at once? Does the sauna come with towels?",
"EditListingDescriptionForm.descriptionRequired": "A description is required.",
@ -241,6 +241,10 @@
"ListingPage.bookingHelp": "Start by choosing your dates.",
"ListingPage.bookingHelpClosedListing": "Sorry, this listing has been closed.",
"ListingPage.bookingTitle": "Book {title}",
"ListingPage.category.mountain": "Mountain",
"ListingPage.category.other": "Other",
"ListingPage.category.road": "Road",
"ListingPage.category.track": "Track",
"ListingPage.closedListing": "This listing has been closed and can't be booked.",
"ListingPage.closedListingButtonText": "Sorry, this listing has been closed.",
"ListingPage.contactUser": "Contact",

View file

@ -137,7 +137,7 @@ export const ensureBooking = booking => {
* @param {Object} listing entity object, which is to be ensured agains null values
*/
export const ensureListing = listing => {
const empty = { id: null, type: 'listing', attributes: {}, images: [] };
const empty = { id: null, type: 'listing', attributes: { customAttributes: {} }, images: [] };
return { ...empty, ...listing };
};

View file

@ -131,6 +131,7 @@ const listingAttributes = shape({
closed: bool.isRequired,
deleted: value(false).isRequired,
price: money,
customAttributes: object,
});
const deletedListingAttributes = shape({

View file

@ -81,6 +81,7 @@ export const createListing = (id, attributes = {}, includes = {}) => ({
closed: false,
deleted: false,
price: new Money(5500, 'USD'),
customAttributes: {},
...attributes,
},
...includes,