Commit 08d017b3 authored by Primsi's avatar Primsi Committed by Primsi

Issue #2690131 by Primsi: Add tests asserting the working of the element - add travis config

parent 36483f13
# @file
# .travis.yml - Drupal for Travis CI Integration
#
# Template provided by https://github.com/LionsAd/drupal_ti.
#
# Based for simpletest upon:
# https://github.com/sonnym/travis-ci-drupal-module-example
language: php
sudo: false
cache:
directories:
- $HOME/.composer/cache
php:
- 5.5
- 5.6
- 7
- hhvm
matrix:
fast_finish: true
branches:
only:
- "8.x-1.x"
env:
global:
# add composer's global bin directory to the path
# see: https://github.com/drush-ops/drush#install---composer
- PATH="$PATH:$HOME/.composer/vendor/bin"
# Configuration variables.
- DRUPAL_TI_MODULE_NAME="dropzonejs"
- DRUPAL_TI_SIMPLETEST_GROUP="dropzonejs"
# Define runners and environment vars to include before and after the
# main runners / environment vars.
#- DRUPAL_TI_SCRIPT_DIR_BEFORE="./drupal_ti/before"
#- DRUPAL_TI_SCRIPT_DIR_AFTER="./drupal_ti/after"
# The environment to use, supported are: drupal-7, drupal-8
- DRUPAL_TI_ENVIRONMENT="drupal-8"
# Drupal specific variables.
- DRUPAL_TI_DB="drupal_travis_db"
- DRUPAL_TI_DB_URL="mysql://root:@127.0.0.1/drupal_travis_db"
# Note: Do not add a trailing slash here.
- DRUPAL_TI_WEBSERVER_URL="http://127.0.0.1"
- DRUPAL_TI_WEBSERVER_PORT="8080"
# Simpletest specific commandline arguments, the DRUPAL_TI_SIMPLETEST_GROUP is appended at the end.
- DRUPAL_TI_SIMPLETEST_ARGS="--verbose --color --concurrency 4 --url $DRUPAL_TI_WEBSERVER_URL:$DRUPAL_TI_WEBSERVER_PORT"
# === Behat specific variables.
# This is relative to $TRAVIS_BUILD_DIR
# - DRUPAL_TI_BEHAT_DIR="./tests/behat"
# These arguments are passed to the bin/behat command.
# - DRUPAL_TI_BEHAT_ARGS=""
# Specify the filename of the behat.yml with the $DRUPAL_TI_DRUPAL_DIR variables.
# - DRUPAL_TI_BEHAT_YML="behat.yml.dist"
# This is used to setup Xvfb.
# - DRUPAL_TI_BEHAT_SCREENSIZE_COLOR="1280x1024x16"
# The version of seleniumthat should be used.
# - DRUPAL_TI_BEHAT_SELENIUM_VERSION="2.44"
# PHPUnit specific commandline arguments.
- DRUPAL_TI_PHPUNIT_ARGS=""
# Code coverage via coveralls.io
- DRUPAL_TI_COVERAGE="satooshi/php-coveralls:0.6.*"
# This needs to match your .coveralls.yml file.
- DRUPAL_TI_COVERAGE_FILE="build/logs/clover.xml"
# Debug options
#- DRUPAL_TI_DEBUG="-x -v"
# Set to "all" to output all files, set to e.g. "xvfb selenium" or "selenium",
# etc. to only output those channels.
#- DRUPAL_TI_DEBUG_FILE_OUTPUT="selenium xvfb webserver"
matrix:
# [[[ SELECT ANY OR MORE OPTIONS ]]]
#- DRUPAL_TI_RUNNERS="phpunit"
#- DRUPAL_TI_RUNNERS="simpletest"
#- DRUPAL_TI_RUNNERS="behat"
#- DRUPAL_TI_RUNNERS="phpunit simpletest behat"
- DRUPAL_TI_RUNNERS="phpunit-core"
mysql:
database: drupal_travis_db
username: root
encoding: utf8
before_install:
- composer self-update
- composer global require "lionsad/drupal_ti:1.*"
- drupal-ti before_install
# Codesniffer and Coder
- composer global require "squizlabs/php_codesniffer:2.0.*@dev"
- composer global require drupal/coder:8.2.0-beta1
- ln -s ~/.composer/vendor/drupal/coder/coder_sniffer/Drupal ~/.composer/vendor/squizlabs/php_codesniffer/CodeSniffer/Standards/
install:
- drupal-ti install
before_script:
- drupal-ti --include drupal_ti/.travis-before_script.sh
- drupal-ti before_script
script:
- drupal-ti --include drupal_ti/.travis-phpcs.sh
- export SIMPLETEST_DB=mysql://root:@127.0.0.1/drupal_travis_db; drupal-ti script
after_script:
- drupal-ti after_script
#!/bin/bash
# Add an optional statement to see that this is running in Travis CI.
echo "running drupal_ti/before/before_script.sh"
set -e $DRUPAL_TI_DEBUG
# Ensure the right Drupal version is installed.
# The first time this is run, it will install Drupal.
# Note: This function is re-entrant.
drupal_ti_ensure_drupal
# Change to the Drupal directory
cd "$DRUPAL_TI_DRUPAL_DIR"
# Create the the module directory (only necessary for D7)
# For D7, this is sites/default/modules
# For D8, this is modules
mkdir -p "$DRUPAL_TI_DRUPAL_DIR/$DRUPAL_TI_LIBRARIES_PATH"
cd "$DRUPAL_TI_DRUPAL_DIR"
# Manually clone the dependencies
mkdir libraries
cd libraries
git clone --depth 1 https://github.com/enyo/dropzone.git
#!/bin/bash
set -e $DRUPAL_TI_DEBUG
# Ensure the right Drupal version is installed.
# Note: This function is re-entrant.
drupal_ti_ensure_drupal
phpcs --report=full --standard=Drupal "$DRUPAL_TI_DRUPAL_DIR/$DRUPAL_TI_MODULES_PATH/$DRUPAL_TI_MODULE_NAME" || true
name: 'DropzoneJs Test'
type: module
description: 'Support module for DropzoneJs tests.'
package: Testing
version: VERSION
core: 8.x
dependencies:
- dropzonejs
<?php
namespace Drupal\dropzonejs_test\Form;
use Drupal\Core\Form\FormBase;
use Drupal\Core\Form\FormStateInterface;
class DropzoneJsTestForm extends FormBase {
/**
* {@inheritdoc}
*/
public function getFormId() {
return '_dropzonejs_test_form';
}
/**
* {@inheritdoc}
*/
public function buildForm(array $form, FormStateInterface $form_state) {
$form['dropzonejs'] = [
'#title' => t('DropzoneJs element'),
'#type' => 'dropzonejs',
'#required' => TRUE,
'#dropzone_description' => 'DropzoneJs description',
'#max_filesize' => '1M',
'#extensions' => 'jpg png',
];
return $form;
}
/**
* {@inheritdoc}
*/
public function submitForm(array &$form, FormStateInterface $form_state) {
}
}
<?php
namespace Drupal\Tests\dropzonejs\Kernel;
use Drupal\KernelTests\KernelTestBase;
use Drupal\user\Entity\Role;
use Drupal\user\RoleInterface;
/**
* Tests related to the dropzoneJs element.
*
* @group DropzoneJs
*/
class DropzoneJsElementTest extends KernelTestBase {
/**
* Modules to enable.
*
* @var array
*/
public static $modules = ['system', 'file', 'user', 'dropzonejs', 'dropzonejs_test'];
/**
* {@inheritdoc}
*/
protected function setUp() {
parent::setUp();
$this->installSchema('system', 'router');
$this->installEntitySchema('user');
/** @var \Drupal\user\RoleInterface $role */
$role = Role::create(['id' => RoleInterface::ANONYMOUS_ID]);
$role->grantPermission('dropzone upload files');
$role->save();
}
/**
* Tests that the dropzonejs element appears.
*/
public function testDropzoneJsElement() {
$this->container->get('router.builder')->rebuild();
$form = \Drupal::formBuilder()->getForm('\Drupal\dropzonejs_test\Form\DropzoneJsTestForm');
$this->render($form);
$xpath_base = "/html/body/form/div[contains(@class, 'form-item-dropzonejs')]";
// Label.
$this->assertFalse($this->xpath("$xpath_base/label[text()='Not DropzoneJs element']"));
$this->assertTrue($this->xpath("$xpath_base/label[text()='DropzoneJs element']"));
// Element where dropzonejs is attached to.
$this->assertTrue($this->xpath("$xpath_base/div[contains(@class, 'dropzone-enable')]"));
// Uploaded files input.
$this->assertTrue($this->xpath("$xpath_base/input[contains(@data-drupal-selector, 'edit-dropzonejs-uploaded-files')]"));
// Upload files path.
$this->assertTrue($this->xpath("$xpath_base/input[contains(@data-upload-path, '/dropzonejs/upload?token=')]"));
// Js is attached.
$this->assertTrue($this->xpath("/html/body/script[contains(@src, 'libraries/dropzone/dist/min/dropzone.min.js')]"));
$this->assertTrue($this->xpath("/html/body/script[contains(@src, 'modules/dropzonejs/js/dropzone.integration.js')]"));
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment