Skip to content

Commit

Permalink
Merge pull request #10 from symcon/fixes/migrate-test
Browse files Browse the repository at this point in the history
Migration der Tests auf phpUnit v10
  • Loading branch information
Sunnyka98 committed Sep 19, 2023
2 parents b6e73c8 + 232bc48 commit 3e5cc66
Show file tree
Hide file tree
Showing 5 changed files with 19 additions and 168 deletions.
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
.DS_Store
.idea/
.phpunit.*
.php_cs.cache
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,5 @@

Folgende Module beinhaltet das Spotify Repository:

- __Spotify__ ([Dokumentation](Spotify))
- __Spotify__ ([Dokumentation](https://www.symcon.de/de/service/dokumentation/modulreferenz/spotify))
Steuert die Wiedergabe von Spotify
157 changes: 2 additions & 155 deletions Spotify/README.md
Original file line number Diff line number Diff line change
@@ -1,158 +1,5 @@
# Spotify
Das Spotify-Modul ermöglicht die Verknüpfung mit einem Spotify-Premium-Konto. Darüber kann die Wiedergabe über das Konto gesteuert werden. So ist es möglich, die eine Wiedergabe zu starten oder die aktuelle Wiedergabe zu ändern bzw. zu beenden. Auch Optionen wie Wiederholung oder Zufallswiedergabe können gesetzt werden.
Innerhalb des Moduls werden Favoriten gespeichert, welche dann komfortabel aus der Visualisierung abgerufen werden können.

### Inhaltsverzeichnis
[Link zur deutschen Dokumentation](https://www.symcon.de/de/service/dokumentation/modulreferenz/spotify/)

1. [Funktionsumfang](#1-funktionsumfang)
2. [Voraussetzungen](#2-voraussetzungen)
3. [Software-Installation](#3-software-installation)
4. [Einrichten der Instanzen in IP-Symcon](#4-einrichten-der-instanzen-in-ip-symcon)
5. [Statusvariablen und Profile](#5-statusvariablen-und-profile)
6. [WebFront](#6-webfront)
7. [PHP-Befehlsreferenz](#7-php-befehlsreferenz)

### 1. Funktionsumfang

* Verknüpfung mit einem Spotify-Premium-Konto
* Wiedergabe abspielen oder pausieren
* Zu nächstem oder vorherigen Song wechseln
* Gerät für Wiedergabe auswählen oder wechseln
* Favoriten abspeichern und wieder aufrufen
* Wiederholung oder Zufallswiedergabe aktivieren

### 2. Voraussetzungen

- IP-Symcon ab Version 5.3
- Spotify-Premium-Konto

### 3. Software-Installation

* Über den Module Store das 'Spotify'-Modul installieren.
* Alternativ über das Module Control folgende URL hinzufügen:
`https://github.com/symcon/SymconSpotify`

### 4. Einrichten der Instanzen in IP-Symcon

- Unter 'Instanz hinzufügen' kann das 'Spotify'-Modul mithilfe des Schnellfilters gefunden werden.
- Weitere Informationen zum Hinzufügen von Instanzen in der [Dokumentation der Instanzen](https://www.symcon.de/service/dokumentation/konzepte/instanzen/#Instanz_hinzufügen)

__Konfigurationsseite__:

Initial muss das Modul durch einen Klick auf den Button "Registrieren" mit einem Spotify-Premium-Konto verknüpft werden. Durch den Klick öffnet sich ein Anmeldungsdialog von Spotify. Nach Eingabe der Benutzerdaten muss die Verknüpfung bestätigt werden. Danach stehen alle Funktionen des Moduls zur Verfügung.


___Erweiterte Einstellungen___

Name | Beschreibung
------------------------ | ---------------------------------
Aktualisierungsintervall | In diesem Intervall werden die Werte der Statusvariablen mit der aktuellen Wiedergabe von Spotify abgeglichen. Dies beinhaltet das Gerät, Wiedergabe oder Pause, Zufallswiedergabe und Wiederholung
Cover: Maximale Breite | Maximale Breite des dargestellten Covers
Cover: Maximale Höhe | Maximale Höhe des dargestellten Covers

___Suche___

Name | Beschreibung
------------------------ | ---------------------------------
Suche | In diesem Feld wird ein Suchbegriff für eine Suche eingegeben
Suche nach Alben | Gibt an ob die nächste Suche Alben beinhalten soll
Suche nach Künstlern | Gibt an ob die nächste Suche Künstler beinhalten soll
Suche nach Playlists | Gibt an ob die nächste Suche Playlists beinhalten soll
Suche nach Songs | Gibt an ob die nächste Suche Songs beinhalten soll
Suche starten | Startet eine Suche
Suchergebnisse | Diese Liste beinhaltet die Ergebnisse der aktuellen Suche - Durch ein Aktivieren des Feldes "Favorit" kann ein Ergbnis den Favoriten hinzugefügt werden

Die Liste "Ihre Playlists" beinhaltet die Playlists des verknüpften Spotify-Kontos. Diese können über das Feld "Favorit" den Favoriten hinzugefügt werden. Die Liste "Favoriten" beinhaltet die eingestellten Favoriten. Durch ein Klick auf das Mülleimer-Symbol können Favoriten entfernt werden.

### 5. Statusvariablen und Profile

Die Statusvariablen/Kategorien werden automatisch angelegt. Das Löschen einzelner kann zu Fehlfunktionen führen.

##### Statusvariablen

Name | Typ | Beschreibung
-------------------- | ------- | ----------------
Aktuelles Cover | HTMLBox | Hier wird das Cover des aktuell abgespielten Albums dargestellt, sofern vorhanden
Aktueller Song | string | Hier wird der Name des aktuell abgespielten Songs angezeigt
Aktueller Künstler | string | Hier wird der Künstler des aktuell abgespielten Songs angezeigt
Aktuelles Album | string | Hier wird das Album des aktuell abgespielten Songs angezeigt
Aktion | integer | Hierüber kann eine Wiedergabe gestartet oder pausiert werden. Außerdem ist es möglich auf den vorherigen oder nächsten Song zu wechseln
Gerät | integer | Mit dieser Variable kann ein Wiedergabegerät ausgewählt werden. Ist aktuell eine Wiedergabe aktiv, so wird diese auf das neue Gerät gewechselt
Favorit | integer | Diese Variable stellt die im Modul konfigurierten Favoriten dar. Durch die Auswahl eines Favoriten wird dieser auf dem aktuell gewählten Gerät abgespielt
Wiederholen | integer | Über diese Variable kann die Wiederholung aktiviert werden - "Aus": Keine Wiederholung, "Kontext": Der aktuelle Kontext, also das Album, die Playlist, ... wird wiederholt, "Song": Der aktuelle Song wird wiederholt
Zufällige Wiedergabe | boolean | Aktiviert bzw. deaktiviert die zufällige Wiedergabe

##### Profile:

Name | Typ
----------------------------------- | -------
Spotify.Favorites.<InstanzID> | Integer
Spotify.Devices | Integer
Spotify.Repeat | Integer

### 6. WebFront

Über das WebFront oder in den mobilen Apps werden Statusvariablen angezeigt und können geschaltet werden.

### 7. PHP-Befehlsreferenz

`boolean SPO_Play(integer $InstanzID);`
Existiert eine aktuelle, möglicherweise pausierte, Wiedergabe, so wird diese fortgesetzt. Ansonsten wird der aktuell ausgewählte Favorit auf dem aktuell ausgewähltem Gerät abgespielt.
Die Funktion liefert keinerlei Rückgabewert.
Beispiel:
`SPO_Play(12345);`

`boolean SPO_Pause(integer $InstanzID);`
Existiert eine aktuelle Wiedergabe, so wird diese pausiert.
Die Funktion liefert keinerlei Rückgabewert.
Beispiel:
`SPO_Pause(12345);`

`boolean SPO_PreviousTrack(integer $InstanzID);`
Existiert eine aktuelle Wiedergabe, so wird der vorherige Song abgespielt.
Die Funktion liefert keinerlei Rückgabewert.
Beispiel:
`SPO_PreviousTrack(12345);`

`boolean SPO_NextTrack(integer $InstanzID);`
Existiert eine aktuelle Wiedergabe, so wird der nächste Song abgespielt.
Die Funktion liefert keinerlei Rückgabewert.
Beispiel:
`SPO_NextTrack(12345);`

`boolean SPO_PlayURI(integer $InstanzID, string $URI);`
Spielt die Spotify-Resource mit der URI $URI auf dem aktuell ausgewähltem Gerät ab.
Die Funktion liefert keinerlei Rückgabewert.
Beispiel:
`SPO_PlayURI(12345, 'spotify:artist:1Lw1vZvhgNZk7hVSvdY4OA');`

`boolean SPO_SetRepeat(integer $InstanzID, integer $Repeat);`
Setzt die Wiederholung auf den Wert $Repeat.

Wert | Bedeutung
---- | ---------
0 | Wiederholung deaktiviert
1 | Wiederholung des Kontext
2 | Wiederholung des Songs

Die Funktion liefert keinerlei Rückgabewert.
Beispiel:
`SPO_SetRepeat(12345, 2);`

`boolean SPO_SetShuffle(integer $InstanzID, boolean $Shuffle);`
Ist $Shuffle true, so wird die zufällige Wiedergabe aktiviert, ansonsten deaktiviert.
Die Funktion liefert keinerlei Rückgabewert.
Beispiel:
`SPO_SetShuffle(12345, true);`

`boolean SPO_ResetToken(integer $InstanzID);`
Setzt die OAuth-Token und somit die Verknüpfung mit dem Spotify-Konto zurück.
Die Funktion liefert keinerlei Rückgabewert.
Beispiel:
`SPO_ResetToken(12345);`

`SPO_MakeAPIRequest(integer $InstanzID, string $Method, string $Url, string $Body);`
Stellt eine Anfrage an die Spotify Web-API mit den angegebenen Parametern. Dabei muss nur der endpunktspezifische Pfad angegeben werden, der allgemeine Teil, also https://api.spotify.com/v1 wird automatisch hinzugefügt
Die Funktion gibt die Rückgabe der API als String zurück oder false bei einem Fehler.
Beispiel:
`SPO_MakeAPIRequest(12345, 'GET', '/me', '');`
[Link to the english documentation](https://www.symcon.de/en/service/documentation/module-reference/spotify/)
3 changes: 1 addition & 2 deletions Spotify/module.php
Original file line number Diff line number Diff line change
Expand Up @@ -282,8 +282,7 @@ public function Play()
$favoriteValue = $this->GetValue('Favorite');
if ($favoriteValue === '') {
echo $this->Translate('Could not play because there is no current playback and no favorite was selected');
}
else {
} else {
$this->RequestAction('Favorite', $this->GetValue('Favorite'));
}
}
Expand Down
21 changes: 11 additions & 10 deletions tests/phpunit.xml
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<phpunit>
<php>
<const name="PHPUNIT_TESTSUITE" value="true"/>
</php>
<filter>
<whitelist processUncoveredFilesFromWhitelist="true">
<directory suffix=".php">../Spotify</directory>
</whitelist>
</filter>
</phpunit>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/10.1/phpunit.xsd" cacheDirectory=".phpunit.cache">
<coverage/>
<php>
<const name="PHPUNIT_TESTSUITE" value="true"/>
</php>
<source>
<include>
<directory suffix=".php">../Spotify</directory>
</include>
</source>
</phpunit>

0 comments on commit 3e5cc66

Please sign in to comment.