public function testLocalized() { $post = Post::find()->localized(null, false)->where(['id' => 2])->one(); $this->assertEquals(require __DIR__ . '/data/test-localized-en.php', ['id' => $post->id, 'title' => $post->title, 'body' => $post->body]); $post = Post::find()->localized('ru', false)->where(['id' => 2])->one(); $this->assertEquals(require __DIR__ . '/data/test-localized-ru.php', ['id' => $post->id, 'title' => $post->title, 'body' => $post->body]); }
public function testFindPosts() { $data = []; $posts = Post::find()->with('tags')->all(); foreach ($posts as $post) { $data[] = $post->toArray([], ['tags']); } $this->assertEquals(require __DIR__ . '/data/test-find-posts.php', $data); }
public function testFindPostsRelatedByTagValuesAsArray() { $data = []; $models = Post::find()->with('tags')->relatedByTagValues(['tag 3', 'tag 3', 'tag 4', '', 'tag 5'])->all(); foreach ($models as $model) { $data[] = $model->toArray([], ['tags']); } $this->assertEquals(require __DIR__ . '/data/test-find-posts-related-by-tag-values.php', $data); $data = []; $models = Post::find()->with('tags')->relatedByTagValues(['tag-3', 'tag-3', 'tag-4', '', 'tag-5'], 'slug')->all(); foreach ($models as $model) { $data[] = $model->toArray([], ['tags']); } $this->assertEquals(require __DIR__ . '/data/test-find-posts-related-by-tag-values.php', $data); }
public function testFindPosts() { $posts = Post::find()->with('tags', 'images')->asArray()->all(); $this->assertEquals(require __DIR__ . '/data/test-find-posts.php', $posts); }
public function testLoadTranslateWithoutCurrentTranslate() { /** @var Post $model */ $model = Post::find()->with(['postLangs'])->where(['id' => 1])->one(); $this->assertEquals(array_keys($model->getRelatedRecords()), ['postLangs']); $this->assertEquals($model->titleLang, 'title of the first post'); $this->assertEquals(array_keys($model->getRelatedRecords()), ['postLangs', 'currentTranslate']); }
public function testJoinCurrentTranslateRelation() { $query = Post::find()->joinWith(['currentTranslate', 'status.currentTranslate'], false); $this->assertEquals($query->createCommand()->getRawSql(), "SELECT `post`.* FROM `post` LEFT JOIN `post_lang` ON `post`.`id` = `post_lang`.`post_id` LEFT JOIN `status` ON `post`.`status_id` = `status`.`id` LEFT JOIN `status_lang` ON `status`.`id` = `status_lang`.`status_id` WHERE (`post_lang`.`lang_id`='en') AND (`status_lang`.`lang_id`='en')"); Yii::$app->language = 'ru-RU'; $query = Post::find()->joinWith(['currentTranslate', 'status.currentTranslate'], false); $this->assertEquals($query->createCommand()->getRawSql(), "SELECT `post`.* FROM `post` LEFT JOIN `post_lang` ON `post`.`id` = `post_lang`.`post_id` LEFT JOIN `status` ON `post`.`status_id` = `status`.`id` LEFT JOIN `status_lang` ON `status`.`id` = `status_lang`.`status_id` WHERE (`post_lang`.`lang_id` IN ('ru', 'en')) AND (`status_lang`.`lang_id` IN ('ru', 'en'))"); }