[RUBY] Erstellen Sie eine Bulletin Board-API mit Zertifizierungsberechtigung im Rails 6 # 7-Update und zerstören Sie die Implementierung

Erstellen einer Bulletin Board-API mit Zertifizierungsberechtigung in Rails 6 # 6 zeigen, Implementierung erstellen

Implementierung des Update-Tests

Implementieren Sie die verbleibenden 2 Aktionen, aktualisieren und zerstören Sie sie.

Update ist ein Update-Prozess. Wenn Sie es erstellen können, ist es ähnlich, sodass es nicht hängen bleiben sollte.

spec/requests/v1/posts_controller.rb


...

+  describe "PUT /v1/posts#update" do
+    let(:update_param) do
+      post = create(:post)
+      update_param = attributes_for(:post, subject: "update_Probandentest", body: "update_Körpertest")
+      update_param[:id] = post.id
+      update_param
+    end
+    it "Der normale Antwortcode wird zurückgegeben" do
+      put v1_post_url({ id: update_param[:id] }), params: update_param
+      expect(response.status).to eq 200
+    end
+    it "subject,Körper kehrt korrekt zurück" do
+      put v1_post_url({ id: update_param[:id] }), params: update_param
+      json = JSON.parse(response.body)
+      expect(json["post"]["subject"]).to eq("update_Probandentest")
+      expect(json["post"]["body"]).to eq("update_Körpertest")
+    end
+    it "Fehler werden zurückgegeben, wenn der Parameter ungültig ist" do
+      put v1_post_url({ id: update_param[:id] }), params: { subject: "" }
+      json = JSON.parse(response.body)
+      expect(json.key?("errors")).to be true
+    end
+    it "Die Antwort 404 wird zurückgegeben, wenn die ID nicht vorhanden ist" do
+      put v1_post_url({ id: update_param[:id] + 1 }), params: update_param
+      expect(response.status).to eq 404
+    end
+  end
...

Wie üblich ist der Controller nicht implementiert, daher ist der Test Moos.

Implementierung des Updates

app/controllers/v1/posts_controller.rb


...

     def update
-      # TODO
+      if @post.update(post_params)
+        render json: { post: @post }
+      else
+        render json: { errors: @post.errors }
+      end
     end
...

Auch hier besteht keine Notwendigkeit, darüber zu sprechen. Dies sollte den Test bestehen.

Implementierung des Zerstörungstests

spec/requests/v1/posts_controller.rb


...

+  describe "DELETE /v1/posts#destroy" do
+    let(:delete_post) do
+      create(:post)
+    end
+    it "Der normale Antwortcode wird zurückgegeben" do
+      delete v1_post_url({ id: delete_post.id })
+      expect(response.status).to eq 200
+    end
+    it "Eins weniger und kehrt zurück" do
+      delete_post
+      expect do
+        delete v1_post_url({ id: delete_post.id })
+      end.to change { Post.count }.by(-1)
+    end
+    it "Die Antwort 404 wird zurückgegeben, wenn die ID nicht vorhanden ist" do
+      delete v1_post_url({ id: delete_post.id + 1 })
+      expect(response.status).to eq 404
+    end
+  end
...

Bestätigen Sie im Gegensatz zum Zeitpunkt der Veröffentlichung, dass die Anzahl der Datensätze im Hinrichtungstempel um 1 verringert wurde. Als Punkt, Es bedeutet, delete_post vor der Erwartung aufzurufen.

Wie bereits erwähnt, wird let verzögert ausgewertet. Wenn also vor "delete" kein "delete_post" vorhanden ist, wird ein Datensatz mit "delete_post.id" in "erwarten" erstellt und ein Datensatz mit "delete v1_post_url" gelöscht. Mit anderen Worten, + 1-1 = 0 im Erwartungsblock, und die Anzahl der Datensätze ändert sich nicht.

Daher wird ein Datensatz vor dem Erwarten generiert, und wenn das Löschen im Erwarten ausgeführt wird, wird er zum Datensatz -1.

Implementierung von zerstören

app/controllers/v1/posts_controller.rb


...

     def destroy
+      @post.destroy
+      render json: { post: @post }
     end
...

Das ist auch sehr einfach. Diesmal ist es kurz, aber wenn Sie den nächsten Samen hinzufügen, wird er zu lang, also ist es das.

Fortsetzung

Erstellen einer Bulletin Board-API mit Zertifizierungsberechtigung mit Rails 6 # 8-Seed-Implementierung

[Zur Serialisierungstabelle]

Recommended Posts

Erstellen Sie eine Bulletin Board-API mit Zertifizierungsberechtigung im Rails 6 # 7-Update und zerstören Sie die Implementierung
# 8 Seed-Implementierung zum Erstellen einer Bulletin Board-API mit Zertifizierungsautorisierung in Rails 6
Erstellen Sie eine Bulletin Board-API mit Zertifizierung und Autorisierung in Rails 6 # 6. Zeigen Sie, erstellen Sie die Implementierung
# 16 Richtlinieneinstellung zum Erstellen einer Bulletin Board-API mit Zertifizierungsberechtigung in Rails 6
Einführung des Serializers Nr. 9 zum Erstellen einer Bulletin-Board-API mit Zertifizierung und Autorisierung in Rails 6
Erstellen Sie eine Bulletin Board-API mit Zertifizierung und Autorisierung im Rails 6 # 5-Controller und leiten Sie die Implementierung weiter
Einführung von # 10 devise_token_auth zum Erstellen einer Bulletin Board-API mit Zertifizierung und Autorisierung in Rails 6
Einführung des Experten Nr. 15 zum Erstellen einer Bulletin-Board-API mit Zertifizierung und Autorisierung in Rails 6
Erstellen Sie eine Bulletin Board-API mit Zertifizierungsberechtigung in Rails 6 # 13 Grant-Authentifizierungsheader
Erstellen Sie eine Bulletin Board-API mit Zertifizierung und Autorisierung in Rails 6 # 17. Fügen Sie Administratorrechte hinzu
Erstellen Sie eine Bulletin Board-API mit Zertifizierung und Autorisierung in Rails 6 # 14 Seed. Anzeige der Ausführungszeit
Erstellen Sie mit Rails 6 # 18 eine Bulletin-Board-API mit Zertifizierung und Autorisierung. ・ Implementierung des Endbenutzer-Controllers
Erstellen Sie eine Bulletin-Board-API mit Autorisierung in Rails 6 # 12 Assoziation von Benutzer und Beitrag
Erstellen Sie eine Bulletin-Board-API mit Zertifizierung und Autorisierung mit Rails 6 # 1 Environment Construction
Erstellen Sie eine Bulletin-Board-API mit Autorisierung in Rails 6 # 11. Benutzermodelltest und Validierung hinzugefügt
Erstellen Sie eine Bulletin Board-API mit Zertifizierung und Autorisierung in Rails 6 # 2 Einführung in Git und Rubocop
# 4 nach Validierung und Testimplementierung zum Erstellen einer Bulletin Board-API mit Zertifizierung und Autorisierung in Rails 6
Erstellen Sie eine Bulletin Board-API mit Zertifizierung und Autorisierung mit Rails 6 # 3 RSpec. FactoryBot wird eingeführt und ein Post-Modell erstellt
So erstellen Sie eine API mit GraphQL und Rails
Ich habe versucht, die Rails-API mit TDD von RSpec zu implementieren. Teil3-Aktionsimplementierung mit Authentifizierung
Ich habe versucht, mit Rails eine Gruppenfunktion (Bulletin Board) zu erstellen
Ich habe versucht, die Rails-API mit TDD von RSpec zu implementieren. Teil1-Aktionsimplementierung ohne Authentifizierung-
So erstellen Sie eine Rails 6-Umgebung mit Docker
Versuchen Sie, ein Bulletin Board in Java zu erstellen
[So fügen Sie ein Video mit Rails in haml ein]
Verwenden der PAY.JP-API mit Rails ~ Implementierungsvorbereitung ~ (payjp.js v2)
Abfragen von Arrays in jsonb mit Rails + postgres
Implementierungsrichtlinie zum dynamischen Speichern und Anzeigen der Zeitzone in Rails
So richten Sie einen Proxy mit Authentifizierung in Feign ein