From 61f525f531978a894373b41a70bd788d507bb514 Mon Sep 17 00:00:00 2001
From: David Lopez <letsbelopez@gmail.com>
Date: Tue, 4 Apr 2023 11:05:21 -0700
Subject: [PATCH] fix: add boolean number to datastorepredicateobject operand
 (#3636)

Co-authored-by: Scott Rees <6165315+reesscot@users.noreply.github.com>
Co-authored-by: Caleb Pollman <cpollman@amazon.com>
---
 .changeset/chilled-mugs-mix.md                |  5 +++++
 .../shared/__tests__/datastore.test.ts        | 21 +++++++++++++++++++
 .../react/src/primitives/types/datastore.ts   |  2 +-
 3 files changed, 27 insertions(+), 1 deletion(-)
 create mode 100644 .changeset/chilled-mugs-mix.md

diff --git a/.changeset/chilled-mugs-mix.md b/.changeset/chilled-mugs-mix.md
new file mode 100644
index 00000000000..260cba6925e
--- /dev/null
+++ b/.changeset/chilled-mugs-mix.md
@@ -0,0 +1,5 @@
+---
+"@aws-amplify/ui-react": patch
+---
+
+fix: add boolean number to datastorepredicateobject operand (internal)
diff --git a/packages/react/src/primitives/shared/__tests__/datastore.test.ts b/packages/react/src/primitives/shared/__tests__/datastore.test.ts
index e4c0ec77e66..d707fb358da 100644
--- a/packages/react/src/primitives/shared/__tests__/datastore.test.ts
+++ b/packages/react/src/primitives/shared/__tests__/datastore.test.ts
@@ -20,6 +20,12 @@ describe('createDataStorePredicate', () => {
     operand: '25',
   };
 
+  const booleanPredicateObject = {
+    field: 'isActive',
+    operator: 'eq',
+    operand: true,
+  };
+
   test('should generate a simple predicate', () => {
     const predicate = createDataStorePredicate<Post>(namePredicateObject);
 
@@ -35,6 +41,21 @@ describe('createDataStorePredicate', () => {
     expect(namePredicate).toHaveBeenCalledWith(namePredicateObject.operand);
   });
 
+  test('should generate a simple boolean predicate', () => {
+    const predicate = createDataStorePredicate<Post>(booleanPredicateObject);
+
+    const booleanPredicate = jest.fn();
+
+    const condition: any = {
+      [booleanPredicateObject.field]: {
+        [booleanPredicateObject.operator]: booleanPredicate,
+      },
+    };
+
+    predicate(condition);
+    expect(booleanPredicate).toHaveBeenCalledWith(booleanPredicateObject.operand);
+  });
+
   test('should generate a group predicate: or', () => {
     const predicateObject: DataStorePredicateObject = {
       or: [namePredicateObject, agePredicateObject],
diff --git a/packages/react/src/primitives/types/datastore.ts b/packages/react/src/primitives/types/datastore.ts
index 249272c52f0..25bd8976cb1 100644
--- a/packages/react/src/primitives/types/datastore.ts
+++ b/packages/react/src/primitives/types/datastore.ts
@@ -44,6 +44,6 @@ export type DataStorePredicateObject = {
   and?: DataStorePredicateObject[];
   or?: DataStorePredicateObject[];
   field?: string;
-  operand?: string;
+  operand?: string | boolean | number;
   operator?: string;
 };