diff --git a/data/channels.csv b/data/channels.csv index f77664e1e5..1f04cfbc60 100644 --- a/data/channels.csv +++ b/data/channels.csv @@ -18521,7 +18521,7 @@ LigadeCampeones16porMovistarPlusPlus.es,Liga de Campeones 16 por Movistar Plus+, LigadeCampeones17porMovistarPlusPlus.es,Liga de Campeones 17 por Movistar Plus+,,,Telefonica,ES,sports,FALSE,2022-01-22,,,https://www.movistar.es/particulares/movistarplus/futbol LigadeCampeones1porMovistarPlusPlus.es,Liga de Campeones 1 por Movistar Plus+,Movistar Liga de Campeones 1,,Telefonica,ES,sports,FALSE,2018-08-09,2022-01-01,,https://www.movistar.es/particulares/movistarplus/futbol LigadeCampeones2porMovistarPlusPlus.es,Liga de Campeones 2 por Movistar Plus+,Movistar Liga de Campeones 2,,Telefonica,ES,sports,FALSE,2018-08-09,,,https://www.movistar.es/particulares/movistarplus/futbol -LigadeCampeones2UHDporMovistarPlusPlus.es,Liga de Campeones 2 UHD por Movistar Plus+,,,Telefonica,ES,sports,FALSE,2022-01-22,,,https://www.movistar.es/particulares/movistarplus/futbol +LigadeCampeones2UHDporMovistarPlusPlus.es,Liga de Campeones 2 UHD por Movistar Plus+,,,Telefonica,ES,sports,FALSE,2022-01-22,,,https://www.movistar.es/particulares/movistarplus/futbol LigadeCampeones3porMovistarPlusPlus.es,Liga de Campeones 3 por Movistar Plus+,Movistar Liga de Campeones 3,,Telefonica,ES,sports,FALSE,2018-08-09,,,https://www.movistar.es/particulares/movistarplus/futbol LigadeCampeones4porMovistarPlusPlus.es,Liga de Campeones 4 por Movistar Plus+,Movistar Liga de Campeones 4,,Telefonica,ES,sports,FALSE,2018-08-09,,,https://www.movistar.es/particulares/movistarplus/futbol LigadeCampeones5porMovistarPlusPlus.es,Liga de Campeones 5 por Movistar Plus+,Movistar Liga de Campeones 5,,Telefonica,ES,sports,FALSE,2018-08-09,,,https://www.movistar.es/particulares/movistarplus/futbol diff --git a/scripts/models/channel.ts b/scripts/models/channel.ts index a869a1185f..bf10b3f743 100644 --- a/scripts/models/channel.ts +++ b/scripts/models/channel.ts @@ -139,6 +139,7 @@ export class Channel extends sdk.Models.Channel implements Validator { name: Joi.string() .regex(/^[a-z0-9-!:&.+'/»#%°$@?|¡–\s_—]+$/i) .regex(/^((?!\s-\s).)*$/) + .regex(/^(?!.* {2})/) .required(), alt_names: Joi.array().items( Joi.string() diff --git a/scripts/models/feed.ts b/scripts/models/feed.ts index 95af009c32..fe2ba5c5b4 100644 --- a/scripts/models/feed.ts +++ b/scripts/models/feed.ts @@ -118,6 +118,7 @@ export class Feed extends sdk.Models.Feed implements Validator { name: Joi.string() .regex(/^[a-z0-9-!:&.+'/»#%°$@?|¡–\s_—]+$/i) .regex(/^((?!\s-\s).)*$/) + .regex(/^(?!.* {2})/) .required(), alt_names: Joi.array().items( Joi.string() diff --git a/tests/__data__/input/db/validate/invalid_value/channels.csv b/tests/__data__/input/db/validate/invalid_value/channels.csv index f8cd0994d3..de85bd7275 100644 --- a/tests/__data__/input/db/validate/invalid_value/channels.csv +++ b/tests/__data__/input/db/validate/invalid_value/channels.csv @@ -1,4 +1,4 @@ id,name,alt_names,network,owners,country,categories,is_nsfw,launched,closed,replaced_by,website -002RadioTV.do,002 Radio TV,,,,DO,,FALSE,,,002RadioTV.do@4K,ttps://www.002radio.com/ +002RadioTV.do,002 Radio TV,,,,DO,,FALSE,,,002RadioTV.do@4K,ttps://www.002radio.com/ 10Channel.do,10 Channel,,,,DO,,FALSE,,,, 24B.do,24B,,,,DO,,FALSE,,,, \ No newline at end of file diff --git a/tests/__data__/input/db/validate/invalid_value/feeds.csv b/tests/__data__/input/db/validate/invalid_value/feeds.csv index 9f6e229569..61498dea0e 100644 --- a/tests/__data__/input/db/validate/invalid_value/feeds.csv +++ b/tests/__data__/input/db/validate/invalid_value/feeds.csv @@ -2,5 +2,5 @@ channel,id,name,alt_names,is_main,broadcast_area,timezones,languages,format 0TV.dk,SD,SD,,TRUE,c/BE,Europe/Copenhagen,dan,576I 002RadioTV.do,SD,SD,,TRUE,c/DO,Africa/Accra,dan,1080i 002RadioTV.do,HD,HD,,TRUE,c/DO,Africa/Accra,dan,576i -24B.do,SD,SD,,FALSE,c/DO,Africa/Accra,dan,576i +24B.do,MiddleEast,Middle East,,FALSE,c/DO,Africa/Accra,dan,576i 10Channel.do,SD,SD,,TRUE,c/DO,Africa/Accra,eng,576i \ No newline at end of file diff --git a/tests/commands/db/validate.test.ts b/tests/commands/db/validate.test.ts index befe8db212..302fe2b035 100644 --- a/tests/commands/db/validate.test.ts +++ b/tests/commands/db/validate.test.ts @@ -72,6 +72,7 @@ describe('db:validate', () => { if (process.env.DEBUG === 'true') console.log(cmd, (error as ExecError).stdout) expect((error as ExecError).status).toBe(1) expect((error as ExecError).stdout).toContain(`channels.csv + 2 002RadioTV.do: "name" with value "002 Radio TV" fails to match the required pattern: /^(?!.* {2})/ 2 002RadioTV.do: "website" must be a valid uri with a scheme matching the http|https pattern 2 "002RadioTV.do" has an more than one main feed 2 "002RadioTV.do" has an invalid replaced_by "002RadioTV.do@4K" @@ -80,7 +81,8 @@ describe('db:validate', () => { 2 0TV.dk@SD: "format" with value "576I" fails to match the required pattern: /^\\d+(i|p)$/ 2 "0TV.dk@SD" has the wrong channel "0TV.dk" 2 "0TV.dk@SD" has the wrong broadcast_area "c/BE" - 2 "0TV.dk@SD" has the wrong timezones "Europe/Copenhagen"`) + 2 "0TV.dk@SD" has the wrong timezones "Europe/Copenhagen" + 5 24B.do@MiddleEast: "name" with value "Middle East" fails to match the required pattern: /^(?!.* {2})`) expect((error as ExecError).stdout).toContain(`logos.csv 2 i.imgur.com/rNffU8H.jpeg: "format" must be one of [SVG, PNG, JPEG, GIF, WebP, AVIF, APNG, null] 2 i.imgur.com/rNffU8H.jpeg: "url" must be a valid uri with a scheme matching the https pattern @@ -97,7 +99,7 @@ describe('db:validate', () => { 3 "AD-02" has an invalid parent "AD-05"`) expect((error as ExecError).stdout).toContain(`timezones.csv 2 "Africa/Accra" has the wrong countries "GH"`) - expect((error as ExecError).stdout).toContain('19 error(s)') + expect((error as ExecError).stdout).toContain('21 error(s)') } })