[RUBY] Créer une API de tableau d'affichage avec autorisation de certification dans la mise à jour Rails 6 # 7, détruire l'implémentation

Création d'une API de tableau d'affichage avec autorisation de certification dans Rails 6 # 6 show, création de l'implémentation

Mise en place du test de mise à jour

Mettre en œuvre les 2 actions restantes, mettre à jour et détruire

la mise à jour est un processus de mise à jour. Si vous pouvez le créer, c'est similaire, donc il ne devrait pas rester bloqué.

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_test du sujet", body: "update_test corporel")
+      update_param[:id] = post.id
+      update_param
+    end
+    it "Le code de réponse normal est renvoyé" do
+      put v1_post_url({ id: update_param[:id] }), params: update_param
+      expect(response.status).to eq 200
+    end
+    it "subject,le corps revient correctement" do
+      put v1_post_url({ id: update_param[:id] }), params: update_param
+      json = JSON.parse(response.body)
+      expect(json["post"]["subject"]).to eq("update_test du sujet")
+      expect(json["post"]["body"]).to eq("update_test corporel")
+    end
+    it "Des erreurs sont renvoyées lorsque le paramètre n'est pas valide" 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 "La réponse 404 est renvoyée lorsque l'ID n'existe pas" do
+      put v1_post_url({ id: update_param[:id] + 1 }), params: update_param
+      expect(response.status).to eq 404
+    end
+  end
...

Comme d'habitude, le contrôleur n'est pas implémenté, donc le test est de la mousse.

Mise en œuvre de la mise à jour

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
...

Il n'est pas non plus nécessaire d'en parler ici. Cela devrait passer le test.

Mise en œuvre du test de destruction

spec/requests/v1/posts_controller.rb


...

+  describe "DELETE /v1/posts#destroy" do
+    let(:delete_post) do
+      create(:post)
+    end
+    it "Le code de réponse normal est renvoyé" do
+      delete v1_post_url({ id: delete_post.id })
+      expect(response.status).to eq 200
+    end
+    it "Un de moins et revient" do
+      delete_post
+      expect do
+        delete v1_post_url({ id: delete_post.id })
+      end.to change { Post.count }.by(-1)
+    end
+    it "La réponse 404 est renvoyée lorsque l'ID n'existe pas" do
+      delete v1_post_url({ id: delete_post.id + 1 })
+      expect(response.status).to eq 404
+    end
+  end
...

Contrairement à l'heure du courrier, confirmez que le nombre d'enregistrements est réduit de 1 dans le temple d'exécution. Comme un point, Cela signifie appeler delete_post avant de s'attendre.

Comme mentionné précédemment, let est évalué différé, donc s'il n'y a pas de delete_post avant expect, un enregistrement sera créé avec delete_post.id dans expect et un enregistrement sera supprimé avec delete v1_post_url. En d'autres termes, + 1-1 = 0 dans le bloc attendu et il n'y a aucun changement dans le nombre d'enregistrements.

Par conséquent, un enregistrement est créé avant expect et lorsque la suppression est exécutée dans expect, il devient -1 enregistrement.

Mise en œuvre de destroy

app/controllers/v1/posts_controller.rb


...

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

C'est également très simple. Cette fois, c'est court, mais si vous incluez la graine à faire ensuite, ce sera trop long, alors c'est tout.

A continué

Création d'une API de tableau d'affichage avec certification et autorisation dans l'implémentation de Rails 6 # 8 seed

[Vers la table de sérialisation]

Recommended Posts

Créer une API de tableau d'affichage avec autorisation de certification dans la mise à jour Rails 6 # 7, détruire l'implémentation
Implémentation n ° 8 pour créer une API de tableau d'affichage avec autorisation de certification dans Rails 6
Créez une API de tableau d'affichage avec certification et autorisation dans Rails 6 # 6 show, créez une implémentation
# 16 paramètre de stratégie pour créer une API de tableau d'affichage avec autorisation de certification dans Rails 6
Présentation du sérialiseur n ° 9 pour créer une API de tableau d'affichage avec certification et autorisation dans Rails 6
Construire une API de tableau d'affichage avec certification et autorisation dans le contrôleur Rails 6 # 5, implémentation des routes
Introduction de # 10 devise_token_auth pour créer une API de tableau d'affichage avec autorisation d'authentification dans Rails 6
Introduction de l'expert n ° 15 pour créer une API de tableau d'affichage avec certification et autorisation dans Rails 6
Créer une API de tableau d'affichage avec autorisation de certification dans Rails 6 # 13 Accorder l'en-tête d'authentification
Créez une API de tableau d'affichage avec certification et autorisation dans Rails 6 # 17 Ajoutez des privilèges d'administrateur
Construire une API de tableau d'affichage avec certification et autorisation dans Rails 6 # 14 Seed Affichage du temps d'exécution
Construire une API de tableau d'affichage avec certification et autorisation avec Rails 6 # 18 ・ Implémentation du contrôleur de l'utilisateur final
Créer une API de tableau d'affichage avec autorisation dans Rails 6 # 12 Association d'utilisateur et de publication
Créez une API de tableau d'affichage avec certification et autorisation avec Rails 6 # 1 Construction de l'environnement
Créer une API de tableau d'affichage avec autorisation de certification dans Rails 6 # 11 Test et validation du modèle utilisateur ajoutés
Présentation de # 2 git et rubocop pour créer une API de tableau d'affichage avec autorisation d'authentification dans Rails
# 4 post-validation et mise en œuvre de test pour créer une API de tableau d'affichage avec certification et autorisation dans Rails 6
Créez une API de tableau d'affichage avec certification et autorisation avec Rails 6 # 3 RSpec, FactoryBot introduit et post-modèle
Comment créer une API avec GraphQL et Rails
J'ai essayé d'implémenter l'API Rails avec TDD par RSpec. part3-Implémentation d'action avec authentification-
J'ai essayé de créer une fonction de groupe (babillard) avec Rails
J'ai essayé d'implémenter l'API Rails avec TDD par RSpec. part1-Implémentation de l'action sans authentification-
Comment créer un environnement Rails 6 avec Docker
Essayez de créer un babillard en Java
[Comment insérer une vidéo dans un hameau avec Rails]
Utilisation de l'API PAY.JP avec Rails ~ Préparation de l'implémentation ~ (payjp.js v2)
Comment interroger Array dans jsonb avec Rails + postgres
Politique de mise en œuvre pour enregistrer et afficher dynamiquement le fuseau horaire dans les rails
Comment configurer un proxy avec authentification dans Feign