Repository: livewire/livewire (php)

Issue:
Changing Default Class Namespace to "App" is getting error in livewire.php config
### Description
I want to change the Default Livewire Directory from `"App\\Http\\Livewire" ` to "App" but it is getting error

### Exact steps to reproduce
Go to livewire.php in config folder.
Change the default value of class_namespace to "App"
and execute the command below

`php artisan livewire:discover`

and this error will show

The "C:\laragon\www\my_project\app/App" directory does not exist.

if I change it to null or empty string, the generated class namespace will also be 

`namespace \Component\Component;`


any work around for this? Thank you.

**Context**
- Livewire version: [e.g. 2.3.1]
- Laravel version: [e.g. 8.3.1]
- Browser: [MS Edge]


Pull request:
Allow App namespace in config - closes #2107
This was mentioned in #2107 and it seems like something that should work. 

If the configured namespace is the same as the app default, it should now work as expected. 

Patch:
diff --git a/src/Commands/ComponentParser.php b/src/Commands/ComponentParser.php
index 696f1953..29db9c4f 100644
--- a/src/Commands/ComponentParser.php
+++ b/src/Commands/ComponentParser.php
@@ -200,8 +200,7 @@ class ComponentParser
 
     public static function generatePathFromNamespace($namespace)
     {
-        $name = str($namespace)->replaceFirst(app()->getNamespace(), '');
-
+        $name = str($namespace)->finish('\\')->replaceFirst(app()->getNamespace(), '');
         return app('path').'/'.str_replace('\\', '/', $name);
     }
 
diff --git a/src/Commands/MakeCommand.php b/src/Commands/MakeCommand.php
index ecef7aec..8f1e0591 100644
--- a/src/Commands/MakeCommand.php
+++ b/src/Commands/MakeCommand.php
@@ -48,7 +48,7 @@ class MakeCommand extends FileManipulationCommand
             }
 
             if ($test) {
-                $test && $this->line("<options=bold;fg=green>Test:</>  {$this->parser->relativeTestPath()}");
+                $test && $this->line("<options=bold;fg=green>TEST:</>  {$this->parser->relativeTestPath()}");
             }
 
             if ($showWelcomeMessage && ! app()->environment('testing')) {
diff --git a/src/WithPagination.php b/src/WithPagination.php
index 70cec18e..528f915e 100644
--- a/src/WithPagination.php
+++ b/src/WithPagination.php
@@ -10,7 +10,11 @@ trait WithPagination
 
     public function getQueryString()
     {
-        return array_merge(['page' => ['except' => 1]], $this->queryString);
+        $queryString = method_exists($this, 'queryString')
+            ? $this->queryString()
+            : $this->queryString;
+
+        return array_merge(['page' => ['except' => 1]], $queryString);
     }
 
     public function initializeWithPagination()
diff --git a/src/views/pagination/tailwind.blade.php b/src/views/pagination/tailwind.blade.php
index 6c5cf861..9d455dcf 100644
--- a/src/views/pagination/tailwind.blade.php
+++ b/src/views/pagination/tailwind.blade.php
@@ -41,7 +41,7 @@
                 </div>
 
                 <div>
-                    <span class="relative z-0 inline-flex shadow-sm">
+                    <span class="relative z-0 inline-flex rounded-md shadow-sm">
                         <span>
                             {{-- Previous Page Link --}}
                             @if ($paginator->onFirstPage())


Test patch:
diff --git a/src/Testing/TestableLivewire.php b/src/Testing/TestableLivewire.php
index cf4d85c8..4edc60d0 100644
--- a/src/Testing/TestableLivewire.php
+++ b/src/Testing/TestableLivewire.php
@@ -247,6 +247,8 @@ class TestableLivewire
             return $this->macroCall($method, $params);
         }
 
-        return $this->lastResponse->$method(...$params);
+        $this->lastResponse->$method(...$params);
+        
+        return $this;
     }
 }
diff --git a/tests/Unit/ComponentNameAndNamespaceTest.php b/tests/Unit/ComponentNameAndNamespaceTest.php
index 333900cb..03a8268a 100644
--- a/tests/Unit/ComponentNameAndNamespaceTest.php
+++ b/tests/Unit/ComponentNameAndNamespaceTest.php
@@ -88,4 +88,45 @@ EOT
 
         $this->assertEquals('custom-namespace', $component->instance()->getName());
     }
+
+    /** @test */
+    public function can_get_name_with_app_namespace()
+    {
+        config(['livewire.class_namespace' => 'App']);
+        $finder = new LivewireComponentsFinder(
+            new Filesystem,
+            app()->bootstrapPath('cache/livewire-components.php'),
+            ComponentParser::generatePathFromNamespace(config('livewire.class_namespace'))
+        );
+
+        app()->instance(LivewireComponentsFinder::class, $finder);
+
+        File::makeDirectory($this->livewireViewsPath());
+
+        File::put(
+            app_path() . '/AppNamespace.php',
+<<<EOT
+<?php
+
+namespace App;
+
+use Livewire\Component;
+
+class AppNamespace extends Component {}
+EOT
+        );
+
+        File::put(
+            $this->livewireViewsPath('app-namespace.blade.php'),
+            <<<EOT
+<div>I've been namespaced!</div>
+EOT
+        );
+
+        require(app_path('') . '/AppNamespace.php');
+        $component = Livewire::test('App\AppNamespace');
+
+        $this->assertEquals('app-namespace', $component->instance()->getName());
+        $this->assertContains('App\AppNamespace', $finder->getClassNames());
+    }
 }
diff --git a/tests/Unit/TestableLivewireCanAssertStatusCodesTest.php b/tests/Unit/TestableLivewireCanAssertStatusCodesTest.php
index 1c50af63..aff04e54 100644
--- a/tests/Unit/TestableLivewireCanAssertStatusCodesTest.php
+++ b/tests/Unit/TestableLivewireCanAssertStatusCodesTest.php
@@ -40,6 +40,15 @@ class TestableLivewireCanAssertStatusCodesTest extends TestCase
 
         $component->assertForbidden();
     }
+
+    /** @test */
+    public function can_assert_status_and_continue_making_livewire_assertions()
+    {
+        Livewire::test(NormalComponent::class)
+            ->assertStatus(200)
+            ->assertSee('Hello!')
+            ->assertSeeHtml('</example>');
+    }
 }
 
 class NotFoundComponent extends Component
@@ -65,3 +74,11 @@ class ForbiddenComponent extends Component
         throw new HttpException(403);
     }
 }
+
+class NormalComponent extends Component
+{
+    public function render()
+    {
+        return '<example>Hello!</example>';
+    }
+}