From bd2823e9e88a740ed11a9221f1a24624d4733deb Mon Sep 17 00:00:00 2001
From: Antonin Cezard <acezard@gmail.com>
Date: Wed, 26 Jan 2022 16:57:46 +0100
Subject: [PATCH] feat: Add WebviewProvider in BarProvider

---
 react/BarContextProvider/index.jsx      |  5 ++++-
 react/BarContextProvider/index.spec.jsx | 25 +++++++++++++++++++++++++
 2 files changed, 29 insertions(+), 1 deletion(-)

diff --git a/react/BarContextProvider/index.jsx b/react/BarContextProvider/index.jsx
index 783d3db122..2466abfb2e 100644
--- a/react/BarContextProvider/index.jsx
+++ b/react/BarContextProvider/index.jsx
@@ -4,6 +4,7 @@ import { BreakpointsProvider } from '../hooks/useBreakpoints'
 
 import { CozyProvider } from 'cozy-client'
 import { Provider } from 'react-redux'
+import { WebviewIntentProvider } from 'cozy-intent'
 
 const BarContextProvider = props => {
   if (!props.children) return null
@@ -13,7 +14,9 @@ const BarContextProvider = props => {
         <I18nContext.Provider
           value={{ f: props.f, t: props.t, lang: props.lang }}
         >
-          <BreakpointsProvider>{props.children}</BreakpointsProvider>
+          <BreakpointsProvider>
+            <WebviewIntentProvider>{props.children}</WebviewIntentProvider>
+          </BreakpointsProvider>
         </I18nContext.Provider>
       </CozyProvider>
     </Provider>
diff --git a/react/BarContextProvider/index.spec.jsx b/react/BarContextProvider/index.spec.jsx
index 7e52d62705..96968508e1 100644
--- a/react/BarContextProvider/index.spec.jsx
+++ b/react/BarContextProvider/index.spec.jsx
@@ -7,10 +7,15 @@ import CozyClient, {
 } from 'cozy-client'
 import configureStore from 'redux-mock-store'
 import { Provider, useStore } from 'react-redux'
+import { isFlagshipApp } from 'cozy-device-helper'
 
 import BarContextProvider from '.'
 import I18n, { useI18n, translate } from '../I18n'
 
+jest.mock('cozy-device-helper', () => ({
+  isFlagshipApp: jest.fn()
+}))
+
 const locales = { helloworld: 'Hello World !' }
 const localesBar = { a: 'b' }
 
@@ -64,4 +69,24 @@ describe('BarContextProvider', () => {
     )
     expect(root.html()).toBe('<div>Hello World !<br>6 Jan<br>en</div>')
   })
+
+  it('should try to provide a cozy-intent context', async () => {
+    const client = createMockClient({})
+    const mockStore = configureStore()
+    const store = mockStore(x => x)
+    mount(
+      <Provider store={store}>
+        <CozyProvider client={client}>
+          <I18n lang="en" dictRequire={() => locales}>
+            <App />
+          </I18n>
+        </CozyProvider>
+      </Provider>
+    )
+
+    // Currently only the WebviewProvider should call this function in BarContext
+    // This is an easy way to test that the provider is working, albeit brittle
+    // A full test would need to mock cozy-intent, post-me and react-native
+    expect(isFlagshipApp).toHaveBeenCalled()
+  })
 })