From 91273e8aff4a7465f899912b55c851579614c189 Mon Sep 17 00:00:00 2001 From: Sohel Ahmed Mesaniya Date: Fri, 30 Dec 2022 16:40:02 +0530 Subject: [PATCH 1/3] test --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 107df33f..9d20b16a 100644 --- a/README.md +++ b/README.md @@ -408,3 +408,4 @@ Professional support, consulting as well as software development services are av https://www.cebe.cc/en/contact Development of this library is sponsored by [cebe.:cloud: "Your Professional Deployment Platform"](https://cebe.cloud). + From 0ac648d2649a5d5a11997c194d712b02252a1509 Mon Sep 17 00:00:00 2001 From: Sohel Ahmed Mesaniya Date: Fri, 30 Dec 2022 17:19:12 +0530 Subject: [PATCH 2/3] Add tests for this issue --- ...00000_change_table_column_name_changes.php | 19 +++ .../maria/app/models/BaseModelFaker.php | 144 ++++++++++++++++++ .../maria/app/models/ColumnNameChange.php | 10 ++ .../app/models/ColumnNameChangeFaker.php | 42 +++++ .../app/models/base/ColumnNameChange.php | 28 ++++ ...00000_change_table_column_name_changes.php | 19 +++ .../mysql/app/models/BaseModelFaker.php | 144 ++++++++++++++++++ .../mysql/app/models/ColumnNameChange.php | 10 ++ .../app/models/ColumnNameChangeFaker.php | 42 +++++ .../app/models/base/ColumnNameChange.php | 28 ++++ .../mysql/change_column_name.php | 13 ++ .../mysql/change_column_name.yaml | 33 ++++ ...00000_change_table_column_name_changes.php | 19 +++ .../pgsql/app/models/BaseModelFaker.php | 144 ++++++++++++++++++ .../pgsql/app/models/ColumnNameChange.php | 10 ++ .../app/models/ColumnNameChangeFaker.php | 42 +++++ .../app/models/base/ColumnNameChange.php | 28 ++++ .../pgsql/change_column_name.php | 13 ++ .../pgsql/change_column_name.yaml | 33 ++++ tests/unit/ChangeColumnNameTest.php | 71 +++++++++ 20 files changed, 892 insertions(+) create mode 100644 tests/specs/change_column_name/maria/app/migrations_maria_db/m200000_000000_change_table_column_name_changes.php create mode 100644 tests/specs/change_column_name/maria/app/models/BaseModelFaker.php create mode 100644 tests/specs/change_column_name/maria/app/models/ColumnNameChange.php create mode 100644 tests/specs/change_column_name/maria/app/models/ColumnNameChangeFaker.php create mode 100644 tests/specs/change_column_name/maria/app/models/base/ColumnNameChange.php create mode 100644 tests/specs/change_column_name/mysql/app/migrations_mysql_db/m200000_000000_change_table_column_name_changes.php create mode 100644 tests/specs/change_column_name/mysql/app/models/BaseModelFaker.php create mode 100644 tests/specs/change_column_name/mysql/app/models/ColumnNameChange.php create mode 100644 tests/specs/change_column_name/mysql/app/models/ColumnNameChangeFaker.php create mode 100644 tests/specs/change_column_name/mysql/app/models/base/ColumnNameChange.php create mode 100644 tests/specs/change_column_name/mysql/change_column_name.php create mode 100644 tests/specs/change_column_name/mysql/change_column_name.yaml create mode 100644 tests/specs/change_column_name/pgsql/app/migrations_pgsql_db/m200000_000000_change_table_column_name_changes.php create mode 100644 tests/specs/change_column_name/pgsql/app/models/BaseModelFaker.php create mode 100644 tests/specs/change_column_name/pgsql/app/models/ColumnNameChange.php create mode 100644 tests/specs/change_column_name/pgsql/app/models/ColumnNameChangeFaker.php create mode 100644 tests/specs/change_column_name/pgsql/app/models/base/ColumnNameChange.php create mode 100644 tests/specs/change_column_name/pgsql/change_column_name.php create mode 100644 tests/specs/change_column_name/pgsql/change_column_name.yaml create mode 100644 tests/unit/ChangeColumnNameTest.php diff --git a/tests/specs/change_column_name/maria/app/migrations_maria_db/m200000_000000_change_table_column_name_changes.php b/tests/specs/change_column_name/maria/app/migrations_maria_db/m200000_000000_change_table_column_name_changes.php new file mode 100644 index 00000000..1a75dbd3 --- /dev/null +++ b/tests/specs/change_column_name/maria/app/migrations_maria_db/m200000_000000_change_table_column_name_changes.php @@ -0,0 +1,19 @@ +db->createCommand('ALTER TABLE {{%column_name_changes}} ADD COLUMN updated_at_2 datetime NOT NULL')->execute(); + $this->dropColumn('{{%column_name_changes}}', 'updated_at'); + } + + public function down() + { + $this->addColumn('{{%column_name_changes}}', 'updated_at', $this->datetime()->notNull()); + $this->dropColumn('{{%column_name_changes}}', 'updated_at_2'); + } +} diff --git a/tests/specs/change_column_name/maria/app/models/BaseModelFaker.php b/tests/specs/change_column_name/maria/app/models/BaseModelFaker.php new file mode 100644 index 00000000..c367fbb4 --- /dev/null +++ b/tests/specs/change_column_name/maria/app/models/BaseModelFaker.php @@ -0,0 +1,144 @@ +faker = FakerFactory::create(str_replace('-', '_', \Yii::$app->language)); + $this->uniqueFaker = new UniqueGenerator($this->faker); + } + + abstract public function generateModel($attributes = []); + + public function getFaker():Generator + { + return $this->faker; + } + + public function getUniqueFaker():UniqueGenerator + { + return $this->uniqueFaker; + } + + public function setFaker(Generator $faker):void + { + $this->faker = $faker; + } + + public function setUniqueFaker(UniqueGenerator $faker):void + { + $this->uniqueFaker = $faker; + } + + /** + * Generate and return model + * @param array|callable $attributes + * @param UniqueGenerator|null $uniqueFaker + * @return \yii\db\ActiveRecord + * @example MyFaker::makeOne(['user_id' => 1, 'title' => 'foo']); + * @example MyFaker::makeOne( function($model, $faker) { + * $model->scenario = 'create'; + * $model->setAttributes(['user_id' => 1, 'title' => $faker->sentence]); + * return $model; + * }); + */ + public static function makeOne($attributes = [], ?UniqueGenerator $uniqueFaker = null) + { + $fakeBuilder = new static(); + if ($uniqueFaker !== null) { + $fakeBuilder->setUniqueFaker($uniqueFaker); + } + $model = $fakeBuilder->generateModel($attributes); + return $model; + } + + /** + * Generate, save and return model + * @param array|callable $attributes + * @param UniqueGenerator|null $uniqueFaker + * @return \yii\db\ActiveRecord + * @example MyFaker::saveOne(['user_id' => 1, 'title' => 'foo']); + * @example MyFaker::saveOne( function($model, $faker) { + * $model->scenario = 'create'; + * $model->setAttributes(['user_id' => 1, 'title' => $faker->sentence]); + * return $model; + * }); + */ + public static function saveOne($attributes = [], ?UniqueGenerator $uniqueFaker = null) + { + $model = static::makeOne($attributes, $uniqueFaker); + $model->save(); + return $model; + } + + /** + * Generate and return multiple models + * @param int $number + * @param array|callable $commonAttributes + * @return \yii\db\ActiveRecord[]|array + * @example TaskFaker::make(5, ['project_id'=>1, 'user_id' => 2]); + * @example TaskFaker::make(5, function($model, $faker, $uniqueFaker) { + * $model->setAttributes(['name' => $uniqueFaker->username, 'state'=>$faker->boolean(20)]); + * return $model; + * }); + */ + public static function make(int $number, $commonAttributes = [], ?UniqueGenerator $uniqueFaker = null):array + { + if ($number < 1) { + return []; + } + $fakeBuilder = new static(); + if ($uniqueFaker !== null) { + $fakeBuilder->setUniqueFaker($uniqueFaker); + } + return array_map(function () use ($commonAttributes, $fakeBuilder) { + $model = $fakeBuilder->generateModel($commonAttributes); + return $model; + }, range(0, $number -1)); + } + + /** + * Generate, save and return multiple models + * @param int $number + * @param array|callable $commonAttributes + * @return \yii\db\ActiveRecord[]|array + * @example TaskFaker::save(5, ['project_id'=>1, 'user_id' => 2]); + * @example TaskFaker::save(5, function($model, $faker, $uniqueFaker) { + * $model->setAttributes(['name' => $uniqueFaker->username, 'state'=>$faker->boolean(20)]); + * return $model; + * }); + */ + public static function save(int $number, $commonAttributes = [], ?UniqueGenerator $uniqueFaker = null):array + { + if ($number < 1) { + return []; + } + $fakeBuilder = new static(); + if ($uniqueFaker !== null) { + $fakeBuilder->setUniqueFaker($uniqueFaker); + } + return array_map(function () use ($commonAttributes, $fakeBuilder) { + $model = $fakeBuilder->generateModel($commonAttributes); + $model->save(); + return $model; + }, range(0, $number -1)); + } +} diff --git a/tests/specs/change_column_name/maria/app/models/ColumnNameChange.php b/tests/specs/change_column_name/maria/app/models/ColumnNameChange.php new file mode 100644 index 00000000..a6fd1c91 --- /dev/null +++ b/tests/specs/change_column_name/maria/app/models/ColumnNameChange.php @@ -0,0 +1,10 @@ +generateModels(['author_id' => 1]); + * $model = (new PostFaker())->generateModels(function($model, $faker, $uniqueFaker) { + * $model->scenario = 'create'; + * $model->author_id = 1; + * return $model; + * }); + **/ + public function generateModel($attributes = []) + { + $faker = $this->faker; + $uniqueFaker = $this->uniqueFaker; + $model = new ColumnNameChange(); + //$model->id = $uniqueFaker->numberBetween(0, 1000000); + $model->name = $faker->sentence; + $model->updated_at_2 = $faker->sentence; + if (!is_callable($attributes)) { + $model->setAttributes($attributes, false); + } else { + $model = $attributes($model, $faker, $uniqueFaker); + } + return $model; + } +} diff --git a/tests/specs/change_column_name/maria/app/models/base/ColumnNameChange.php b/tests/specs/change_column_name/maria/app/models/base/ColumnNameChange.php new file mode 100644 index 00000000..2289ab14 --- /dev/null +++ b/tests/specs/change_column_name/maria/app/models/base/ColumnNameChange.php @@ -0,0 +1,28 @@ + [['name'], 'trim'], + 'required' => [['name'], 'required'], + 'name_string' => [['name'], 'string'], + ]; + } +} diff --git a/tests/specs/change_column_name/mysql/app/migrations_mysql_db/m200000_000000_change_table_column_name_changes.php b/tests/specs/change_column_name/mysql/app/migrations_mysql_db/m200000_000000_change_table_column_name_changes.php new file mode 100644 index 00000000..1a75dbd3 --- /dev/null +++ b/tests/specs/change_column_name/mysql/app/migrations_mysql_db/m200000_000000_change_table_column_name_changes.php @@ -0,0 +1,19 @@ +db->createCommand('ALTER TABLE {{%column_name_changes}} ADD COLUMN updated_at_2 datetime NOT NULL')->execute(); + $this->dropColumn('{{%column_name_changes}}', 'updated_at'); + } + + public function down() + { + $this->addColumn('{{%column_name_changes}}', 'updated_at', $this->datetime()->notNull()); + $this->dropColumn('{{%column_name_changes}}', 'updated_at_2'); + } +} diff --git a/tests/specs/change_column_name/mysql/app/models/BaseModelFaker.php b/tests/specs/change_column_name/mysql/app/models/BaseModelFaker.php new file mode 100644 index 00000000..c367fbb4 --- /dev/null +++ b/tests/specs/change_column_name/mysql/app/models/BaseModelFaker.php @@ -0,0 +1,144 @@ +faker = FakerFactory::create(str_replace('-', '_', \Yii::$app->language)); + $this->uniqueFaker = new UniqueGenerator($this->faker); + } + + abstract public function generateModel($attributes = []); + + public function getFaker():Generator + { + return $this->faker; + } + + public function getUniqueFaker():UniqueGenerator + { + return $this->uniqueFaker; + } + + public function setFaker(Generator $faker):void + { + $this->faker = $faker; + } + + public function setUniqueFaker(UniqueGenerator $faker):void + { + $this->uniqueFaker = $faker; + } + + /** + * Generate and return model + * @param array|callable $attributes + * @param UniqueGenerator|null $uniqueFaker + * @return \yii\db\ActiveRecord + * @example MyFaker::makeOne(['user_id' => 1, 'title' => 'foo']); + * @example MyFaker::makeOne( function($model, $faker) { + * $model->scenario = 'create'; + * $model->setAttributes(['user_id' => 1, 'title' => $faker->sentence]); + * return $model; + * }); + */ + public static function makeOne($attributes = [], ?UniqueGenerator $uniqueFaker = null) + { + $fakeBuilder = new static(); + if ($uniqueFaker !== null) { + $fakeBuilder->setUniqueFaker($uniqueFaker); + } + $model = $fakeBuilder->generateModel($attributes); + return $model; + } + + /** + * Generate, save and return model + * @param array|callable $attributes + * @param UniqueGenerator|null $uniqueFaker + * @return \yii\db\ActiveRecord + * @example MyFaker::saveOne(['user_id' => 1, 'title' => 'foo']); + * @example MyFaker::saveOne( function($model, $faker) { + * $model->scenario = 'create'; + * $model->setAttributes(['user_id' => 1, 'title' => $faker->sentence]); + * return $model; + * }); + */ + public static function saveOne($attributes = [], ?UniqueGenerator $uniqueFaker = null) + { + $model = static::makeOne($attributes, $uniqueFaker); + $model->save(); + return $model; + } + + /** + * Generate and return multiple models + * @param int $number + * @param array|callable $commonAttributes + * @return \yii\db\ActiveRecord[]|array + * @example TaskFaker::make(5, ['project_id'=>1, 'user_id' => 2]); + * @example TaskFaker::make(5, function($model, $faker, $uniqueFaker) { + * $model->setAttributes(['name' => $uniqueFaker->username, 'state'=>$faker->boolean(20)]); + * return $model; + * }); + */ + public static function make(int $number, $commonAttributes = [], ?UniqueGenerator $uniqueFaker = null):array + { + if ($number < 1) { + return []; + } + $fakeBuilder = new static(); + if ($uniqueFaker !== null) { + $fakeBuilder->setUniqueFaker($uniqueFaker); + } + return array_map(function () use ($commonAttributes, $fakeBuilder) { + $model = $fakeBuilder->generateModel($commonAttributes); + return $model; + }, range(0, $number -1)); + } + + /** + * Generate, save and return multiple models + * @param int $number + * @param array|callable $commonAttributes + * @return \yii\db\ActiveRecord[]|array + * @example TaskFaker::save(5, ['project_id'=>1, 'user_id' => 2]); + * @example TaskFaker::save(5, function($model, $faker, $uniqueFaker) { + * $model->setAttributes(['name' => $uniqueFaker->username, 'state'=>$faker->boolean(20)]); + * return $model; + * }); + */ + public static function save(int $number, $commonAttributes = [], ?UniqueGenerator $uniqueFaker = null):array + { + if ($number < 1) { + return []; + } + $fakeBuilder = new static(); + if ($uniqueFaker !== null) { + $fakeBuilder->setUniqueFaker($uniqueFaker); + } + return array_map(function () use ($commonAttributes, $fakeBuilder) { + $model = $fakeBuilder->generateModel($commonAttributes); + $model->save(); + return $model; + }, range(0, $number -1)); + } +} diff --git a/tests/specs/change_column_name/mysql/app/models/ColumnNameChange.php b/tests/specs/change_column_name/mysql/app/models/ColumnNameChange.php new file mode 100644 index 00000000..a6fd1c91 --- /dev/null +++ b/tests/specs/change_column_name/mysql/app/models/ColumnNameChange.php @@ -0,0 +1,10 @@ +generateModels(['author_id' => 1]); + * $model = (new PostFaker())->generateModels(function($model, $faker, $uniqueFaker) { + * $model->scenario = 'create'; + * $model->author_id = 1; + * return $model; + * }); + **/ + public function generateModel($attributes = []) + { + $faker = $this->faker; + $uniqueFaker = $this->uniqueFaker; + $model = new ColumnNameChange(); + //$model->id = $uniqueFaker->numberBetween(0, 1000000); + $model->name = $faker->sentence; + $model->updated_at_2 = $faker->sentence; + if (!is_callable($attributes)) { + $model->setAttributes($attributes, false); + } else { + $model = $attributes($model, $faker, $uniqueFaker); + } + return $model; + } +} diff --git a/tests/specs/change_column_name/mysql/app/models/base/ColumnNameChange.php b/tests/specs/change_column_name/mysql/app/models/base/ColumnNameChange.php new file mode 100644 index 00000000..2289ab14 --- /dev/null +++ b/tests/specs/change_column_name/mysql/app/models/base/ColumnNameChange.php @@ -0,0 +1,28 @@ + [['name'], 'trim'], + 'required' => [['name'], 'required'], + 'name_string' => [['name'], 'string'], + ]; + } +} diff --git a/tests/specs/change_column_name/mysql/change_column_name.php b/tests/specs/change_column_name/mysql/change_column_name.php new file mode 100644 index 00000000..9784a19b --- /dev/null +++ b/tests/specs/change_column_name/mysql/change_column_name.php @@ -0,0 +1,13 @@ + '@specs/change_column_name/mysql/change_column_name.yaml', + 'generateUrls' => false, + 'generateModels' => true, + 'excludeModels' => [ + 'Error', + ], + 'generateControllers' => false, + 'generateMigrations' => true, + 'generateModelFaker' => true, +]; diff --git a/tests/specs/change_column_name/mysql/change_column_name.yaml b/tests/specs/change_column_name/mysql/change_column_name.yaml new file mode 100644 index 00000000..fb34c6b7 --- /dev/null +++ b/tests/specs/change_column_name/mysql/change_column_name.yaml @@ -0,0 +1,33 @@ +openapi: "3.0.0" +info: + version: 1.0.0 + title: Change column name test +paths: + /: + get: + summary: List + operationId: list + responses: + '200': + description: The information + +components: + schemas: + Column_name_change: + type: object + description: Test model for change in column name test + required: + - id + - name + properties: + id: + type: integer + name: + type: string + x-db-type: varchar(255) + updated_at_2: + readOnly: true + type: string + format: datetime + nullable: false + x-db-type: datetime diff --git a/tests/specs/change_column_name/pgsql/app/migrations_pgsql_db/m200000_000000_change_table_column_name_changes.php b/tests/specs/change_column_name/pgsql/app/migrations_pgsql_db/m200000_000000_change_table_column_name_changes.php new file mode 100644 index 00000000..60bb3ff0 --- /dev/null +++ b/tests/specs/change_column_name/pgsql/app/migrations_pgsql_db/m200000_000000_change_table_column_name_changes.php @@ -0,0 +1,19 @@ +db->createCommand('ALTER TABLE {{%column_name_changes}} ADD COLUMN updated_at_2 timestamp NOT NULL')->execute(); + $this->dropColumn('{{%column_name_changes}}', 'updated_at'); + } + + public function safeDown() + { + $this->addColumn('{{%column_name_changes}}', 'updated_at', $this->timestamp()->notNull()); + $this->dropColumn('{{%column_name_changes}}', 'updated_at_2'); + } +} diff --git a/tests/specs/change_column_name/pgsql/app/models/BaseModelFaker.php b/tests/specs/change_column_name/pgsql/app/models/BaseModelFaker.php new file mode 100644 index 00000000..c367fbb4 --- /dev/null +++ b/tests/specs/change_column_name/pgsql/app/models/BaseModelFaker.php @@ -0,0 +1,144 @@ +faker = FakerFactory::create(str_replace('-', '_', \Yii::$app->language)); + $this->uniqueFaker = new UniqueGenerator($this->faker); + } + + abstract public function generateModel($attributes = []); + + public function getFaker():Generator + { + return $this->faker; + } + + public function getUniqueFaker():UniqueGenerator + { + return $this->uniqueFaker; + } + + public function setFaker(Generator $faker):void + { + $this->faker = $faker; + } + + public function setUniqueFaker(UniqueGenerator $faker):void + { + $this->uniqueFaker = $faker; + } + + /** + * Generate and return model + * @param array|callable $attributes + * @param UniqueGenerator|null $uniqueFaker + * @return \yii\db\ActiveRecord + * @example MyFaker::makeOne(['user_id' => 1, 'title' => 'foo']); + * @example MyFaker::makeOne( function($model, $faker) { + * $model->scenario = 'create'; + * $model->setAttributes(['user_id' => 1, 'title' => $faker->sentence]); + * return $model; + * }); + */ + public static function makeOne($attributes = [], ?UniqueGenerator $uniqueFaker = null) + { + $fakeBuilder = new static(); + if ($uniqueFaker !== null) { + $fakeBuilder->setUniqueFaker($uniqueFaker); + } + $model = $fakeBuilder->generateModel($attributes); + return $model; + } + + /** + * Generate, save and return model + * @param array|callable $attributes + * @param UniqueGenerator|null $uniqueFaker + * @return \yii\db\ActiveRecord + * @example MyFaker::saveOne(['user_id' => 1, 'title' => 'foo']); + * @example MyFaker::saveOne( function($model, $faker) { + * $model->scenario = 'create'; + * $model->setAttributes(['user_id' => 1, 'title' => $faker->sentence]); + * return $model; + * }); + */ + public static function saveOne($attributes = [], ?UniqueGenerator $uniqueFaker = null) + { + $model = static::makeOne($attributes, $uniqueFaker); + $model->save(); + return $model; + } + + /** + * Generate and return multiple models + * @param int $number + * @param array|callable $commonAttributes + * @return \yii\db\ActiveRecord[]|array + * @example TaskFaker::make(5, ['project_id'=>1, 'user_id' => 2]); + * @example TaskFaker::make(5, function($model, $faker, $uniqueFaker) { + * $model->setAttributes(['name' => $uniqueFaker->username, 'state'=>$faker->boolean(20)]); + * return $model; + * }); + */ + public static function make(int $number, $commonAttributes = [], ?UniqueGenerator $uniqueFaker = null):array + { + if ($number < 1) { + return []; + } + $fakeBuilder = new static(); + if ($uniqueFaker !== null) { + $fakeBuilder->setUniqueFaker($uniqueFaker); + } + return array_map(function () use ($commonAttributes, $fakeBuilder) { + $model = $fakeBuilder->generateModel($commonAttributes); + return $model; + }, range(0, $number -1)); + } + + /** + * Generate, save and return multiple models + * @param int $number + * @param array|callable $commonAttributes + * @return \yii\db\ActiveRecord[]|array + * @example TaskFaker::save(5, ['project_id'=>1, 'user_id' => 2]); + * @example TaskFaker::save(5, function($model, $faker, $uniqueFaker) { + * $model->setAttributes(['name' => $uniqueFaker->username, 'state'=>$faker->boolean(20)]); + * return $model; + * }); + */ + public static function save(int $number, $commonAttributes = [], ?UniqueGenerator $uniqueFaker = null):array + { + if ($number < 1) { + return []; + } + $fakeBuilder = new static(); + if ($uniqueFaker !== null) { + $fakeBuilder->setUniqueFaker($uniqueFaker); + } + return array_map(function () use ($commonAttributes, $fakeBuilder) { + $model = $fakeBuilder->generateModel($commonAttributes); + $model->save(); + return $model; + }, range(0, $number -1)); + } +} diff --git a/tests/specs/change_column_name/pgsql/app/models/ColumnNameChange.php b/tests/specs/change_column_name/pgsql/app/models/ColumnNameChange.php new file mode 100644 index 00000000..a6fd1c91 --- /dev/null +++ b/tests/specs/change_column_name/pgsql/app/models/ColumnNameChange.php @@ -0,0 +1,10 @@ +generateModels(['author_id' => 1]); + * $model = (new PostFaker())->generateModels(function($model, $faker, $uniqueFaker) { + * $model->scenario = 'create'; + * $model->author_id = 1; + * return $model; + * }); + **/ + public function generateModel($attributes = []) + { + $faker = $this->faker; + $uniqueFaker = $this->uniqueFaker; + $model = new ColumnNameChange(); + //$model->id = $uniqueFaker->numberBetween(0, 1000000); + $model->name = $faker->sentence; + $model->updated_at_2 = $faker->sentence; + if (!is_callable($attributes)) { + $model->setAttributes($attributes, false); + } else { + $model = $attributes($model, $faker, $uniqueFaker); + } + return $model; + } +} diff --git a/tests/specs/change_column_name/pgsql/app/models/base/ColumnNameChange.php b/tests/specs/change_column_name/pgsql/app/models/base/ColumnNameChange.php new file mode 100644 index 00000000..6af1a5ac --- /dev/null +++ b/tests/specs/change_column_name/pgsql/app/models/base/ColumnNameChange.php @@ -0,0 +1,28 @@ + [['name'], 'trim'], + 'required' => [['name'], 'required'], + 'name_string' => [['name'], 'string'], + ]; + } +} diff --git a/tests/specs/change_column_name/pgsql/change_column_name.php b/tests/specs/change_column_name/pgsql/change_column_name.php new file mode 100644 index 00000000..e15f2c06 --- /dev/null +++ b/tests/specs/change_column_name/pgsql/change_column_name.php @@ -0,0 +1,13 @@ + '@specs/change_column_name/pgsql/change_column_name.yaml', + 'generateUrls' => false, + 'generateModels' => true, + 'excludeModels' => [ + 'Error', + ], + 'generateControllers' => false, + 'generateMigrations' => true, + 'generateModelFaker' => true, +]; diff --git a/tests/specs/change_column_name/pgsql/change_column_name.yaml b/tests/specs/change_column_name/pgsql/change_column_name.yaml new file mode 100644 index 00000000..ece7f2d2 --- /dev/null +++ b/tests/specs/change_column_name/pgsql/change_column_name.yaml @@ -0,0 +1,33 @@ +openapi: "3.0.0" +info: + version: 1.0.0 + title: Change column name test for Pgsql +paths: + /: + get: + summary: List + operationId: list + responses: + '200': + description: The information + +components: + schemas: + Column_name_change: + type: object + description: Test model for change in column name test for Pgsql + required: + - id + - name + properties: + id: + type: integer + name: + type: string + x-db-type: varchar(255) + updated_at_2: + readOnly: true + type: string + format: datetime + nullable: false + x-db-type: timestamp diff --git a/tests/unit/ChangeColumnNameTest.php b/tests/unit/ChangeColumnNameTest.php new file mode 100644 index 00000000..b8cdf02b --- /dev/null +++ b/tests/unit/ChangeColumnNameTest.php @@ -0,0 +1,71 @@ +deleteTables(); + $this->createTableForTest(); + $testFile = Yii::getAlias("@specs/change_column_name/mysql/change_column_name.php"); + $this->runGenerator($testFile, 'mysql'); + $actualFiles = FileHelper::findFiles(Yii::getAlias('@app'), [ + 'recursive' => true, + 'except' => ['migrations_maria_db', 'migrations_pgsql_db'] + ]); + $expectedFiles = FileHelper::findFiles(Yii::getAlias("@specs/change_column_name/mysql/app"), [ + 'recursive' => true, + ]); + $this->checkFiles($actualFiles, $expectedFiles); + + // Maria DB + $this->changeDbToMariadb(); + $this->deleteTables(); + $this->createTableForTest(); + $testFile = Yii::getAlias("@specs/change_column_name/mysql/change_column_name.php"); + $this->runGenerator($testFile, 'maria'); + $actualFiles = FileHelper::findFiles(Yii::getAlias('@app'), [ + 'recursive' => true, + 'except' => ['migrations_mysql_db', 'migrations_pgsql_db'] + ]); + $expectedFiles = FileHelper::findFiles(Yii::getAlias("@specs/change_column_name/maria/app"), [ + 'recursive' => true, + ]); + $this->checkFiles($actualFiles, $expectedFiles); + + // Pgsql + $this->changeDbToPgsql(); + $this->deleteTables(); + $this->createTableForTest(); + $testFile = Yii::getAlias("@specs/change_column_name/pgsql/change_column_name.php"); + $this->runGenerator($testFile, 'pgsql'); + $actualFiles = FileHelper::findFiles(Yii::getAlias('@app'), [ + 'recursive' => true, + 'except' => ['migrations_mysql_db', 'migrations_maria_db'] + ]); + $expectedFiles = FileHelper::findFiles(Yii::getAlias("@specs/change_column_name/pgsql/app"), [ + 'recursive' => true, + ]); + $this->checkFiles($actualFiles, $expectedFiles); + } + + private function createTableForTest() + { + Yii::$app->db->createCommand()->createTable('{{%column_name_changes}}', [ + 'id' => 'pk', + 'name' => 'varchar(255) NOT NULL', + 'updated_at' => 'datetime NOT NULL', + ])->execute(); + } + + private function deleteTables() + { + Yii::$app->db->createCommand('DROP TABLE IF EXISTS {{%column_name_changes}}')->execute(); + } +} From d7e57a0241bbcc351f1465473f6ce6ecb8db15c6 Mon Sep 17 00:00:00 2001 From: Sohel Ahmed Mesaniya Date: Fri, 30 Dec 2022 17:20:22 +0530 Subject: [PATCH 3/3] remove unwanted space from README --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 9d20b16a..107df33f 100644 --- a/README.md +++ b/README.md @@ -408,4 +408,3 @@ Professional support, consulting as well as software development services are av https://www.cebe.cc/en/contact Development of this library is sponsored by [cebe.:cloud: "Your Professional Deployment Platform"](https://cebe.cloud). -