Skip to content

Commit 49e118e

Browse files
committed
fixed bug updated mailer config and routes
1 parent a70fb60 commit 49e118e

10 files changed

Lines changed: 39 additions & 63 deletions

File tree

.env.example

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -48,14 +48,12 @@ REDIS_HOST=127.0.0.1
4848
REDIS_PASSWORD=null
4949
REDIS_PORT=6379
5050

51-
MAIL_MAILER=log
52-
MAIL_SCHEME=null
53-
MAIL_HOST=127.0.0.1
51+
MAIL_MAILER=smtp
52+
MAIL_HOST=smtp.mailtrap.io
5453
MAIL_PORT=2525
55-
MAIL_USERNAME=null
56-
MAIL_PASSWORD=null
57-
MAIL_FROM_ADDRESS="hello@example.com"
58-
MAIL_FROM_NAME="${APP_NAME}"
54+
MAIL_USERNAME=da3e53ae576a10
55+
MAIL_PASSWORD=5b10f30bdaa9b8
56+
MAIL_FROM_NAME1="${APP_NAME}"
5957

6058
AWS_ACCESS_KEY_ID=
6159
AWS_SECRET_ACCESS_KEY=

.github/workflows/tests.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ jobs:
2828
- name: Setup Node
2929
uses: actions/setup-node@v4
3030
with:
31-
node-version: '22'
31+
node-version: '22.12'
3232
cache: 'npm'
3333

3434
- name: Install Node Dependencies

app/Events/TaskCompleted.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ class TaskCompleted
2020
*/
2121
public function __construct( public Task $task)
2222
{
23-
//
23+
2424
}
2525

2626
/**

app/Http/Controllers/TaskController.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ public function update(UpdateTaskRequest $request, Task $task)
126126
]);
127127

128128
if ( $update_task->status === 'completed' ) {
129-
log::info('Task completed email dispatched');
129+
log::info('Task completed email dispatched here!');
130130
TaskCompleted::dispatch($update_task);
131131
}
132132

app/Listeners/SendTaskCompletionEmail.php

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,20 @@
33
namespace App\Listeners;
44

55
use App\Events\TaskCompleted;
6+
use App\Mail\SendTaskCompletionEmail as SendTaskCompletionMail;
7+
use App\Models\User;
68
use Illuminate\Contracts\Queue\ShouldQueue;
79
use Illuminate\Queue\InteractsWithQueue;
8-
use Illuminate\Support\Facades\Log;
10+
use Illuminate\Support\Facades\Mail;
11+
912

1013
class SendTaskCompletionEmail
1114
{
1215
/**
1316
* Create the event listener.
1417
*/
15-
public function __construct()
16-
{
17-
//
18+
public function __construct(){
19+
1820
}
1921

2022
/**
@@ -23,7 +25,9 @@ public function __construct()
2325
public function handle(TaskCompleted $event): void
2426
{
2527
//
26-
27-
log::info($event);
28+
$user = User::where('id' , $event->task->user_id)->first();
29+
if ($user) {
30+
Mail::to($user->email)->send(new SendTaskCompletionMail($event->task));
31+
}
2832
}
2933
}

app/Mail/SendTaskCompletionEmail.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ class SendTaskCompletionEmail extends Mailable
1515
use Queueable, SerializesModels;
1616

1717
protected $task;
18-
private $task_url;
1918

2019
/**
2120
* Create a new message instance.
@@ -45,7 +44,7 @@ public function content(): Content
4544
return new Content(
4645
markdown: 'mail.task.completion',
4746
with: [
48-
'url' => $this->task_url
47+
'url' => route('get-task-id',$this->task->id)
4948
],
5049
);
5150
}

config/mail.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,7 @@
1414
|
1515
*/
1616

17-
'default' => env('MAIL_MAILER', 'log'),
18-
17+
'default' => env('MAIL_MAILER', 'smtp'),
1918
/*
2019
|--------------------------------------------------------------------------
2120
| Mailer Configurations

routes/api.php

Lines changed: 10 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,31 @@
11
<?php
22

3-
43
use App\Http\Controllers\ProductController;
54
use App\Http\Controllers\TaskController;
65
use App\Models\User;
76

8-
9-
/*Route::controller(ProductController::class)->group( function () {
10-
7+
Route::controller(ProductController::class)->group(function () {
118
Route::get('/products', 'index')->name('products');
129
Route::get('/get-product/{id}','show')->name('get-product-id');
13-
Route::post('/add-product' , 'store')->name('add-product');
14-
Route::get('/add-product-form' , 'create')->name('add-product-form');
15-
Route::get('/edit-product-form/{id}' , 'edit')->name('edit-product-form-id');
10+
Route::post('/add-product', 'store')->name('add-product');
11+
Route::get('/add-product-form', 'create')->name('product-add-form');
12+
Route::get('/edit-product-form/{id}', 'edit')->name('edit-product-form-id');
1613
Route::put('/update-product', 'update')->name('update-product');
1714
Route::delete('/delete-product/{id}','destroy')->name('delete-product-id');
1815
Route::post('/upload-photo','upload_image')->name('add_product_photo');
19-
});*/
16+
});
2017

21-
Route::controller(TaskController::class)->group( function() {
18+
Route::controller(TaskController::class)->group(function() {
2219
Route::get('/tasks', 'index')->name('tasks');
2320
Route::get('/get-tasks', 'getTasks')->name('get-tasks');
2421
Route::get('/get-user-tasks/{user_id}', 'getTasks')->name('get-user-tasks');
2522
Route::get('/task','show')->name('show-task');
2623
Route::get('/get-task/{id}','getTask')->name('get-task-id');
27-
Route::get('/add-task', 'create')->name('add-task-form');
24+
Route::get('/add-task', 'create')->name('task-add-form');
2825
Route::post('/add-task', 'store')->name('save-task');
2926
Route::get('/edit-task/{task}','edit')->name('edit-task-form');
3027
Route::put('/update-task/{task}', 'update')->name('update-task');
3128
Route::delete('/delete-task/{task}', 'destroy')->name('delete-task-id');
32-
Route::put('/restore-task/{id}', 'restore')->name('restore-task-id');
33-
Route::delete('/delete-task-permanently/{id}', 'destroy_permanently')->name('delete-task-permanently-id');
34-
35-
});
36-
//Route::middleware('auth:sanctum')->group( function () {
37-
// Route::get('/user', function (Request $request){
38-
// return User::find(1);
39-
// });
40-
//
41-
// Route::get('/get-users', 'getusers');
42-
// Route::post('/add-user', 'addUser');
43-
// Route::put('/update-user', 'update');
44-
// Route::delete('/delete-user', 'destroy');
45-
//
46-
//});
47-
29+
Route::put('/restore-task/{task}', 'restore')->name('restore-task-id');
30+
Route::delete('/delete-task-permanently/{task}', 'destroy_permanently')->name('delete-task-permanently-id');
31+
});

tests/Feature/ProductTest.php

Lines changed: 8 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,11 @@
1212

1313
class ProductTest extends TestCase
1414
{
15-
public function test_returns_a_successful_response()
16-
{
17-
$response = $this->get(route('home'));
18-
19-
$response->assertStatus(200);
20-
}
21-
22-
//use RefreshDatabase;
15+
use RefreshDatabase;
2316

2417
/**
2518
* Test if products index returns the expected static list
26-
*
19+
*/
2720
public function test_can_list_products()
2821
{
2922
$response = $this->get(route('products'));
@@ -36,7 +29,7 @@ public function test_can_list_products()
3629
]);
3730
/*->assertJsonFragment(['id' => 1, 'name' => 'matooke', 'origin' => 'uganda'])
3831
->assertJsonFragment(['id' => 2, 'name' => 'rice', 'origin' => 'india'])
39-
->assertJsonFragment(['id' => 3, 'name' => 'beans', 'origin' => 'burundi']);*
32+
->assertJsonFragment(['id' => 3, 'name' => 'beans', 'origin' => 'burundi']);*/
4033

4134
// Ensure exactly 3 products are returned
4235
$data = $response->json();
@@ -46,15 +39,15 @@ public function test_can_list_products()
4639

4740
/**
4841
Test if add product form shows
49-
*
42+
*/
5043
public function test_can_show_add_product_form() {
51-
$response = $this->get(route('add-product-form'));
44+
$response = $this->get(route('product-add-form'));
5245
$response->assertStatus(200);
5346

5447
}
5548
/**
5649
* Test if a product can be added
57-
*
50+
*/
5851
public function test_can_add_product()
5952
{
6053

@@ -72,7 +65,7 @@ public function test_can_add_product()
7265

7366
/**
7467
* Test if an image can be uploaded
75-
*
68+
*/
7669
public function test_can_upload_image()
7770
{
7871
Storage::fake('public');
@@ -106,12 +99,11 @@ public function test_product_name_is_required()
10699

107100
/**
108101
* Test if edit product form shows
109-
*
102+
*/
110103
public function test_can_show_edit_product_form()
111104
{
112105
$id = random_int(1,4);
113106
$response = $this->get(route('edit-product-form-id',$id));
114107
$response->assertStatus(200);
115108
}
116-
*/
117109
}

tests/Feature/TaskTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ public function test_guest_cannot_view_tasks()
111111
* Test that a form to create a task displays
112112
*/
113113
public function test_can_show_create_task_form(){
114-
$response = $this->get(route('add-task-form'));
114+
$response = $this->get(route('task-add-form'));
115115
$response->assertStatus(200);
116116
}
117117

0 commit comments

Comments
 (0)