tests: Add bare-minimum testing configuration

This commit is contained in:
Ben Johnson
2020-02-13 12:19:02 -05:00
parent 838d73baa2
commit b2550bb71c
9 changed files with 121 additions and 67 deletions
+35
View File
@@ -0,0 +1,35 @@
APP_NAME=UNIT3D
APP_ENV=testing
APP_KEY=base64:y37MiYtrUMfj3Pyv2b4Mbu3xvrxkmZ6EJfFcOCGgI5Q=
APP_DEBUG=true
APP_LOG_LEVEL=debug
APP_URL=http://unit3d.site
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=unit3d_test
DB_USERNAME=homestead
DB_PASSWORD=secret
BROADCAST_DRIVER=log
CACHE_DRIVER=file
SESSION_DRIVER=file
SESSION_LIFETIME=120
QUEUE_DRIVER=sync
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1
+28
View File
@@ -0,0 +1,28 @@
language: php
php:
- '7.3'
addons:
mariadb: '10.3'
sudo: false
before_script:
- composer install --prefer-source --no-interaction
- php artisan key:generate --env testing
- npm install
- npm run prod
before_install:
- mysql -e 'CREATE DATABASE unit3d_test;'
- mysql -e "CREATE USER 'homestead'@'%' IDENTIFIED BY 'secret';"
- mysql --user=root -e "GRANT ALL PRIVILEGES ON unit3d_test.* TO 'homestead'@'%' WITH GRANT OPTION;"
- mysql --user=root -e 'FLUSH PRIVILEGES;'
services:
- mysql
notifications:
email:
on_failure: change
+1 -1
View File
@@ -93,4 +93,4 @@
"@php artisan key:generate --ansi"
]
}
}
}
+12
View File
@@ -0,0 +1,12 @@
<?php
/** @var \Illuminate\Database\Eloquent\Factory $factory */
use App\User;
use Faker\Generator as Faker;
$factory->define(User::class, function (Faker $faker) {
return [
];
});
+2 -2
View File
@@ -28,8 +28,8 @@
<server name="APP_ENV" value="testing"/>
<server name="BCRYPT_ROUNDS" value="4"/>
<server name="CACHE_DRIVER" value="array"/>
<server name="DB_CONNECTION" value="sqlite"/>
<server name="DB_DATABASE" value=":memory:"/>
<server name="DB_CONNECTION" value="mysql"/>
<server name="DB_DATABASE" value="unit3d_test"/>
<server name="MAIL_DRIVER" value="array"/>
<server name="QUEUE_CONNECTION" value="sync"/>
<server name="SESSION_DRIVER" value="array"/>
-12
View File
@@ -73,18 +73,6 @@
</div>
</div>
<div class="subfooter text-center" style="background-color: #2e2e2e;">
<div class="container">
<div class="subfooter-inner">
<div class="row">
<div class="col-md-12">
<span>This page took {{ microtime(true) - LARAVEL_START }} seconds to render.</span>
</div>
</div>
</div>
</div>
</div>
<a id="back-to-top" href="#" class="btn btn-primary btn-lg back-to-top" role="button">
<i class="{{ config('other.font-awesome') }} fa-arrow-square-up"></i>
</a>
-20
View File
@@ -1,20 +0,0 @@
<?php
namespace Tests\Feature;
use Tests\TestCase;
class ExampleTest extends TestCase
{
/**
* A basic test example.
*
* @return void
*/
public function testBasicTest()
{
$response = $this->get('/');
$response->assertStatus(200);
}
}
@@ -2,6 +2,8 @@
namespace Tests\Feature\Http\Controllers;
use App\Models\User;
use GroupsTableSeeder;
use Tests\TestCase;
/**
@@ -9,40 +11,47 @@ use Tests\TestCase;
*/
class HomeControllerTest extends TestCase
{
/**
* @test
*/
public function index_returns_an_ok_response()
public function setUp(): void
{
$this->markTestIncomplete('This test case was generated by Shift. When you are ready, remove this line and complete this test case.');
parent::setUp();
$user = factory(\App\Models\User::class)->create();
$response = $this->actingAs($user)->get(route('home.index'));
$response->assertOk();
$response->assertViewIs('home.index');
$response->assertViewHas('user');
$response->assertViewHas('personal_freeleech');
$response->assertViewHas('users');
$response->assertViewHas('groups');
$response->assertViewHas('articles');
$response->assertViewHas('newest');
$response->assertViewHas('seeded');
$response->assertViewHas('dying');
$response->assertViewHas('leeched');
$response->assertViewHas('dead');
$response->assertViewHas('topics');
$response->assertViewHas('posts');
$response->assertViewHas('featured');
$response->assertViewHas('poll');
$response->assertViewHas('uploaders');
$response->assertViewHas('past_uploaders');
$response->assertViewHas('freeleech_tokens');
$response->assertViewHas('bookmarks');
// TODO: perform additional assertions
$this->seed(GroupsTableSeeder::class);
}
// test cases...
/** @test */
public function whenNotAuthenticatedHomepageReturns302()
{
$response = $this->get('/');
$response->assertStatus(302);
}
/** @test */
public function whenAuthenticatedHomepageReturns200()
{
$user = factory(User::class)->create();
$this->actingAs($user)
->get(route('home.index'))
->assertOk()
->assertViewIs('home.index')
->assertViewHas('user')
->assertViewHas('personal_freeleech')
->assertViewHas('users')
->assertViewHas('groups')
->assertViewHas('articles')
->assertViewHas('newest')
->assertViewHas('seeded')
->assertViewHas('dying')
->assertViewHas('leeched')
->assertViewHas('dead')
->assertViewHas('topics')
->assertViewHas('posts')
->assertViewHas('featured')
->assertViewHas('poll')
->assertViewHas('uploaders')
->assertViewHas('past_uploaders')
->assertViewHas('freeleech_tokens')
->assertViewHas('bookmarks');
}
}
+2
View File
@@ -2,6 +2,7 @@
namespace Tests;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Foundation\Testing\TestCase as BaseTestCase;
use JMac\Testing\Traits\HttpTestAssertions;
@@ -9,4 +10,5 @@ abstract class TestCase extends BaseTestCase
{
use CreatesApplication;
use HttpTestAssertions;
use RefreshDatabase;
}