public function testShouldGenerateMonthlyInsight() { $instance = new Instance(); $instance->id = 10; $instance->network_username = '******'; $instance->network = 'twitter'; $time_now = date("Y-m-d H:i:s"); $today = date('Y-m-d', strtotime('today')); $yesterday = date('Y-m-d', strtotime('-1 day')); $builders = array(); $builders[] = FixtureBuilder::build('insights', array('id' => 76, 'instance_id' => 10, 'slug' => 'some_slug', 'date' => $today, 'time_generated' => $time_now)); $builders[] = FixtureBuilder::build('insights', array('id' => 77, 'instance_id' => 10, 'slug' => 'some_other_slug', 'date' => $yesterday, 'time_generated' => $time_now)); $insight_plugin_parent = new InsightPluginParent(); $insight_plugin_parent->insight_dao = DAOFactory::getDAO('InsightDAO'); // Test default values $this->assertTrue($insight_plugin_parent->shouldGenerateMonthlyInsight('a_slug', $instance)); $this->assertFalse($insight_plugin_parent->shouldGenerateMonthlyInsight('some_slug', $instance)); // Test regeneration on a given date $this->assertTrue($insight_plugin_parent->shouldGenerateMonthlyInsight('a_slug', $instance, $insight_date = $today)); $this->assertFalse($insight_plugin_parent->shouldGenerateMonthlyInsight('some_other_slug', $instance, $insight_date = $yesterday)); $this->assertTrue($insight_plugin_parent->shouldGenerateMonthlyInsight('some_other_slug', $instance, $insight_date = $yesterday, $regenerate_existing_insight = true)); // Test for day of month $day_of_month1 = date('j'); $day_of_month2 = date('j', strtotime('-1 day')); $this->assertTrue($insight_plugin_parent->shouldGenerateMonthlyInsight('a_slug', $instance, $insight_date = 'today', $regenerate_existing_insight = false, $day_of_month = $day_of_month1)); $this->assertFalse($insight_plugin_parent->shouldGenerateMonthlyInsight('a_slug', $instance, $insight_date = 'today', $regenerate_existing_insight = false, $day_of_month = $day_of_month2)); // Test with last week of posts $this->assertTrue($insight_plugin_parent->shouldGenerateMonthlyInsight('a_slug', $instance, $insight_date = 'today', $regenerate_existing_insight = false, $day_of_month = null, $count_related_posts = 13)); $this->assertFalse($insight_plugin_parent->shouldGenerateMonthlyInsight('a_slug', $instance, $insight_date = 'today', $regenerate_existing_insight = false, $day_of_month = null, $count_related_posts = 0)); // Test excluded networks $this->assertTrue($insight_plugin_parent->shouldGenerateMonthlyInsight('a_slug', $instance, $insight_date = 'today', $regenerate_existing_insight = false, $day_of_month = null, $count_last_week_of_posts = null, $excluded_networks = array('facebook'))); $this->assertFalse($insight_plugin_parent->shouldGenerateMonthlyInsight('a_slug', $instance, $insight_date = 'today', $regenerate_existing_insight = false, $day_of_month = null, $count_last_week_of_posts = null, $excluded_networks = array('twitter', 'facebook'))); // test bonus magic day $today = date('j'); for ($i = 1; $i <= 31; $i++) { if ($today == ($i + 15) % date('t') + 1) { $bonus_day = $i; break; } } $builders[] = FixtureBuilder::build('owner_instances', array('owner_id' => 1, 'instance_id' => $instance->id)); $builders[] = FixtureBuilder::build('owners', array('id' => 1, 'joined' => date('Y-m-d', strtotime('-20 day')), 'email' => '*****@*****.**')); $this->assertFalse($insight_plugin_parent->shouldGenerateMonthlyInsight('a_slug', $instance, $insight_date = 'today', $regenerate_existing_insight = true, $day_of_month = $bonus_day)); $instance->id++; $builders[] = FixtureBuilder::build('owner_instances', array('owner_id' => 2, 'instance_id' => $instance->id)); $builders[] = FixtureBuilder::build('owners', array('id' => 2, 'joined' => date('Y-m-d'), 'email' => '*****@*****.**')); $this->assertTrue($insight_plugin_parent->shouldGenerateMonthlyInsight('a_slug', $instance, $insight_date = 'today', $regenerate_existing_insight = true, $day_of_month = $bonus_day)); $this->assertFalse($insight_plugin_parent->shouldGenerateMonthlyInsight('a_slug', $instance, $insight_date = 'today', $regenerate_existing_insight = true, $day_of_month = $bonus_day, null, null, false)); }