Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
yii2
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
PSDI Army
yii2
Commits
416adcae
Commit
416adcae
authored
Feb 03, 2014
by
Mark
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
removed fixturePath, improved console command
parent
19d45b9a
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
20 additions
and
48 deletions
+20
-48
FixtureController.php
framework/console/controllers/FixtureController.php
+20
-48
No files found.
framework/console/controllers/FixtureController.php
View file @
416adcae
...
...
@@ -43,7 +43,7 @@ use yii\helpers\Inflector;
* yii fixture/apply Users --db=someOtherDbConneciton
*
* #load fixtures under different $fixturePath.
* yii fixture/apply Users --
fixturePath=@app/some/other/path/to/fixtures
* yii fixture/apply Users --
namespace=alias\my\custom\namespace\goes\here
* ~~~
*
* @author Mark Jebri <mark.github@yandex.ru>
...
...
@@ -64,10 +64,6 @@ class FixtureController extends Controller
*/
public
$defaultAction
=
'apply'
;
/**
* @var string alias to the path, where all fixtures are stored.
*/
public
$fixturePath
=
'@tests/unit/fixtures'
;
/**
* @var string id of the database connection component of the application.
*/
public
$db
=
'db'
;
...
...
@@ -84,27 +80,11 @@ class FixtureController extends Controller
public
function
globalOptions
()
{
return
array_merge
(
parent
::
globalOptions
(),
[
'db'
,
'fixturePath'
,
'namespace'
'db'
,
'namespace'
]);
}
/**
* This method is invoked right before an action is to be executed (after all possible filters.)
* It checks that fixtures path and database connection are available.
* @param \yii\base\Action $action
* @return boolean
*/
public
function
beforeAction
(
$action
)
{
if
(
parent
::
beforeAction
(
$action
))
{
$this
->
checkRequirements
();
return
true
;
}
else
{
return
false
;
}
}
/**
* Apply given fixture to the table. You can load several fixtures specifying
* their names separated with commas, like: tbl_user,tbl_profile. Be sure there is no
* whitespace between tables names.
...
...
@@ -125,7 +105,7 @@ class FixtureController extends Controller
if
(
!
$foundFixtures
)
{
throw
new
Exception
(
"No files were found by name:
\"
"
.
implode
(
', '
,
$fixtures
)
.
"
\"
.
\n
"
.
"Check that fi
xtures with these name exists, under fixtures path:
\n\"
"
.
Yii
::
getAlias
(
$this
->
fixturePath
)
.
"
\"
."
.
"Check that fi
les with these name exists, under fixtures path:
\n\"
"
.
Yii
::
getAlias
(
$this
->
getFixturePath
()
)
.
"
\"
."
);
}
...
...
@@ -175,7 +155,7 @@ class FixtureController extends Controller
if
(
!
$foundFixtures
)
{
throw
new
Exception
(
"No files were found by name:
\"
"
.
implode
(
', '
,
$fixtures
)
.
"
\"
.
\n
"
.
"Check that fixtures with these name exists, under fixtures path:
\n\"
"
.
Yii
::
getAlias
(
$this
->
fixturePath
)
.
"
\"
."
.
"Check that fixtures with these name exists, under fixtures path:
\n\"
"
.
Yii
::
getAlias
(
$this
->
getFixturePath
()
)
.
"
\"
."
);
}
...
...
@@ -197,7 +177,7 @@ class FixtureController extends Controller
foreach
(
$fixtures
as
$fixtureConfig
)
{
$fixture
=
Yii
::
createObject
(
$fixtureConfig
);
$fixture
->
unload
();
$this
->
stdout
(
"
Fixture
\"
{
$fixture
::
className
()
}
\"
was successfully unloaded.
\n
"
,
Console
::
FG_GREEN
);
$this
->
stdout
(
"
\t
Fixture
\"
{
$fixture
::
className
()
}
\"
was successfully unloaded.
\n
"
,
Console
::
FG_GREEN
);
}
$this
->
getDbConnection
()
->
createCommand
()
->
checkIntegrity
(
true
)
->
execute
();
...
...
@@ -211,20 +191,6 @@ class FixtureController extends Controller
}
/**
* Checks if the database and fixtures path are available.
* @throws yii\console\Exception
*/
public
function
checkRequirements
()
{
$path
=
Yii
::
getAlias
(
$this
->
fixturePath
,
false
);
if
(
!
is_dir
(
$path
)
||
!
is_writable
(
$path
))
{
throw
new
Exception
(
"The fixtures path
\"
{
$this
->
fixturePath
}
\"
not exist or is not writable."
);
}
}
/**
* Returns database connection component
* @return \yii\db\Connection
* @throws yii\console\Exception if [[db]] is invalid.
...
...
@@ -246,8 +212,8 @@ class FixtureController extends Controller
*/
private
function
notifySuccess
(
$fixtures
)
{
$this
->
stdout
(
"Fixtures were successfully loaded from
path
:
\n
"
,
Console
::
FG_YELLOW
);
$this
->
stdout
(
"
\t
"
.
Yii
::
getAlias
(
$this
->
fixturePath
)
.
"
\n\n
"
,
Console
::
FG_GREEN
);
$this
->
stdout
(
"Fixtures were successfully loaded from
namespace
:
\n
"
,
Console
::
FG_YELLOW
);
$this
->
stdout
(
"
\t
\"
"
.
Yii
::
getAlias
(
$this
->
namespace
)
.
"
\
"\n\n
"
,
Console
::
FG_GREEN
);
$this
->
outputList
(
$fixtures
);
}
...
...
@@ -258,7 +224,8 @@ class FixtureController extends Controller
private
function
notifyNotFound
(
$fixtures
)
{
$this
->
stdout
(
"Some fixtures were not found under path:
\n
"
,
Console
::
BG_RED
);
$this
->
stdout
(
"
\t
"
.
Yii
::
getAlias
(
$this
->
fixturePath
)
.
"
\n\n
"
,
Console
::
FG_GREEN
);
$this
->
stdout
(
"Check that they have correct namespace
\"
{
$this
->
namespace
}
\"
\n
"
,
Console
::
BG_RED
);
$this
->
stdout
(
"
\t
"
.
Yii
::
getAlias
(
$this
->
getFixturePath
())
.
"
\n\n
"
,
Console
::
FG_GREEN
);
$this
->
outputList
(
$fixtures
);
$this
->
stdout
(
"
\n
"
);
}
...
...
@@ -271,8 +238,6 @@ class FixtureController extends Controller
*/
private
function
confirmApply
(
$fixtures
,
$except
)
{
$this
->
stdout
(
"Fixtures will be loaded from path:
\n
"
,
Console
::
FG_YELLOW
);
$this
->
stdout
(
"
\t
"
.
Yii
::
getAlias
(
$this
->
fixturePath
)
.
"
\n\n
"
,
Console
::
FG_GREEN
);
$this
->
stdout
(
"Fixtures namespace is:
\n
"
,
Console
::
FG_YELLOW
);
$this
->
stdout
(
"
\t
"
.
$this
->
namespace
.
"
\n\n
"
,
Console
::
FG_GREEN
);
...
...
@@ -284,7 +249,7 @@ class FixtureController extends Controller
$this
->
outputList
(
$except
);
}
return
$this
->
confirm
(
"
\n
Load
to
above fixtures?"
);
return
$this
->
confirm
(
"
\n
Load above fixtures?"
);
}
/**
...
...
@@ -295,8 +260,6 @@ class FixtureController extends Controller
*/
private
function
confirmClear
(
$fixtures
,
$except
)
{
$this
->
stdout
(
"Fixtures will be loaded from path:
\n
"
,
Console
::
FG_YELLOW
);
$this
->
stdout
(
"
\t
"
.
Yii
::
getAlias
(
$this
->
fixturePath
)
.
"
\n\n
"
,
Console
::
FG_GREEN
);
$this
->
stdout
(
"Fixtures namespace is:
\n
"
,
Console
::
FG_YELLOW
);
$this
->
stdout
(
"
\t
"
.
$this
->
namespace
.
"
\n\n
"
,
Console
::
FG_GREEN
);
...
...
@@ -338,7 +301,7 @@ class FixtureController extends Controller
*/
private
function
findFixtures
(
array
$fixtures
)
{
$fixturesPath
=
Yii
::
getAlias
(
$this
->
fixturePath
);
$fixturesPath
=
Yii
::
getAlias
(
$this
->
getFixturePath
()
);
$filesToSearch
=
[
'*Fixture.php'
];
if
(
!
$this
->
needToApplyAll
(
$fixtures
[
0
]))
{
...
...
@@ -381,4 +344,13 @@ class FixtureController extends Controller
return
$config
;
}
/**
* Returns fixture path that determined on fixtures namespace.
* @return string fixture path
*/
private
function
getFixturePath
()
{
return
Yii
::
getAlias
(
'@'
.
str_replace
(
'\\'
,
'/'
,
$this
->
namespace
));
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment