Skip to content

This repository contains the project of a book called "Web Application Development with Yii 2 and PHP" by Mark Safronov, Jeffrey Winesett with some adaptations to allow the app to run with the new versions of Codeception and Yii2

License

Notifications You must be signed in to change notification settings

filipe1309/yii2-crmapp

Repository files navigation

yii2-crmapp

This repository contains the project of a book called "Web Application Development with Yii 2 and PHP" by Mark Safronov, Jeffrey Winesett with some adaptations to allow the app to run with the new versions of Codeception and Yii2

Commands

############
# Chapter 2
############

mkdir yii2-crmapp
cd yii2-crmapp
git init

# Composer
curl -sS https://getcomposer.org/installer | php

composer global require "fxp/composer-asset-plugin:1.0.0-beta4"

# Codeption - inital config
composer require "codeception/codeception:*"
alias cept="./vendor/bin/codecept"
cept bootstrap

# Codeption - Create one acceptance test called SmokeTestCept.php in tests/acceptance
cept generate:cept acceptance SmokeTest

# Codeption - run tests
cept run

# Codeption - change tests/acceptance.suite.yml change acceptance.suite.yml
cept build
cept run

# Codeption - Create one acceptance test called QueryCustomerByPhoneNumber.php in tests/acceptance
cept generate:cept acceptance QueryCustomerByPhoneNumber

# Codeption - generate an extended class from AcceptanceTester called CRMOperatorSteps.php in tests/_support/Step/Acceptance
cept generate:stepobject acceptance CRMOperatorSteps

# Codeption - generate an extended class from AcceptanceTester called CRMUserSteps.php in tests/_support/Step/Acceptance
cept generate:stepobject acceptance CRMUserSteps

composer require "fzaninotto/faker:*"

cept run

# Yii2
composer require "yiisoft/yii2:*"

# Yii2 - Create mandatory folders for yii2
mkdir runtime
mkdir web/assets

# MySQL yii2 table
# create database `crmapp` default character set utf8 default collate utf8_unicode_ci;

chmod +x yii

./yii migrate/create init_customer_table
./yii migrate/create init_phone_table
./yii migrate

############
# Chapter 3
############

# run acceptance tests only
cept run acceptance

./yii migrate/create init_service_table
./yii migrate

# Add Gii module
composer require --prefer-dist "yiisoft/yii2-gii:*"

cept generate:cept acceptance RegisterNewService
cept generate:stepobject acceptance CRMServicesManagementSteps
cept generate:stepobject acceptance CRMGuestSteps
cept generate:cept acceptance EditService
cept generate:cept acceptance DeleteService

# Add git tags to chapters
git tag -a c2 -m"Chapter 2" 929021e9535eaf1ac
git tag -a c3 -m"Chapter 3" 24c5c5b7bd6d7e355d
git push origin --tags

## phantomjs --webdriver=4444

# update java
sudo vim /etc/apt/sources.list
deb http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main
deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main
sudo apt-get update
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get install oracle-java8-installer

# add Gecko Driver (Firefor) for Selenium server
% export PATH=$PATH:/bin
% whereis geckodriver
geckodriver: /bin/geckodriver

# install Xvfb
sudo apt-get install xvfb
# set display number to :99
## Xvfb :99 -ac &
## export DISPLAY=:99    
# you are now having an X display by Xvfb

# Switch from PhpBrowser to Selenium to be able to deal with popups
# use xvfb to run headless browser
## Xvfb &
## java -jar selenium_sa_3.8.1.jar -enablePassThrough false

# command to run test with a headless browser in selenium using xvfb
DISPLAY=:1 xvfb-run java -jar selenium_sa_3.8.1.jar -enablePassThrough false

############
# Chapter 4
############

cept generate:cept acceptance Documentation
cept build
cept run acceptance DocumentationCept
# cept run tests/acceptance/DocumentationCept

# Add git tags to chapters
git tag -a c4 -m"Chapter 4" a8da6a4f16402b40
git push origin --tags

############
# Chapter 5
############

# Add git tags to chapters
git tag -a c5 -m"Chapter 5" acb3ea19c59369
git push origin --tags

cept generate:cept acceptance RegisterNewUser
cept generate:cept acceptance EditUser
cept generate:cept acceptance DeleteUser
cept generate:stepobject acceptance CRMUsersManagementSteps


./yii migrate/create init_user_table
./yii migrate

mysqldump -d crmapp > tests/_data/dump.sql

cept build
## cept generate:test functional PasswordHashing
cept generate:test unit PasswordHashing

cept run functional --debug

# Create a new dump file to include the migrations
mysqldump crmapp > tests/_data/dump.sql

# Add a auth_key fild in user table to use "Remenber me" functionality 
./yii migrate/create add_auth_key_to_user
./yii migrate

cept generate:cept acceptance LoginAndLogout
cept run acceptance LoginAndLogoutCept

############
# Chapter 6
############

# Add git tags to chapters
git tag -a c6 -m"Chapter 6" f9db70aeac32ff
git push origin --tags

./yii migrate/create add_predefined_users
./yii migrate

# Yii2 RBAC DB migrations
./yii migrate --migrationPath='@yii/rbac/migrations'

# Ceate an database specific for the tests, 
# to avoid regenerate the dump file after each migration
## create database `crmapp_test` default character set utf8 default collate utf8_unicode_ci;

# Role Hierarchy (Roles -> Routes)
## Guest   -> site(index, login)
## User    -> Guest + customers(index, query)
## Manager -> User + customers(add) + services(index, view, create, update, delete)
## Admin   -> Manager + users(index, view, create, update, delete)

cept generate:test functional RoleHierarchy

./yii migrate/create create_roles_for_predefined_users 
./yii migrate

# Create a new dump file to include the migration
mysqldump crmapp > tests/_data/dump.sql

# Test for access control from roles hierarchy
cept generate:cept acceptance AdminAccessRights
cept generate:cept acceptance ManagerAccessRights
cept generate:cept acceptance UserAccessRights
cept generate:cept acceptance GuestAccessRights

############
# Chapter 7
############

# Add git tags to chapters
git tag -a c7 -m"Chapter 7" 0fa066f588707e
git push origin --tags

composer require --prefer-dist yiisoft/yii2-debug "*"

cept generate:suite api ApiTester
cept build

cept generate:test api ServicesListApi
cept run api

############
# Chapter 8
############

# Add git tags to chapters
git tag -a c8 -m"Chapter 8" c08efff7168b2a26f
git push origin --tags

composer require --prefer-dist yiisoft/yii2-swiftmailer "*"

./yii asset/template assets/compression/config.php

mkdir web/compiled-assets/js
mkdir web/compiled-assets/css

# Generate the compressed assets files
./yii asset assets/compression/config.php config/assets_compressed.php

############
# Chapter 9
############

# Add git tags to chapters
git tag -a c9 -m"Chapter 9" 7f1d24bae8e64a26ebf8
git push origin --tags

mkdir extensions && cd $_
> AppInfoController.php

# In Malicious extension folder
git init
git commit -a -m "Added the Composer manifest file to repo"
git tag 1.0.0

# In CRMApp folder
# http://yii2-filipe1309.c9users.io/web_app_dev_yii2_php/yii2-crmapp/web/app-info/configuration
composer require "malicious/app-info:*"

############
# Chapter 10
## Events and Behaviors
############

# Add git tags to chapters
git tag -a c10 -m"Chapter 10" f28b8e88b38c342f
git push origin --tags

cept generate:test functional CustomerAudit
cept run functional CustomerAuditTest

./yii migrate/create add_audit_fields_to_customer
./yii migrate

# Create a new dump file to include the migration
mysqldump crmapp > tests/_data/dump.sql

# Custom behavior
# http://yii2-filipe1309.c9users.io/web_app_dev_yii2_php/yii2-crmapp/web/site/behavior

# Custom event
# http://yii2-filipe1309.c9users.io/web_app_dev_yii2_php/yii2-crmapp/web/site/event

############
# Chapter 11
## The Grid
############

# Add git tags to chapters
git tag -a c11 -m"Chapter 11" b36f9172361a2a7
git push origin --tags

./yii migrate/create add_address_table
./yii migrate

# Create a new dump file to include the migration
mysqldump crmapp > tests/_data/dump.sql

./yii migrate/create add_email_table
./yii migrate

# Create a new dump file to include the migration
mysqldump crmapp > tests/_data/dump.sql


# Generate the compressed assets files after create a new asset bundle
./yii asset assets/compression/config.php config/assets_compressed.php

############
# Chapter 12
## Route Management
############

# Add git tags to chapters
git tag -a c12 -m"Chapter 12" b8063b44a2560bcaaa0
git push origin --tags

############
# Chapter 13
## Collaborative Work
############

# Add git tags to chapters
git tag -a c13 -m"Chapter 13" ed9c9b53ff20181
git push origin --tags

./yii hash 1234
./yii hash/index 1234

./yii hash some string with spaces
./yii hash "some string with spaces"
./yii hash "some string with spaces" --interactive=0

./yii migrate/create new_migration_template_test

############
# Appendix A
## Deployment Setup with Vagrant
############

# Add git tags to chapters
git tag -a aA -m"Appendix A" 4bcd74248e5f8dfd64d4a5bb0
git push origin --tags

# Checks the versions of Guest Additions plugins of Virtualbox
vagrant plugin install vagrant-vbguest

vagrant up
vagrant halt
vagrant provision
vagrant destroy

vagrant ssh
cd /vagrant
mysql -u root -pmysqlroot crmapp

############
# Appendix B
## The Active Form Primer
############

# Add git tags to chapters
git tag -a aB -m"Appendix B" dcee74eaf9a5c
git push origin --tags

TODO

⋅⋅* *Make the tests run in a separate db (crmapp_test) controllerMap.db

About

This repository contains the project of a book called "Web Application Development with Yii 2 and PHP" by Mark Safronov, Jeffrey Winesett with some adaptations to allow the app to run with the new versions of Codeception and Yii2

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages