From 948db2e18cb01926f7919a9527cf6fe531c98204 Mon Sep 17 00:00:00 2001 From: Jonas Martinez <36544012+jonas-martinez@users.noreply.github.com> Date: Mon, 2 May 2022 15:52:29 +0200 Subject: [PATCH] feat: Preparing lenra application for apps settings management (#206) --- .../lenra/services/lenra_application_services.ex | 6 ++++++ .../services/lenra_application_services_test.exs | 16 ++++++++++++++++ .../controllers/lenra_application_controller.ex | 10 ++++++++++ apps/lenra_web/lib/lenra_web/router.ex | 2 +- 4 files changed, 33 insertions(+), 1 deletion(-) diff --git a/apps/lenra/lib/lenra/services/lenra_application_services.ex b/apps/lenra/lib/lenra/services/lenra_application_services.ex index 25f74770..3820aa5d 100644 --- a/apps/lenra/lib/lenra/services/lenra_application_services.ex +++ b/apps/lenra/lib/lenra/services/lenra_application_services.ex @@ -55,6 +55,12 @@ defmodule Lenra.LenraApplicationServices do |> Repo.transaction() end + def update(app, params) do + Ecto.Multi.new() + |> Ecto.Multi.update(:updated_application, LenraApplication.update(app, params)) + |> Repo.transaction() + end + def delete(app) do Ecto.Multi.new() |> Ecto.Multi.delete(:deleted_application, app) diff --git a/apps/lenra/test/lenra/services/lenra_application_services_test.exs b/apps/lenra/test/lenra/services/lenra_application_services_test.exs index 0eda5176..8c960621 100644 --- a/apps/lenra/test/lenra/services/lenra_application_services_test.exs +++ b/apps/lenra/test/lenra/services/lenra_application_services_test.exs @@ -66,4 +66,20 @@ defmodule LenraWeb.LenraApplicationServicesTest do assert apps == [] end end + + describe "update" do + test "application successfully", %{user: user, random_user: _random_user} do + {:ok, app} = LenraApplicationServices.fetch_by(name: "public-app") + + LenraApplicationServices.update(app, %{ + repository: "new_repo" + }) + + {:ok, updated_app} = LenraApplicationServices.fetch_by(name: "public-app") + + assert app.repository != updated_app.repository + assert app.repository == nil + assert updated_app.repository == "new_repo" + end + end end diff --git a/apps/lenra_web/lib/lenra_web/controllers/lenra_application_controller.ex b/apps/lenra_web/lib/lenra_web/controllers/lenra_application_controller.ex index 17b6a827..0a72d55b 100644 --- a/apps/lenra_web/lib/lenra_web/controllers/lenra_application_controller.ex +++ b/apps/lenra_web/lib/lenra_web/controllers/lenra_application_controller.ex @@ -29,6 +29,16 @@ defmodule LenraWeb.AppsController do end end + def update(conn, %{"id" => app_id} = params) do + with {:ok, app} <- LenraApplicationServices.fetch(app_id), + :ok <- allow(conn, app), + {:ok, %{updated_application: app}} <- LenraApplicationServices.update(app, params) do + conn + |> assign_data(:updated_application, app) + |> reply + end + end + def delete(conn, %{"id" => app_id}) do with {:ok, app} <- LenraApplicationServices.fetch(app_id), :ok <- allow(conn, app), diff --git a/apps/lenra_web/lib/lenra_web/router.ex b/apps/lenra_web/lib/lenra_web/router.ex index 4a9ded8c..cb00b75d 100644 --- a/apps/lenra_web/lib/lenra_web/router.ex +++ b/apps/lenra_web/lib/lenra_web/router.ex @@ -60,7 +60,7 @@ defmodule LenraWeb.Router do get("/cgu/me/accepted_latest", CguController, :user_accepted_latest_cgu) pipe_through([:ensure_cgu_accepted]) - resources("/apps", AppsController, only: [:index, :create, :delete]) + resources("/apps", AppsController, only: [:index, :create, :update, :delete]) get("/apps/:app_id/main_environment", ApplicationMainEnvController, :index) resources("/apps/:app_id/environments", EnvsController, only: [:index, :create]) patch("/apps/:app_id/environments/:env_id", EnvsController, :update)