/** * @covers CalendarItemsDataProviderFactory::getDataProviderByDateRangeType * @covers CalendarItemsDataProvider::fetchData * @covers CalendarRowsAndColumnsReportDataProvider::makeSelectQueryAdapter * @covers CalendarRowsAndColumnsReportDataProvider::resolveSqlQueryAdapterForCount * @covers CalendarRowsAndColumnsReportDataProvider::getData */ public function testGetDataProviderByDateRangeType() { Yii::app()->user->userModel = User::getByUsername('super'); $product = ProductTestHelper::createProductByNameForOwner('Test Product', Yii::app()->user->userModel); $savedCalendar = CalendarTestHelper::createSavedCalendarByName('Test Cal', '#315AB0'); $currentDateTime = new DateTime('NOW'); $currentDateTime->add(new DateInterval('P1D')); $savedCalendarSubscriptions = SavedCalendarSubscriptions::makeByUser(Yii::app()->user->userModel, (string) $savedCalendar->id); $dp = CalendarItemsDataProviderFactory::getDataProviderByDateRangeType($savedCalendarSubscriptions, '2014-01-01', $currentDateTime->format('Y-m-d'), SavedCalendar::DATERANGE_TYPE_MONTH); $this->assertInstanceOf('CalendarItemsDataProvider', $dp); $this->assertEquals('2014-01-01', $dp->getStartDate()); $this->assertEquals($currentDateTime->format('Y-m-d'), $dp->getEndDate()); $this->assertEquals(SavedCalendar::DATERANGE_TYPE_MONTH, $dp->getDateRangeType()); $savedCalendarsData = $dp->getSavedCalendarSubscriptions()->getMySavedCalendarsAndSelected(); $keys = array_keys($savedCalendarsData); $this->assertEquals($savedCalendar->id, $keys[0]); $items = CalendarUtil::getFullCalendarItems($dp); $this->assertCount(1, $items); $this->assertEquals($product->id, $items[0]['modelId']); }
/** * Get events for the selected calendars. * @param string $selectedMyCalendarIds * @param string $selectedSharedCalendarIds * @param string $startDate * @param string $endDate * @param string $dateRangeType */ public function actionGetEvents($selectedMyCalendarIds = null, $selectedSharedCalendarIds = null, $startDate = null, $endDate = null, $dateRangeType = null) { $dataProvider = CalendarUtil::processAndGetDataProviderForEventsData($selectedMyCalendarIds, $selectedSharedCalendarIds, $startDate, $endDate, $dateRangeType); $items = CalendarUtil::getFullCalendarItems($dataProvider); foreach ($items as $index => $item) { $itemClass = isset($item['className']) ? $item['className'] : null; //If not more events if ($itemClass != 'more-events') { $item['description'] = Yii::app()->createUrl('calendars/default/getCalendarItemDetail', array('modelClass' => $item['modelClass'], 'modelId' => $item['modelId'])); } else { $moreEventStartDate = date('Y-m-d', strtotime($item['start'])); $dateTimeObject = new DateTime($moreEventStartDate); $dateTimeObject->add(new DateInterval('P1D')); $moreEventEndDate = $dateTimeObject->format('Y-m-d'); $params = array('selectedMyCalendarIds' => $selectedMyCalendarIds, 'selectedSharedCalendarIds' => $selectedSharedCalendarIds, 'startDate' => $moreEventStartDate, 'endDate' => $moreEventEndDate, 'dateRangeType' => SavedCalendar::DATERANGE_TYPE_DAY); $item['description'] = Yii::app()->createUrl('calendars/default/getDayEvents', $params); } $items[$index] = $item; } echo CJSON::encode(array('items' => $items, 'isMaxCountReached' => $dataProvider->getIsMaxCountReached())); }
/** * @covers SavedCalendarSubscriptions::makeByUser * @covers SavedCalendarSubscriptions::addMySavedCalendars * @covers SavedCalendarSubscriptions::addMySubscribedCalendars * @covers SavedCalendarSubscriptions::addMySavedCalendar * @covers SavedCalendarSubscriptions::addSubscribedToCalendar */ public function testProcessUserCalendarsAndMakeDataProviderForCombinedView() { $savedCalendars = SavedCalendar::getByName('Test Cal'); $subscribedCalendars = CalendarUtil::getUserSubscribedCalendars(Yii::app()->user->userModel); $dp = CalendarUtil::processAndGetDataProviderForEventsData(strval($savedCalendars[0]->id), strval($subscribedCalendars[0]->savedcalendar->id), null, null, null, false); $calendarItems = $dp->getData(); $this->assertCount(2, $calendarItems); $this->assertEquals('First Product', $calendarItems[0]->getTitle()); $this->assertEquals('Second Product', $calendarItems[1]->getTitle()); //Check getFullCalendarItems $items = CalendarUtil::getFullCalendarItems($dp); $this->assertCount(2, $items); $this->assertEquals('First Product', $items[0]['title']); $this->assertFalse(isset($items[0]['detailsUrl'])); $this->assertEquals('Second Product', $items[1]['title']); $items = CalendarUtil::populateDetailsUrlForCalendarItems($items); $this->assertTrue(isset($items[0]['detailsUrl'])); $this->assertEquals(Yii::app()->createUrl('/products/default/details', array('id' => $savedCalendars[0]->id)), $items[0]['detailsUrl']); }