makeProvider(); $this->assertSame(100.0, $provider->checkMatch('2024', 2024, 80)); $this->assertSame(0.0, $provider->checkMatch('2024', 2023, 100)); } #[Test] public function it_returns_zero_for_non_comparable_values(): void { Cache::flush(); $provider = $this->makeProvider(); $this->assertSame(0.0, $provider->checkMatch('Example Show', ['bad'], 75)); } #[Test] public function it_skips_imdb_updates_when_the_new_value_is_empty(): void { Cache::flush(); $sql = $this->buildUpdateQuery([ 'country' => '', 'tvdb' => 394553, 'trakt' => 0, 'tvrage' => 0, 'tvmaze' => 0, 'imdb' => '', 'tmdb' => 117643, 'summary' => 'Summary', 'publisher' => 'Nine Network', 'localzone' => "''", 'aliases' => '', ]); $this->assertStringContainsString('v.imdb = v.imdb', $sql); $this->assertStringNotContainsString('v.imdb = IF(v.imdb = 0, , v.imdb)', $sql); $this->assertStringContainsString("tvi.localzone = IF(tvi.localzone = '', '', tvi.localzone)", $sql); } #[Test] public function it_normalizes_tt_prefixed_imdb_ids_in_update_queries(): void { Cache::flush(); $sql = $this->buildUpdateQuery([ 'country' => 'AU', 'tvdb' => 394553, 'trakt' => 0, 'tvrage' => 0, 'tvmaze' => 0, 'imdb' => 'tt1176432', 'tmdb' => 117643, 'summary' => 'Summary', 'publisher' => 'Nine Network', 'localzone' => '', 'aliases' => '', ]); $this->assertStringContainsString("v.imdb = IF(v.imdb IN ('', '0'), '1176432', v.imdb)", $sql); } private function makeProvider(): TraktProvider { return new TraktProvider; } /** * @param array $show */ private function buildUpdateQuery(array $show): string { $provider = $this->makeProvider(); $method = new \ReflectionMethod($provider, 'buildUpdateQuery'); return $method->invoke($provider, 123, $show); } }