hotfix: customer address updates + mongo ids (#153)

This commit is contained in:
Oliver Windall Juhl authored and GitHub committed 2021-01-26 14:59:50 +01:00
1 parent 5c98624c1b
commit 103749eb65
16 files changed
+63 -439

No files matched your search

@@ -39,7 +39,7 @@ describe("POST /admin/users", () => {
})
it("returns the user", () => {
expect(subject.body.user._id).toEqual(IdMap.getId("test-user"))
expect(subject.body.user.id).toEqual(IdMap.getId("test-user"))
})
})
@@ -36,7 +36,7 @@ describe("GET /admin/users/:id", () => {
})
it("returns the user", () => {
expect(subject.body.user._id).toEqual(IdMap.getId("test-user"))
expect(subject.body.user.id).toEqual(IdMap.getId("test-user"))
})
})
})
@@ -42,7 +42,7 @@ describe("POST /admin/users/reset-password", () => {
})
it("returns updated user", () => {
expect(subject.body.user._id).toEqual(IdMap.getId("vandijk"))
expect(subject.body.user.id).toEqual(IdMap.getId("vandijk"))
})
it("returns 200", () => {
expect(subject.status).toEqual(200)
@@ -17,7 +17,7 @@ export default async (req, res) => {
const user = await userService.retrieveByEmail(value.email)
// Should call a email service provider that sends the token to the user
await userService.generateResetPasswordToken(user._id)
await userService.generateResetPasswordToken(user.id)
res.sendStatus(204)
} catch (error) {
@@ -20,12 +20,12 @@ export default async (req, res) => {
let user = await userService.retrieveByEmail(value.email)
const decodedToken = await jwt.verify(value.token, user.password_hash)
if (!decodedToken || decodedToken.user_id !== user._id) {
if (!decodedToken || decodedToken.user_id !== user.id) {
res.status(401).send("Invalid or expired password reset token")
return
}
const data = await userService.setPassword(user._id, value.password)
const data = await userService.setPassword(user.id, value.password)
res.status(200).json({ user: data })
} catch (error) {
@@ -28,17 +28,16 @@ export default async (req, res) => {
// Add JWT to cookie
req.session.jwt = jwt.sign(
{ customer_id: result.customer._id },
{ customer_id: result.customer.id },
config.jwtSecret,
{
expiresIn: "30d",
}
)
const customer = await customerService.retrieve(result.customer.id, [
"orders",
"orders.items",
])
const customer = await customerService.retrieve(result.customer.id, {
relations: ["orders", "orders.items"],
})
res.json({ customer })
}
@@ -2,11 +2,9 @@ export default async (req, res) => {
try {
if (req.user && req.user.customer_id) {
const customerService = req.scope.resolve("customerService")
const customer = await customerService.retrieve(req.user.customer_id, [
"shipping_addresses",
"orders",
"orders.items",
])
const customer = await customerService.retrieve(req.user.customer_id, {
relations: ["shipping_addresses", "orders", "orders.items"],
})
res.json({ customer })
} else {
res.sendStatus(401)
@@ -34,7 +34,7 @@ describe("POST /store/customers", () => {
expect(CustomerServiceMock.retrieve).toHaveBeenCalledTimes(1)
expect(CustomerServiceMock.retrieve).toHaveBeenCalledWith(
IdMap.getId("lebron"),
["orders", "shipping_addresses"]
{ relations: ["orders", "shipping_addresses"] }
)
})
@@ -42,7 +42,7 @@ describe("POST /store/customers/:id", () => {
expect(CustomerServiceMock.retrieve).toHaveBeenCalledTimes(1)
expect(CustomerServiceMock.retrieve).toHaveBeenCalledWith(
IdMap.getId("lebron"),
["orders", "shipping_addresses"]
{ relations: ["orders", "shipping_addresses"] }
)
})
@@ -22,18 +22,13 @@ export default async (req, res) => {
let customer = await customerService.create(value)
// Add JWT to cookie
req.session.jwt = jwt.sign(
{ customer_id: customer._id },
config.jwtSecret,
{
expiresIn: "30d",
}
)
req.session.jwt = jwt.sign({ customer_id: customer.id }, config.jwtSecret, {
expiresIn: "30d",
})
customer = await customerService.retrieve(customer.id, [
"orders",
"shipping_addresses",
])
customer = await customerService.retrieve(customer.id, {
relations: ["orders", "shipping_addresses"],
})
res.status(200).json({ customer })
} catch (err) {
@@ -19,10 +19,9 @@ export default async (req, res) => {
const customerService = req.scope.resolve("customerService")
let customer = await customerService.update(id, value)
customer = await customerService.retrieve(customer.id, [
"orders",
"shipping_addresses",
])
customer = await customerService.retrieve(customer.id, {
relations: ["orders", "shipping_addresses"],
})
res.status(200).json({ customer })
} catch (err) {
@@ -4,22 +4,22 @@ import _ from "lodash"
export const users = {
testUser: {
_id: IdMap.getId("test-user"),
id: IdMap.getId("test-user"),
email: "oliver@test.dk",
password_hash: "hashed123456789",
},
vanDijk: {
_id: IdMap.getId("vandijk"),
id: IdMap.getId("vandijk"),
email: "vandijk@test.dk",
password_hash: "hashed123456789",
},
jwtUser: {
_id: "test-user-id",
id: "test-user-id",
email: "oliver@test.dk",
password_hash: "123456789hash",
},
deleteUser: {
_id: IdMap.getId("delete-user"),
id: IdMap.getId("delete-user"),
email: "oliver@deletetest.dk",
password_hash: "hashed123456789",
},
@@ -86,7 +86,7 @@ export const UserServiceMock = {
retrieveByEmail: jest.fn().mockImplementation(email => {
if (email === "vandijk@test.dk") {
return Promise.resolve({
_id: IdMap.getId("vandijk"),
id: IdMap.getId("vandijk"),
email,
password_hash: "1234",
})
@@ -269,7 +269,7 @@ describe("CustomerService", () => {
last_name: "Stark",
address_1: "Hollywood Boulevard 1",
city: "Los Angeles",
country_code: "US",
country_code: "us",
postal_code: "90046",
phone: "+1 (222) 333 4444",
}
@@ -282,7 +282,7 @@ describe("CustomerService", () => {
last_name: "Stark",
address_1: "Hollywood Boulevard 1",
city: "Los Angeles",
country_code: "US",
country_code: "us",
postal_code: "90046",
phone: "+1 (222) 333 4444",
})
+5 -1
View File
@@ -326,6 +326,8 @@ class CustomerService extends BaseService {
return this.atomicPhase_(async manager => {
const addressRepo = manager.getCustomRepository(this.addressRepository_)
address.country_code = address.country_code.toLowerCase()
const toUpdate = await addressRepo.findOne({
where: { id: addressId, customer_id: customerId },
})
@@ -364,6 +366,8 @@ class CustomerService extends BaseService {
this.addressRepository_
)
address.country_code = address.country_code.toLowerCase()
const customer = await this.retrieve(customerId, {
relations: ["shipping_addresses"],
})
@@ -371,7 +375,7 @@ class CustomerService extends BaseService {
let shouldAdd = !customer.shipping_addresses.find(
a =>
a.country_code === address.country_code &&
a.country_code.toLowerCase() === address.country_code.toLowerCase() &&
a.address_1 === address.address_1 &&
a.address_2 === address.address_2 &&
a.city === address.city &&
+1 -1
View File
@@ -1047,7 +1047,7 @@ class OrderService extends BaseService {
async getFulfillmentItems_(order, items, transformer) {
const toReturn = await Promise.all(
items.map(async ({ item_id, quantity }) => {
const item = order.items.find(i => i._id.equals(item_id))
const item = order.items.find(i => i.id.equals(item_id))
return transformer(item, quantity)
})
)