Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/Ticket_Issue' into development
Browse files Browse the repository at this point in the history
  • Loading branch information
faveobot committed Oct 26, 2023
2 parents 3237bf8 + 20e9884 commit 13b88b5
Show file tree
Hide file tree
Showing 5 changed files with 213 additions and 8 deletions.
2 changes: 1 addition & 1 deletion app/Http/Controllers/Agent/helpdesk/TicketController.php
Original file line number Diff line number Diff line change
Expand Up @@ -437,7 +437,7 @@ public function reply(Ticket_Thread $thread, Request $request, Ticket_attachment

return response()->json(compact('result'));
}
$result = ['success' => 'Replyed successfully'];
$result = ['success' => Lang::get('lang.you_have_successfully_replied_to_your_ticket')];

return response()->json(compact('result'));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1829,17 +1829,21 @@ function formatBytes(bytes,decimals) {
$("#t1").hide();
$("#show3").show();
$('html, body').animate({
scrollTop: $("#form3").offset().top
scrollTop: $("#inboxactions").offset().top
}, 500);
},
success: function(json) {
$("#show3").hide();
$("#t1").show();
setTimeout(function () {
location.reload();
}, 4000);
$("#alert21").show();
$('#message-success2').html(json.result.success);
location.reload();
// $('html, body').animate({ scrollTop: $("#heading").offset().top }, 500);
},
error: function(json) {
error: function(json) {
$("#show3").hide();
$("#t1").show();
var res = "";
Expand All @@ -1851,6 +1855,7 @@ function formatBytes(bytes,decimals) {
}
})
return false;
});
// Surrender
$('#Surrender').on('click', function() {
Expand Down Expand Up @@ -2152,7 +2157,7 @@ function lockAjaxCall(locktime){
// $("#alert21").show();
// $('#message-success2').html(message);
$('#replybtn').attr('disabled', false);
// setInterval(function(){$("#alert21").hide(); },8000);
// setInterval(function(){$("#alert21").hide(); },8000);
} else if (response == 1 || response == 4){
// alert(response);
// var message = "{{Lang::get('lang.access-ticket')}}"+locktime/(60*1000)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,8 @@ class="nav-item active"
<td class="mailbox-priority"><spam>{{$priority->priority}}</spam></td>

<td class="mailbox-last-reply" style="color: {!! $rep !!}">{!! $username !!}</td>
<td class="mailbox-last-activity">{!! $title->updated_at !!}</td>
<?php $updated = $title->updated_at ?>
<td class="mailbox-last-activity">{!! UTC::usertimezone($updated) !!}</td>
<?php $status = App\Model\helpdesk\Ticket\Ticket_Status::where('id', '=', $ticket->status)->first(); ?>
<td class="mailbox-date">{!! $status->name !!}</td>
</tr>
Expand Down
1 change: 1 addition & 0 deletions routes/web.php
Original file line number Diff line number Diff line change
Expand Up @@ -347,6 +347,7 @@

Route::post('/newticket/post', [Agent\helpdesk\TicketController::class, 'post_newticket'])->name('post.newticket'); /* Post Create New Ticket */
Route::get('/thread/{id}', [Agent\helpdesk\TicketController::class, 'thread'])->name('ticket.thread'); /* Get Thread by ID */
Route::get('ticket/tooltip', [Agent\helpdesk\TicketController::class, 'getTooltip'])->name('ticket.tooltip');

Route::post('/thread/reply/{id}', [Agent\helpdesk\TicketController::class, 'reply'])->name('ticket.reply'); /* Patch Thread Reply */
Route::patch('/internal/note/{id}', [Agent\helpdesk\TicketController::class, 'InternalNote'])->name('Internal.note'); /* Patch Internal Note */
Expand Down
198 changes: 198 additions & 0 deletions tests/Unit/TicketControllerTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,198 @@
<?php

namespace Tests\Unit;

use App\Model\helpdesk\Ticket\Ticket_Thread;
use App\Model\helpdesk\Ticket\Tickets;
use App\User;
use DateTimeZone;
use Faker\Factory as FakerFactory;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Lang;
use Illuminate\Support\Str;
use Tests\TestCase;
use UTC;

class TicketControllerTest extends TestCase
{
/**
* A basic unit test example.
*
* @return void
*/
public function test_tooltip()
{
$faker = FakerFactory::create();

//Create User -> Agent

//$str = Str::random(10);
$str = 'demopass';
$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,
'assign_group' => 1,
'primary_dpt' => 1,
'active' => 1,
'role' => 'agent',
'agent_tzone' => 81,
]);
$user->save();

// Check if data is inserted
$this->assertDatabaseHas('users', ['email'=>$email]);

// Authenticate as the created user
$this->actingAs($user);

$this->assertAuthenticated();

// Define the dashboard route name
$dashboardRouteName = 'dashboard';

// Generate the dashboard route URL
$dashboardUrl = route($dashboardRouteName);

// Simulate a GET request to the dashboard route
$dashboardResponse = $this->get($dashboardUrl);

// Assert that the response status code is 200 (OK)
$dashboardResponse->assertStatus(200);

// Create a ticket for testing.

$ticket = new Tickets(
[
'ticket_number' => 'TEST-0000-000'.$faker->randomDigit(),
'user_id' => $user->id,
'priority_id' => 2,
'sla' => 2,
'help_topic_id' => 1,
'status' => 1,
'source' => 1,
]
);

$ticket->save();
$ticket->dept_id = 1;
$ticket->save();

//Create Ticket_thread for Testing

$ticket_thread = new Ticket_Thread(
[
'ticket_id' => $ticket->id,
'user_id' => $user->id,
'poster' => 'client',
'title' => 'TestCase2',
'body' => 'Testing2',
]
);

$ticket_thread->save();

// Make a GET request to the getTooltip
$response = $this->get(route('ticket.tooltip', ['ticket_id' => $ticket->id]));

// 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 .= '<b>'.$thread->user->user_name.' ('.$thread->poster.')</b></br>'
.$thread->purify().'<br><hr>';
}

$expectedTooltip .= 'This ticket has '.$numThreads.' threads.';

// Assert that the response content contains the expected tooltip content
$result->assertSee($expectedTooltip, $escaped = false);
}

//Testing Reply Alert and Last Activity filed
public function test_reply()
{
$faker = FakerFactory::create();

// Get previously created user to authenticate

$user = User::latest()->first();

$this->actingAs($user);

$this->assertAuthenticated();

//Get previously created Ticket

$tickets = Tickets::latest()->first();

// Define the route URL with the Ticket ID

$url = route('ticket.thread', ['id' => $tickets->id]);

$response2 = $this->get($url);

// Assert that the response status is 200 (OK).
$response2->assertStatus(200);

// Create fake data for the reply

$replyData = [
'ticket_ID' => $tickets->id,
'reply_content' => $faker->paragraph,
'created_at' => date_default_timezone_set('UTC'),
'updated_at' => date_default_timezone_set('UTC'),
];

// Make a POST request to the route with the reply data
$response3 = $this->post(route('ticket.reply', ['id' => $tickets->id]), $replyData);
// Assert that the response has a successful HTTP status code (e.g., 200 OK) or an appropriate status code
$response3->assertStatus(200);
$response3->assertSee(Lang::get('lang.you_have_successfully_replied_to_your_ticket'));

//Accessing tickets to check last activity is updated

$response4 = $this->get(route('ticket2'));

$response4->assertStatus(200);

$result_date = $response4->getDate();

$userTimeZone = new DateTimeZone('Asia/Kolkata');

// Convert the DateTime object to the user's time zone

$result_date = $result_date->setTimezone($userTimeZone);

$result_date = $result_date->format('d/m/Y H:i:s');

//Converting Updated_at to User Timezone

$last_thread = Tickets::latest()->first();

$updated_at = $last_thread->updated_at;

$expected_date = UTC::usertimezone($updated_at);

// Asserting if the last_activity is updated correctly

$this->assertEquals($expected_date, $result_date);
}
}

0 comments on commit 13b88b5

Please sign in to comment.