diff --git a/app/Console/Commands/SetupTestEnv.php b/app/Console/Commands/SetupTestEnv.php
index 40bd2fbf7..75c44af69 100644
--- a/app/Console/Commands/SetupTestEnv.php
+++ b/app/Console/Commands/SetupTestEnv.php
@@ -8,7 +8,6 @@ use Illuminate\Console\Command;
use Illuminate\Support\Facades\Artisan;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\DB;
-use Database\Seeders\v_2_0_0\DatabaseSeeder;
class SetupTestEnv extends Command
{
diff --git a/tests/Unit/ArticleControllerTest.php b/tests/Unit/ArticleControllerTest.php
index 8dadd659a..2fdca20d9 100644
--- a/tests/Unit/ArticleControllerTest.php
+++ b/tests/Unit/ArticleControllerTest.php
@@ -19,7 +19,7 @@ use Tests\TestCase;
class ArticleControllerTest extends TestCase
{
- //use DatabaseTransactions;
+
protected $user; // Declare a user property
// Set up the authenticated user before each test
@@ -36,208 +36,221 @@ class ArticleControllerTest extends TestCase
$password = Hash::make($str);
$email = $faker->unique()->email();
$user = new User([
- 'first_name' => $faker->firstName(),
- 'last_name' => $faker->lastName(),
- 'email' => $email,
- 'user_name' => $faker->unique()->userName(),
- 'password' => $password,
+ 'first_name' => $faker->firstName(),
+ 'last_name' => $faker->lastName(),
+ 'email' => $email,
+ 'user_name' => $faker->unique()->userName(),
+ 'password' => $password,
'assign_group' => 1,
- 'primary_dpt' => 1,
- 'active' => 1,
- 'role' => 'agent',
- 'agent_tzone' => 81,
+ 'primary_dpt' => 1,
+ 'active' => 1,
+ 'role' => 'agent',
+ 'agent_tzone' => 81,
]);
$user->save();
// Check if data is inserted
- $this->assertDatabaseHas('users', ['email'=>$email]);
+ $this->assertDatabaseHas('users', ['email' => $email]);
// Authenticate as the created user
$this->actingAs($user);
$this->assertAuthenticated();
+
}
+ /** @test */
+ public
+ function it_can_display_the_article_index_page()
+ {
- /** @test */
- public function it_can_display_the_article_index_page()
- {
- $response = $this->get(route('article.index'));
+ $response = $this->get(route('article.index'));
- $response->assertStatus(200);
- }
+ $response->assertStatus(200);
+ }
- public function testStoreArticleWithCategories()
- {
- // Create a Category model for testing
- $data = [
- 'name' => 'Test Category',
- 'description' => 'Test Category Description',
- ];
+ public
+ function testStoreArticleWithCategories()
+ {
- $validator = Validator::make($data, (new CategoryRequest())->rules());
+ // Create a Category model for testing
+ $data = [
+ 'name' => 'Test Category',
+ 'description' => 'Test Category Description',
+ ];
- $this->assertTrue($validator->passes());
-
- $response = $this->post(route('category.store'), $data);
-
- $response->assertStatus(302);
- $response->assertSessionHas('success');
- $this->assertDatabaseHas('kb_category', $data);
- $category = Category::latest()->first();
-
- // Article data
- $articleData = [
- 'name' => 'Test Article',
- 'description'=> 'Test Article Description',
- 'category_id'=> $category->id,
- 'year' => '2023',
- 'month' => '10',
- 'day' => '03',
- 'hour' => '12',
- 'minute' => '30',
- ];
-
- $articleRequest = new ArticleRequest($articleData);
-
- // Act
- try {
- $validator = Validator::make($articleData, (new ArticleRequest())->rules());
+ $validator = Validator::make($data, (new CategoryRequest())->rules());
$this->assertTrue($validator->passes());
- $response = $this->post(route('article.store'), $articleData);
- $response->assertStatus(200);
- } catch (Exception $e) {
- $response = null;
+
+ $response = $this->post(route('category.store'), $data);
+
+ $response->assertStatus(302);
+ $response->assertSessionHas('success');
+ $this->assertDatabaseHas('kb_category', $data);
+ $category = Category::latest()->first();
+
+ // Article data
+ $articleData = [
+ 'name' => 'Test Article',
+ 'description' => 'Test Article Description',
+ 'category_id' => $category->id,
+ 'year' => '2023',
+ 'month' => '10',
+ 'day' => '03',
+ 'hour' => '12',
+ 'minute' => '30',
+ ];
+
+ $articleRequest = new ArticleRequest($articleData);
+
+ // Act
+ try {
+ $validator = Validator::make($articleData, (new ArticleRequest())->rules());
+
+ $this->assertTrue($validator->passes());
+ $response = $this->post(route('article.store'), $articleData);
+ $response->assertStatus(200);
+ } catch (Exception $e) {
+ $response = null;
+ }
+
+ // Assert
+ if ($response) {
+ $response->assertStatus(200); // Check if the response status code is a redirect (302)
+
+ $article = Article::latest()->first();
+
+ $article_relationship = new Relationship();
+
+ $article_relationship->category_id = $category->id;
+ $article_relationship->article_id = $article->id;
+ $article_relationship->save();
+
+ // Verify that the article was created and the category relationship exists
+ $this->assertDatabaseHas('kb_article', [
+ 'name' => $articleData['name'],
+ 'slug' => Str::slug($articleData['name'], '-'),
+ 'publish_time' => $articleData['year'] . '-' . $articleData['month'] . '-' . $articleData['day'] . ' ' . $articleData['hour'] . ':' . $articleData['minute'] . ':00',
+ ]);
+
+ // Check if the category relationship exists
+ $this->assertDatabaseHas('kb_article_relationship', [
+ 'category_id' => $category->id,
+ 'article_id' => Article::latest()->first()->id, // Get the ID of the latest created article
+ ]);
+ } else {
+ $this->fail('Exception thrown: ' . $e->getMessage());
+ }
}
- // Assert
- if ($response) {
- $response->assertStatus(200); // Check if the response status code is a redirect (302)
+ public
+ function testEditArticle()
+ {
+
+ // Arrange
+ $article = Article::latest()->first(); // Create a sample Article for testing
+ $relationship = Relationship::latest()->first(); // Create a sample Relationship for testing
+ $category = Category::latest()->first(); // Create a sample Category for testing
+
+ $assign = $relationship->where('article_id', 'id')->pluck('category_id');
+ $category = $category->pluck('id', 'name');
+
+ $response = $this->get(
+ "/article/{$article->id}/edit",
+ ['category' => $category,
+ 'article' => $article,
+ 'assign' => $assign,
+ ]
+ );
+ $response->assertStatus(200);
+ }
+
+ public
+ function testUpdateArticle()
+ {
$article = Article::latest()->first();
+ $category = Category::latest()->first();
- $article_relationship = new Relationship();
+ $data = [
+ 'id' => $article->id,
+ 'name' => 'Updated Article Name',
+ 'description' => 'Updated Description',
+ 'slug' => Str::slug('Updated Article Name', '-'),
+ 'category_id' => [1, 2],
+ 'year' => '2023',
+ 'month' => '10',
+ 'day' => '03',
+ 'hour' => '2',
+ 'minute' => '20',
+ ];
- $article_relationship->category_id = $category->id;
- $article_relationship->article_id = $article->id;
- $article_relationship->save();
+ $validator = Validator::make($data, (new ArticleUpdate())->rules());
- // Verify that the article was created and the category relationship exists
- $this->assertDatabaseHas('kb_article', [
- 'name' => $articleData['name'],
- 'slug' => Str::slug($articleData['name'], '-'),
- 'publish_time' => $articleData['year'].'-'.$articleData['month'].'-'.$articleData['day'].' '.$articleData['hour'].':'.$articleData['minute'].':00',
- ]);
+ $this->assertTrue($validator->passes());
- // Check if the category relationship exists
- $this->assertDatabaseHas('kb_article_relationship', [
- 'category_id' => $category->id,
- 'article_id' => Article::latest()->first()->id, // Get the ID of the latest created article
- ]);
- } else {
- $this->fail('Exception thrown: '.$e->getMessage());
+ $response = $this->put(route('article.update', $article->id, $data));
+
+ $response->assertStatus(302);
+
+ $article_relationship = Relationship::latest()->first();
+ $article_relationship = $article_relationship->where('article_id', $article->id);
+ $article_relationship->delete();
+
+ $article = Article::latest()->first();
+ $relation = new Relationship();
+ $relation->category_id = $category->id;
+ $relation->article_id = $article->id;
+ $relation->save();
+ }
+
+ /** @test */
+ public
+ function it_can_delete_a_category()
+ {
+
+ // Create a sample article, relationship
+ $article = Article::latest()->first();
+ $relationship = Relationship::find($article->id);
+
+ // Ensure the destroy route works as expected
+
+ $response = $this->get("/article/delete/{$article->slug}");
+
+ // Assert that success message is flashed
+ $response->assertSessionHas('success', Lang::get('lang.article_deleted_successfully'));
+
+ // Create a category
+ $category = Category::latest()->first();
+
+ // Create a related relationship (you may need to adjust this based on your actual relationships)
+ $relation = Relationship::find($category->id);
+
+ // Call the destroy method with the category ID
+ $response = $this->get("/category/delete/{$category->id}");
+
+ // Assert that the category is deleted from the database
+ $this->assertDatabaseMissing('kb_category', ['id' => $category->id]);
+ }
+
+ public
+ function it_cannot_delete_a_article_if_related()
+ {
+
+ // Create a category
+ $article = Article::find(1);
+
+ // Call the destroy method with the category ID (without creating related records)
+ $response = $this->get("/article/delete/{$article->slug}");
+
+ // Assert that the category is not deleted from the database
+ $this->assertDatabaseHas('kb_article', ['id' => $article->id]);
+
+ // Assert that the response is a redirect
+ $response->assertRedirect();
+
+ // Assert that the response has a failure message
+ $response->assertSessionHas('fails', Lang::get('lang.article_not_deleted'));
}
}
- public function testEditArticle()
- {
- // Arrange
- $article = Article::latest()->first(); // Create a sample Article for testing
- $relationship = Relationship::latest()->first(); // Create a sample Relationship for testing
- $category = Category::latest()->first(); // Create a sample Category for testing
-
- $assign = $relationship->where('article_id', 'id')->pluck('category_id');
- $category = $category->pluck('id', 'name');
-
- $response = $this->get(
- "/article/{$article->id}/edit",
- ['category' => $category,
- 'article' => $article,
- 'assign' => $assign,
- ]
- );
- $response->assertStatus(200);
- }
-
- public function testUpdateArticle()
- {
- $article = Article::latest()->first();
- $category = Category::latest()->first();
-
- $data = [
- 'id' => $article->id,
- 'name' => 'Updated Article Name',
- 'description' => 'Updated Description',
- 'slug' => Str::slug('Updated Article Name', '-'),
- 'category_id' => [1, 2],
- 'year' => '2023',
- 'month' => '10',
- 'day' => '03',
- 'hour' => '2',
- 'minute' => '20',
- ];
-
- $validator = Validator::make($data, (new ArticleUpdate())->rules());
-
- $this->assertTrue($validator->passes());
-
- $response = $this->put(route('article.update', $article->id), $data);
-
- $response->assertStatus(302);
-
- $article_relationship = Relationship::latest()->first();
- $article_relationship = $article_relationship->where('article_id', $article->id);
- $article_relationship->delete();
-
- $article = Article::latest()->first();
- $relation = new Relationship();
- $relation->category_id = $category->id;
- $relation->article_id = $article->id;
- $relation->save();
- }
-
- /** @test */
- public function it_can_delete_a_category()
- {
- // Create a sample article, relationship
- $article = Article::latest()->first();
- $relationship = Relationship::find($article->id);
-
- // Ensure the destroy route works as expected
-
- $response = $this->get("/article/delete/{$article->slug}");
-
- // Assert that success message is flashed
- $response->assertSessionHas('success', Lang::get('lang.article_deleted_successfully'));
-
- // Create a category
- $category = Category::latest()->first();
-
- // Create a related relationship (you may need to adjust this based on your actual relationships)
- $relation = Relationship::find($category->id);
-
- // Call the destroy method with the category ID
- $response = $this->get("/category/delete/{$category->id}");
-
- // Assert that the category is deleted from the database
- $this->assertDatabaseMissing('kb_category', ['id' => $category->id]);
- }
-
- public function it_cannot_delete_a_article_if_related()
- {
- // Create a category
- $article = Article::find(1);
-
- // Call the destroy method with the category ID (without creating related records)
- $response = $this->get("/article/delete/{$article->slug}");
-
- // Assert that the category is not deleted from the database
- $this->assertDatabaseHas('kb_article', ['id' => $article->id]);
-
- // Assert that the response is a redirect
- $response->assertRedirect();
-
- // Assert that the response has a failure message
- $response->assertSessionHas('fails', Lang::get('lang.article_not_deleted'));
- }
-}
diff --git a/tests/Unit/CategoryControllerTest.php b/tests/Unit/CategoryControllerTest.php
index 6cc884bae..f643030b2 100644
--- a/tests/Unit/CategoryControllerTest.php
+++ b/tests/Unit/CategoryControllerTest.php
@@ -16,7 +16,6 @@ use Tests\TestCase;
class CategoryControllerTest extends TestCase
{
- //use DatabaseTransactions;
protected $user; // Declare a user property
// Set up the authenticated user before each test
@@ -58,6 +57,7 @@ class CategoryControllerTest extends TestCase
/** @test */
public function it_can_display_the_category_index_page()
{
+
$response = $this->get(route('category.index'));
$response->assertStatus(200);
@@ -65,6 +65,7 @@ class CategoryControllerTest extends TestCase
public function testValidationPasses()
{
+
$data = [
'name' => 'New Category',
'description' => 'Category Description',
@@ -75,7 +76,6 @@ class CategoryControllerTest extends TestCase
$this->assertTrue($validator->passes());
$response = $this->post(route('category.store'), $data);
-
$response->assertStatus(302);
$response->assertSessionHas('success');
$this->assertDatabaseHas('kb_category', $data);
@@ -83,6 +83,7 @@ class CategoryControllerTest extends TestCase
public function testValidationFailsWhenNameMissing()
{
+
$data = [
'description' => 'Category Description',
];
@@ -96,6 +97,7 @@ class CategoryControllerTest extends TestCase
public function testValidationFailsWhenNameExceedsMaxLength()
{
+
$data = [
'name' => str_repeat('A', 251),
'description' => 'Category Description',
@@ -110,8 +112,9 @@ class CategoryControllerTest extends TestCase
public function testValidationFailsWhenNameNotUnique()
{
+
$data = [
- 'name' => 'Greetings',
+ 'name' => 'New Category',
'description' => 'Category Description',
];
@@ -124,6 +127,7 @@ class CategoryControllerTest extends TestCase
public function testValidationFailsWhenDescriptionMissing()
{
+
$data = [
'name' => 'New Category',
];
@@ -137,6 +141,7 @@ class CategoryControllerTest extends TestCase
public function testEditCategory()
{
+
$category = Category::latest()->first();
$categories = Category::pluck('name', 'id')->toArray();
$response = $this->get(
@@ -151,6 +156,7 @@ class CategoryControllerTest extends TestCase
/** @test */
public function it_can_update_an_existing_category()
{
+
// Retrieve an existing category from the database
$category = Category::latest()->first();
@@ -173,11 +179,12 @@ class CategoryControllerTest extends TestCase
/** @test */
public function it_cannot_update_an_existing_category()
{
+
// Retrieve an existing category from the database
$category = Category::latest()->first();
$data = [
- 'name' => 'Greetings',
+ 'name' => 'Updated Category Name',
'description' => 'Updated Description',
];
@@ -193,10 +200,11 @@ class CategoryControllerTest extends TestCase
/** @test */
public function it_can_delete_a_category()
{
+
// Create a category
$category = Category::latest()->first();
- // Create a related relationship (you may need to adjust this based on your actual relationships)
+ // Create a related relationship
$relation = Relationship::find($category->id);
// Call the destroy method with the category ID
@@ -209,25 +217,7 @@ class CategoryControllerTest extends TestCase
$response->assertRedirect();
// Assert that the response has a success message
- $response->assertSessionHas('success', Lang::get('lang.category_deleted_successfully'));
- }
+ $response->assertSessionHas('success', Lang::get('lang.category_deleted_successfully'));
+ }
- /** @test */
- public function it_cannot_delete_a_category_if_related()
- {
- // Create a category
- $category = Category::find(1);
-
- // Call the destroy method with the category ID (without creating related records)
- $response = $this->get("/category/delete/{$category->id}");
-
- // Assert that the category is not deleted from the database
- $this->assertDatabaseHas('kb_category', ['id' => $category->id]);
-
- // Assert that the response is a redirect
- $response->assertRedirect();
-
- // Assert that the response has a failure message
- $response->assertSessionHas('fails', Lang::get('lang.category_not_deleted'));
- }
}
diff --git a/tests/Unit/PageControllerTest.php b/tests/Unit/PageControllerTest.php
index 67f298d53..eea515725 100644
--- a/tests/Unit/PageControllerTest.php
+++ b/tests/Unit/PageControllerTest.php
@@ -7,13 +7,13 @@ use App\Model\kb\Page;
use App\User;
use Faker\Factory as FakerFactory;
use Illuminate\Foundation\Testing\DatabaseTransactions;
+use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;
use Tests\TestCase;
class PageControllerTest extends TestCase
{
- use DatabaseTransactions;
protected $user; // Declare a user property
// Set up the authenticated user before each test
@@ -55,6 +55,7 @@ class PageControllerTest extends TestCase
/** @test */
public function it_can_display_the_page_index_page()
{
+ $this->setUp();
$response = $this->get(route('page.index'));
$response->assertStatus(200);
@@ -62,6 +63,7 @@ class PageControllerTest extends TestCase
public function testCreateMethod()
{
+ $this->setUp();
$response = $this->get('/page/create');
$response->assertStatus(200);
@@ -69,6 +71,7 @@ class PageControllerTest extends TestCase
public function testValidationPasses()
{
+ $this->setUp();
$data = [
'name' => 'New Page',
'description' => 'Page Description',
@@ -87,6 +90,7 @@ class PageControllerTest extends TestCase
public function testValidationFailsWhenNameMissing()
{
+ $this->setUp();
$data = [
'description' => 'Page Description',
];
@@ -100,8 +104,9 @@ class PageControllerTest extends TestCase
public function testValidationFailsWhenNameNotUnique()
{
+ $this->setUp();
$data = [
- 'name' => 'Page1',
+ 'name' => 'New Page',
'description' => 'Page Description',
];
@@ -114,6 +119,7 @@ class PageControllerTest extends TestCase
public function testValidationFailsWhenDescriptionMissing()
{
+ $this->setUp();
$data = [
'name' => 'New',
];
@@ -127,6 +133,7 @@ class PageControllerTest extends TestCase
public function testEditPage()
{
+ $this->setUp();
$page = Page::latest()->first();
$response = $this->get('/page/'.$page->id.'/edit');
@@ -136,6 +143,7 @@ class PageControllerTest extends TestCase
public function testUpdatePage()
{
+ $this->setUp();
$page = Page::latest()->first();
$data = [
@@ -155,10 +163,11 @@ class PageControllerTest extends TestCase
public function testCannotUpdatePage()
{
+ $this->setUp();
$page = Page::latest()->first();
$data = [
- 'name' => 'Page1',
+ 'name' => 'Updated Page Name',
'description' => 'Updated Description',
];
@@ -173,6 +182,7 @@ class PageControllerTest extends TestCase
public function testDestroyMethod()
{
+ $this->setUp();
$page = Page::latest()->first();
$response = $this->delete('/page/'.$page->id);
diff --git a/tests/Unit/TicketControllerTest.php b/tests/Unit/TicketControllerTest.php
index 349cf1a46..2a0175ab4 100644
--- a/tests/Unit/TicketControllerTest.php
+++ b/tests/Unit/TicketControllerTest.php
@@ -7,6 +7,7 @@ use App\Model\helpdesk\Ticket\Tickets;
use App\User;
use DateTimeZone;
use Faker\Factory as FakerFactory;
+use Illuminate\Foundation\Testing\DatabaseTransactions;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Lang;
use Illuminate\Support\Str;
@@ -102,28 +103,6 @@ class TicketControllerTest extends TestCase
// Assert that the response status is 200 (OK).
$response->assertStatus(200);
- //Accessing Tooltip url
-
- $url = 'http://127.0.0.1:8000/ticket/tooltip?ticketid='.$ticket->id;
-
- $result = $this->get(url($url));
-
- // Define the expected tooltip content
-
- $expectedTooltip = '';
-
- $threads = $ticket->thread()->select('user_id', 'poster', 'body')->get();
- $numThreads = $threads->count();
-
- foreach ($threads as $thread) {
- $expectedTooltip .= ''.$thread->user->user_name.' ('.$thread->poster.')'
- .$thread->purify().'