Skip to content

Commit

Permalink
feat!: support for multi possible values for productId and merchantName
Browse files Browse the repository at this point in the history
  • Loading branch information
Pritesh Hirani committed Jan 12, 2024
1 parent 5d1342f commit 7a3200c
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 12 deletions.
6 changes: 3 additions & 3 deletions src/compareWithLabeled.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -223,7 +223,7 @@ describe('evaluateLineItemFields', () => {
{
name: 'success',
color: 'parsed',
productId: 'parsed',
productId: 'expected',
imageUrl: 'parsed',
quantity: null,
size: 'parsed',
Expand All @@ -236,7 +236,7 @@ describe('evaluateLineItemFields', () => {
{
name: ['successful', 'failure'],
color: 'expected',
productId: 'expected',
productId: ['expected'],
imageUrl: ['expected', 'not expected'],
quantity: 1,
size: 'expected',
Expand All @@ -250,7 +250,7 @@ describe('evaluateLineItemFields', () => {
expect(result).toMatchObject({
lineItemName: { match: MatchKey.PARTIAL },
lineItemColor: { match: MatchKey.NO },
lineItemProductId: { match: MatchKey.NO },
lineItemProductId: { match: MatchKey.FULL },
lineItemProductImageUrl: { match: MatchKey.NO },
lineItemQuantity: { match: MatchKey.FULL },
lineItemSize: { match: MatchKey.NO },
Expand Down
15 changes: 8 additions & 7 deletions src/compareWithLabeled.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import {
FieldResult,
LineItem,
LineItemFieldResults,
ComparisonInputWithMultipleValues,
ComparisonInputWithMultiPossibleValues,
} from './types'

type ComparisonResultWithoutAPS = Omit<ComparisonResult, 'APS'>
Expand Down Expand Up @@ -47,7 +47,7 @@ export const createMismatchComment = (
export const evaluateField = (
field: keyof ComparisonInput,
parsed: ComparisonInput,
labeled: ComparisonInputWithMultipleValues,
labeled: ComparisonInputWithMultiPossibleValues,
// eslint-disable-next-line @typescript-eslint/no-explicit-any
comparator: ComparisonFn<any>,
comparatorOptions?: ComparisonOptions
Expand Down Expand Up @@ -122,7 +122,7 @@ export const evaluateArray = <T = unknown>(

export const evaluateCostsAddUp = (
parsed: ComparisonInput,
labeled: ComparisonInputWithMultipleValues
labeled: ComparisonInputWithMultiPossibleValues
): FieldResult => {
const expectedTotal = labeled?.totalAmount
if (!expectedTotal) return { match: null, comments: ['missing labeled total amount'] }
Expand Down Expand Up @@ -164,7 +164,7 @@ export const evaluateCostsAddUp = (

export const evaluateLineItemCount = (
parsed: ComparisonInput['lineItems'],
labeled: ComparisonInputWithMultipleValues['lineItems']
labeled: ComparisonInputWithMultiPossibleValues['lineItems']
): FieldResult => {
if (!parsed && !labeled) {
return {
Expand All @@ -188,7 +188,7 @@ export const evaluateLineItemCount = (

export const evaluateLineItemFields = (
parsed: ComparisonInput['lineItems'],
labeled: ComparisonInputWithMultipleValues['lineItems']
labeled: ComparisonInputWithMultiPossibleValues['lineItems']
): LineItemFieldResults => {
const result: LineItemFieldResults = {
lineItemName: { match: null },
Expand Down Expand Up @@ -227,7 +227,8 @@ export const evaluateLineItemFields = (
},
productId: {
fieldName: 'lineItemProductId',
comparator: fullOrNoMatchComparison,
comparator: compareStrings,
comparatorOptions: { allowPartialMatch: false },
},
imageUrl: {
fieldName: 'lineItemProductImageUrl',
Expand Down Expand Up @@ -319,7 +320,7 @@ export const compareWithLabeled = ({
labeled,
}: {
parsed: ComparisonInput
labeled: ComparisonInputWithMultipleValues
labeled: ComparisonInputWithMultiPossibleValues
}): ComparisonResult => {
const fieldResults: ComparisonResultWithoutAPS = {
status: evaluateField('status', parsed, labeled, compareOrderStatus),
Expand Down
7 changes: 6 additions & 1 deletion src/index.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
export { compareWithLabeled } from './compareWithLabeled'
export { MatchKey, APS_FIELDS } from './constants'
export type { ComparisonInput, ComparisonResult, LineItemWithMultiPossibleValues } from './types'
export type {
ComparisonInput,
ComparisonInputWithMultiPossibleValues,
ComparisonResult,
LineItemWithMultiPossibleValues,
} from './types'
2 changes: 1 addition & 1 deletion src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ export type ComparisonInput = {
trackingNumbers: string[] | null
}

export type ComparisonInputWithMultipleValues = Omit<
export type ComparisonInputWithMultiPossibleValues = Omit<
ComparisonInput,
'lineItems' | 'merchantName'
> & {
Expand Down

0 comments on commit 7a3200c

Please sign in to comment.