diff --git a/app/Http/Livewire/Profile/Settings/General.php b/app/Http/Livewire/Profile/Settings/General.php index e8a809acaf95..4b333431a671 100644 --- a/app/Http/Livewire/Profile/Settings/General.php +++ b/app/Http/Livewire/Profile/Settings/General.php @@ -32,6 +32,7 @@ class General extends Component 'first_name' => ['sometimes'], 'last_name' => ['sometimes'], 'email' => ['required', 'email'], + 'phone' => ['sometimes'], ]; public function mount() diff --git a/resources/views/portal/ninja2020/profile/settings/general.blade.php b/resources/views/portal/ninja2020/profile/settings/general.blade.php index c891f046160e..259f0c934ce4 100644 --- a/resources/views/portal/ninja2020/profile/settings/general.blade.php +++ b/resources/views/portal/ninja2020/profile/settings/general.blade.php @@ -7,7 +7,7 @@
-
+ @csrf @method('PUT')
@@ -15,7 +15,9 @@
- + @error('first_name')
{{ $message }} @@ -25,7 +27,9 @@
- + @error('last_name')
{{ $message }} @@ -35,7 +39,9 @@
- + @error('email')
{{ $message }} @@ -44,8 +50,9 @@
- - + + @error('phone')
{{ $message }} @@ -54,8 +61,9 @@
- - + + @error('password')
{{ $message }} @@ -64,8 +72,11 @@
- - + + @error('password_confirmation')
{{ $message }} @@ -75,7 +86,8 @@
- +
diff --git a/resources/views/portal/ninja2020/profile/settings/name-website-logo.blade.php b/resources/views/portal/ninja2020/profile/settings/name-website-logo.blade.php index cd1f88afcb9d..a99547730af9 100644 --- a/resources/views/portal/ninja2020/profile/settings/name-website-logo.blade.php +++ b/resources/views/portal/ninja2020/profile/settings/name-website-logo.blade.php @@ -13,45 +13,49 @@
- - + + @error('name') -
- {{ $message }} -
+
+ {{ $message }} +
@enderror
- - + + @error('vat_number') -
- {{ $message }} -
+
+ {{ $message }} +
@enderror
- - + + @error('phone') -
- {{ $message }} -
+
+ {{ $message }} +
@enderror
- + E.g. https://example.com
- + @error('website') -
- {{ $message }} -
+
+ {{ $message }} +
@enderror
diff --git a/tests/Browser/ClientPortal/ProfileSettingsTest.php b/tests/Browser/ClientPortal/ProfileSettingsTest.php index f685b5a6c8e6..2e5b5bcd71d3 100644 --- a/tests/Browser/ClientPortal/ProfileSettingsTest.php +++ b/tests/Browser/ClientPortal/ProfileSettingsTest.php @@ -47,7 +47,7 @@ class ProfileSettingsTest extends DuskTestCase { $original = [ 'name' => $this->faker->name, - 'vat_number' => $this->faker->randomNumber(6), + 'vat_number' => (string)$this->faker->randomNumber(6), 'phone' => $this->faker->phoneNumber, 'website' => $this->faker->url, ]; @@ -60,21 +60,67 @@ class ProfileSettingsTest extends DuskTestCase ->waitForText('Client Information'); $browser - ->type('name', $original['name']) - ->type('vat_number', $original['vat_number']) - ->type('phone', $original['phone']) - ->type('website', $original['website']) - ->press('Save') - ->refresh(); + ->with('#update_contact', function (Browser $form) use ($original) { + $form + ->type('#client_name', $original['name']) + ->type('#client_vat_number', $original['vat_number']) + ->type('#client_phone', $original['phone']) + ->type('#client_website', $original['website']) + ->press('Save'); + }) + ->pause(2000) + ->refresh() + ->pause(2000); $updated = [ - 'name' => $browser->inputValue('name'), - 'vat_number' => $browser->inputValue('vat_number'), - 'phone' => $browser->inputValue('phone'), - 'website' => $browser->inputValue('website') + 'name' => $browser->value('#client_name'), + 'vat_number' => $browser->value('#client_vat_number'), + 'phone' => $browser->value('#client_phone'), + 'website' => $browser->value('#client_website') ]; - $this->assertNotSame($original, $updated); + $this->assertSame($original, $updated); + }); + } + + public function testContactDetailsUpdate() + { + $original = [ + 'first_name' => $this->faker->firstName, + 'last_name' => $this->faker->lastName, + 'email_address' => 'user@example.com', + 'phone' => $this->faker->phoneNumber, + ]; + + $this->browse(function (Browser $browser) use ($original) { + $browser + ->visitRoute('client.invoices.index') + ->click('button[data-ref="client-profile-dropdown"]') + ->click('a[data-ref="client-profile-dropdown-settings"]') + ->waitForText('Client Information'); + + $browser + ->with('#update_client', function (Browser $form) use ($original) { + $form + ->type('#contact_first_name', $original['first_name']) + ->type('#contact_last_name', $original['last_name']) + ->scrollIntoView('#contact_email_address') + ->type('#contact_email_address', $original['email_address']) + ->type('#contact_phone', $original['phone']) + ->click('button[data-ref="update-contact-details"]'); + }) + ->pause(2000) + ->refresh() + ->pause(2000); + + $updated = [ + 'first_name' => $browser->value('#contact_first_name'), + 'last_name' => $browser->value('#contact_last_name'), + 'email_address' => $browser->value('#contact_email_address'), + 'phone' => $browser->value('#contact_phone'), + ]; + + $this->assertSame($original, $updated); }); } }