/** * @param string $language * @dataProvider languageDataProvider */ public function testBundleHasFile2($language) { $assetManager = Yii::$app->getAssetManager(); $assetManager->bundles[DatePickerLanguageAsset::className()] = ['language' => $language]; $bundle = $assetManager->getBundle(DatePickerLanguageAsset::className()); $this->assertInstanceOf('yii\\jui\\datepicker\\DatePickerLanguageAsset', $bundle); $this->assertArrayHasKey(0, $bundle->depends); $this->assertEquals('yii\\jui\\datepicker\\DatePickerAsset', $bundle->depends[0]); $this->assertArrayHasKey(0, $bundle->js); $this->assertFileExists($bundle->basePath . DIRECTORY_SEPARATOR . $bundle->js[0]); }
/** * @inheritdoc */ public function init() { parent::init(); $this->sourcePath = get_class_vars(DatePickerLanguageAsset::className())['sourcePath']; if (is_null($this->language)) { $this->language = Yii::$app->language; if (is_null($this->language)) { $this->language = 'en-US'; } } if ($this->language != 'en-US' && $this->language != 'en') { $sourcePath = Yii::getAlias($this->sourcePath); $intlLoaded = extension_loaded('intl'); $version = $intlLoaded ? 'intl-' . phpversion('intl') : 'fix'; $jsFile = 'datepicker-' . $this->language . '-' . $version . '.js'; if (!is_file($sourcePath . DIRECTORY_SEPARATOR . $jsFile)) { $clientOptions = ['monthNames' => [], 'monthNamesShort' => [], 'dayNames' => [], 'dayNamesShort' => [], 'dayNamesMin' => []]; $formatter = Yii::$app->getFormatter(); foreach (array_map(function ($month) { return mktime(0, 0, 0, $month); }, range(1, 12)) as $timestamp) { $clientOptions['monthNames'][] = $formatter->asDate($timestamp, 'MMMM'); $clientOptions['monthNamesShort'][] = $formatter->asDate($timestamp, 'MMM'); } foreach (array_map(function ($day) { return mktime(0, 0, 0, 11, $day, 2015); }, range(1, 7)) as $timestamp) { $clientOptions['dayNames'][] = $formatter->asDate($timestamp, 'EEEE'); $clientOptions['dayNamesShort'][] = $formatter->asDate($timestamp, 'EEE'); if ($intlLoaded) { $clientOptions['dayNamesMin'][] = $formatter->asDate($timestamp, 'EEEEEE'); } } $data = 'jQuery.datepicker.setDefaults(' . Json::htmlEncode($clientOptions) . ');'; file_put_contents($sourcePath . DIRECTORY_SEPARATOR . $jsFile, $data); } $this->js[] = $jsFile; } }
/** * @param int $mode * @param string $actual * @param string $expectedHtml * @param string $expectedJs */ protected function checkExpected($mode, $actual, $expectedHtml, $expectedJs) { switch ($mode) { case static::MODE_MODEL_ATTRIBUTE: case static::MODE_MODEL_ATTRIBUTE_VALUE: $expectedHtml = '<div class="form-group field-testform-date">' . "\n" . $expectedHtml . "\n" . '</div>'; case static::MODE_NAME_VALUE: $this->assertEquals($expectedHtml, $actual); $view = Yii::$app->getView(); $this->assertArrayHasKey(DatePickerAsset::className(), $view->assetBundles); $this->assertArrayHasKey(DatePickerLanguageAsset::className(), $view->assetBundles); $this->assertArrayHasKey(DatePickerLanguageFixAsset::className(), $view->assetBundles); $this->assertArrayHasKey(View::POS_READY, $view->js); $jsKey = md5($expectedJs); $this->assertArrayHasKey($jsKey, $view->js[View::POS_READY]); $this->assertEquals($expectedJs, $view->js[View::POS_READY][$jsKey]); return; case static::MODE_NAME_VALUE_AJAX: $expectedHtml .= '<script>' . $expectedJs . '</script>'; $this->assertEquals($expectedHtml, $actual); return; case static::MODE_MODEL_ATTRIBUTE_AJAX: case static::MODE_MODEL_ATTRIBUTE_VALUE_AJAX: $expectedHtml .= '<script>' . $expectedJs . '</script>'; $expectedHtml = '<div class="form-group field-testform-date">' . "\n" . $expectedHtml . "\n" . '</div>'; $this->assertEquals($expectedHtml, $actual); return; } throw new Exception(); }