diff --git a/sites/chada.ma/chada.ma.test.js b/sites/chada.ma/chada.ma.test.js
new file mode 100644
index 00000000..557da6ea
--- /dev/null
+++ b/sites/chada.ma/chada.ma.test.js
@@ -0,0 +1,60 @@
+const { parser, url } = require('./chada.ma.config.js')
+const axios = require('axios')
+const dayjs = require('dayjs')
+const cheerio = require('cheerio')
+const utc = require('dayjs/plugin/utc')
+const timezone = require('dayjs/plugin/timezone')
+const customParseFormat = require('dayjs/plugin/customParseFormat')
+
+dayjs.extend(utc)
+dayjs.extend(timezone)
+dayjs.extend(customParseFormat)
+
+jest.mock('axios')
+
+const mockHtmlContent = `
+
+
Programmes d'Aujourd'hui
+
+
00:00 - 09:00
+
+
Bloc Prime + Clips
+
+
+
+
+`;
+
+it('can generate valid url', () => {
+ expect(url()).toBe('https://chada.ma/fr/chada-tv/grille-tv/')
+});
+
+it('can parse response', () => {
+ const content = mockHtmlContent
+
+ const result = parser({ content }).map(p => {
+ p.start = dayjs(p.start).tz('Africa/Casablanca').format('YYYY-MM-DDTHH:mm:ssZ')
+ p.stop = dayjs(p.stop).tz('Africa/Casablanca').format('YYYY-MM-DDTHH:mm:ssZ')
+ return p
+ })
+
+ expect(result).toMatchObject([
+ {
+ title: "Bloc Prime + Clips",
+ description: "No description available",
+ start: dayjs.tz('00:00', 'HH:mm', 'Africa/Casablanca').format('YYYY-MM-DDTHH:mm:ssZ'),
+ stop: dayjs.tz('09:00', 'HH:mm', 'Africa/Casablanca').format('YYYY-MM-DDTHH:mm:ssZ')
+ }
+ ])
+})
+
+it('can handle empty guide', () => {
+ const result = parser({
+ content: ''
+ })
+ expect(result).toMatchObject([])
+})