Merge pull request #97 from copenhagentruckwash/fix-auto-selection-of-customer-suggestions
Fix stale POS customer suggestion auto-selection
This commit is contained in:
@@ -52,6 +52,7 @@ const customer_suggestions = ref([
|
||||
const isSettingCustomer = ref(false);
|
||||
const isSettingCustomerToInteger = ref(0);
|
||||
const isSettingCustomerStartTime = ref(null);
|
||||
let customerSuggestionsRequestId = 0;
|
||||
|
||||
const isSettingCustomerTo = (customer_number) => {
|
||||
return isSettingCustomerToInteger.value === parseInt(customer_number);
|
||||
@@ -88,10 +89,17 @@ const getCustomerSuggestions = () => {
|
||||
if (!props.reg_1) {
|
||||
return;
|
||||
}
|
||||
const requestedReg1 = props.reg_1;
|
||||
const requestId = ++customerSuggestionsRequestId;
|
||||
|
||||
SessionUser.request("/department/vehicle/customer-suggestions", "GET", {
|
||||
reg_1: props.reg_1,
|
||||
reg_1: requestedReg1,
|
||||
})
|
||||
.then((response) => {
|
||||
if (requestId !== customerSuggestionsRequestId || requestedReg1 !== props.reg_1) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Assuming the response contains an array of customer suggestions
|
||||
console.log("Customer suggestions:", response.data.data);
|
||||
let suggestions = [];
|
||||
@@ -126,6 +134,7 @@ watch(
|
||||
if (newValue) {
|
||||
getCustomerSuggestions();
|
||||
} else {
|
||||
customerSuggestionsRequestId += 1;
|
||||
customer_suggestions.value = [];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -79,6 +79,68 @@ describe("VehicleCustomerSuggestionsPos", () => {
|
||||
]);
|
||||
});
|
||||
|
||||
it("ignores stale auto-apply responses for previous plates", async () => {
|
||||
const requests = [];
|
||||
requestMock.mockImplementation((url, method, params) => {
|
||||
let resolve;
|
||||
const promise = new Promise((promiseResolve) => {
|
||||
resolve = promiseResolve;
|
||||
});
|
||||
requests.push({ params, resolve });
|
||||
return promise;
|
||||
});
|
||||
|
||||
const wrapper = mountWithApp(VehicleCustomerSuggestionsPos, {
|
||||
props: {
|
||||
reg_1: "OLD123",
|
||||
selectionSource: "none",
|
||||
},
|
||||
});
|
||||
|
||||
await wrapper.setProps({ reg_1: "NEW456" });
|
||||
|
||||
expect(requests.map((request) => request.params.reg_1)).toEqual(["OLD123", "NEW456"]);
|
||||
|
||||
requests[1].resolve({
|
||||
data: {
|
||||
data: [
|
||||
{
|
||||
id: 42,
|
||||
customer_number: 67890,
|
||||
customer_name: "Current Customer",
|
||||
barred: false,
|
||||
},
|
||||
],
|
||||
},
|
||||
});
|
||||
await flushPromises();
|
||||
|
||||
requests[0].resolve({
|
||||
data: {
|
||||
data: [
|
||||
{
|
||||
id: 41,
|
||||
customer_number: 12345,
|
||||
customer_name: "Stale Customer",
|
||||
barred: false,
|
||||
},
|
||||
],
|
||||
},
|
||||
});
|
||||
await flushPromises();
|
||||
|
||||
expect(wrapper.emitted("customerSelected")).toEqual([
|
||||
[
|
||||
{
|
||||
customerNumber: 67890,
|
||||
source: "auto",
|
||||
},
|
||||
],
|
||||
]);
|
||||
expect(wrapper.text()).toContain("Current Customer");
|
||||
expect(wrapper.text()).not.toContain("Stale Customer");
|
||||
});
|
||||
|
||||
it("keeps the only suggestion manual once another selection source is active", async () => {
|
||||
requestMock.mockResolvedValue({
|
||||
data: {
|
||||
|
||||
Reference in New Issue
Block a user