set('homeos.mqtt.device_host', '10.0.0.5:1883'); $this->assertSame('10.0.0.5:1883', HostAddress::broker()); // Override without a port gets the configured port appended. config()->set('homeos.mqtt.device_host', '10.0.0.5'); config()->set('homeos.mqtt.port', 1883); $this->assertSame('10.0.0.5:1883', HostAddress::broker()); } public function test_host_address_falls_back_to_the_request_host(): void { config()->set('homeos.mqtt.device_host', null); config()->set('homeos.mqtt.port', 1883); $this->actingAs(User::factory()->create()); Livewire::test(\App\Livewire\Settings\Index::class) ->assertViewHas('deviceMqtt', fn ($m) => str_ends_with($m['host'], ':1883') && $m['host'] !== ':1883'); } public function test_added_device_is_hidden_from_new_discovery_findings(): void { $this->actingAs(User::factory()->create()); DiscoveryFinding::create(['identifier' => 'shelly1-abc', 'name' => 'shelly1-abc', 'source' => 'mdns', 'status' => 'new']); DiscoveryFinding::create(['identifier' => 'shelly1-new', 'name' => 'shelly1-new', 'source' => 'mdns', 'status' => 'new']); // A device already exists for the first finding's prefix. Device::create(['name' => 'Lampe', 'vendor' => 'Shelly', 'protocol' => 'mqtt', 'config' => ['mqtt_prefix' => 'shelly1-abc']]); Livewire::test(DiscoveryIndex::class) ->assertViewHas('new', fn ($new) => $new->count() === 1 && $new->first()->identifier === 'shelly1-new'); } public function test_deleting_a_device_frees_its_discovery_finding(): void { $this->actingAs(User::factory()->create()); $device = Device::create(['name' => 'Lampe', 'vendor' => 'Shelly', 'protocol' => 'mqtt', 'config' => ['mqtt_prefix' => 'shelly1-abc']]); $finding = DiscoveryFinding::create(['identifier' => 'shelly1-abc', 'name' => 'shelly1-abc', 'source' => 'mdns', 'status' => 'assigned', 'device_id' => $device->id]); Livewire::test(Show::class, ['device' => $device]) ->call('deleteDevice') ->assertRedirect(route('devices.index')); $this->assertModelMissing($device); $finding->refresh(); $this->assertSame('new', $finding->status); $this->assertNull($finding->device_id); } }