From f42ba298061f8cbb2fce67f6763925de228e7a9e Mon Sep 17 00:00:00 2001 From: Frank Midigo Date: Mon, 6 Nov 2023 17:15:14 +0300 Subject: [PATCH] WIP: fix workorderlive tests --- lib/lightning/invocation.ex | 16 +++- lib/lightning_web/live/run_live/index.ex | 11 ++- .../live/run_live/workorder_component.ex | 2 +- .../live/work_order_live_test.exs | 75 +++++++++---------- 4 files changed, 58 insertions(+), 46 deletions(-) diff --git a/lib/lightning/invocation.ex b/lib/lightning/invocation.ex index 8c72bad326..4a8385eb7a 100644 --- a/lib/lightning/invocation.ex +++ b/lib/lightning/invocation.ex @@ -358,9 +358,19 @@ defmodule Lightning.Invocation do %SearchParams{} = search_params, params \\ %{} ) do - project - |> search_workorders_query(search_params) - |> Repo.paginate(params) + query = search_workorders_query(project, search_params) + page = Repo.paginate(query, page: 1, page_size: 10) + + Repo.to_sql(:all, query) |> IO.inspect(label: "TO SQL ----------------") + + query + |> Repo.all() + |> Enum.count() + |> IO.inspect(label: "+++++++++++++++++++++++++++++++++++++++") + + page.entries |> Enum.count() |> IO.inspect(label: "=======================>") + + page end def search_workorders_query( diff --git a/lib/lightning_web/live/run_live/index.ex b/lib/lightning_web/live/run_live/index.ex index 09ee0d046b..1d5f29d95d 100644 --- a/lib/lightning_web/live/run_live/index.ex +++ b/lib/lightning_web/live/run_live/index.ex @@ -203,11 +203,16 @@ defmodule LightningWeb.RunLive.Index do {:selection_toggled, {workorder, selected?}}, %{assigns: assigns} = socket ) do + selected_workorder = %Lightning.WorkOrder{ + id: workorder.id, + workflow_id: workorder.workflow_id + } + work_orders = if selected? do - [workorder | assigns.selected_work_orders] + [selected_workorder | assigns.selected_work_orders] else - assigns.selected_work_orders -- [workorder] + assigns.selected_work_orders -- [selected_workorder] end {:noreply, assign(socket, selected_work_orders: work_orders)} @@ -276,7 +281,7 @@ defmodule LightningWeb.RunLive.Index do work_orders = if selection do Enum.map(page.entries, fn entry -> - Map.take(entry, [:id, :workflow_id]) + %Lightning.WorkOrder{id: entry.id, workflow_id: entry.workflow_id} end) else [] diff --git a/lib/lightning_web/live/run_live/workorder_component.ex b/lib/lightning_web/live/run_live/workorder_component.ex index a37fa3d58a..0170f0983f 100644 --- a/lib/lightning_web/live/run_live/workorder_component.ex +++ b/lib/lightning_web/live/run_live/workorder_component.ex @@ -129,7 +129,7 @@ defmodule LightningWeb.RunLive.WorkOrderComponent do for={selection_params(@work_order, @entry_selected)} phx-change="toggle_selection" phx-target={@myself} - id={"#{@work_order.id}-selection-form"} + id={"selection-form-#{@work_order.id}"} > <%= Phoenix.HTML.Form.checkbox(f, :selected, id: "select_#{@work_order.id}", diff --git a/test/lightning_web/live/work_order_live_test.exs b/test/lightning_web/live/work_order_live_test.exs index a4f9f0ccc8..021b6897e2 100644 --- a/test/lightning_web/live/work_order_live_test.exs +++ b/test/lightning_web/live/work_order_live_test.exs @@ -101,7 +101,7 @@ defmodule LightningWeb.RunWorkOrderTest do job: job, started_at: build(:timestamp), finished_at: build(:timestamp), - exit_code: 1, + exit_reason: "failed", input_dataclip: dataclip ) ] @@ -380,7 +380,7 @@ defmodule LightningWeb.RunWorkOrderTest do input_dataclip: dataclip_two, started_at: build(:timestamp), finished_at: build(:timestamp), - exit_code: 1 + exit_reason: "failed" ) ] ) @@ -849,7 +849,7 @@ defmodule LightningWeb.RunWorkOrderTest do runs: build_list(1, :run, %{ job: job, - exit_code: 1, + exit_reason: "failed", started_at: now |> Timex.shift(seconds: -40), finished_at: now |> Timex.shift(seconds: -20), input_dataclip: dataclip @@ -961,7 +961,7 @@ defmodule LightningWeb.RunWorkOrderTest do input_dataclip: dataclip, started_at: build(:timestamp), finished_at: build(:timestamp), - exit_code: 1 + exit_reason: "failed" ) ] ) @@ -1135,7 +1135,7 @@ defmodule LightningWeb.RunWorkOrderTest do assert html =~ "New attempts enqueued for 2 workorders" view - |> form("##{work_order_b.id}-selection-form") + |> form("#selection-form-#{work_order_b.id}") |> render_change(%{selected: true}) result = render_click(view, "bulk-rerun", %{type: "selected"}) @@ -1215,7 +1215,7 @@ defmodule LightningWeb.RunWorkOrderTest do # uncheck 1 work order view - |> form("##{work_order_b.id}-selection-form") + |> form("#selection-form-#{work_order_b.id}") |> render_change(%{selected: false}) updated_html = render(view) @@ -1447,7 +1447,7 @@ defmodule LightningWeb.RunWorkOrderTest do input_dataclip: dataclip, started_at: build(:timestamp), finished_at: build(:timestamp), - exit_code: 1 + exit_reason: "failed" ) end) ) @@ -1474,7 +1474,7 @@ defmodule LightningWeb.RunWorkOrderTest do input_dataclip: dataclip, started_at: build(:timestamp), finished_at: build(:timestamp), - exit_code: 1 + exit_reason: "failed" ) end) ) @@ -1560,7 +1560,7 @@ defmodule LightningWeb.RunWorkOrderTest do # uncheck 1 work order view - |> form("##{work_order_3.id}-selection-form") + |> form("#selection-form-#{work_order_3.id}") |> render_change(%{selected: false}) updated_html = render(view) @@ -1634,7 +1634,7 @@ defmodule LightningWeb.RunWorkOrderTest do "New attempts enqueued for 2 workorders" view - |> form("##{work_order_1.id}-selection-form") + |> form("#selection-form-#{work_order_1.id}") |> render_change(%{selected: true}) view @@ -1656,41 +1656,38 @@ defmodule LightningWeb.RunWorkOrderTest do } do scenarios = Enum.map(1..3, fn _n -> - workflow = insert(:workflow, project: project) + %{triggers: [trigger], jobs: jobs} = + workflow = insert(:complex_workflow, project: project) + + dataclip = insert(:dataclip, project: project) work_order = insert(:workorder, state: :success, workflow: workflow, - trigger: build(:trigger), - dataclip: build(:dataclip), + trigger: trigger, + dataclip: dataclip, last_activity: DateTime.utc_now() ) - - jobs = insert_list(5, :job, workflow: workflow) - - runs = - Enum.map( - jobs, - fn j -> - build(:run, - input_dataclip: build(:dataclip), - job: j, - started_at: build(:timestamp), - finished_at: build(:timestamp), - exit_code: 0 - ) - end + |> with_attempt( + state: :success, + dataclip: dataclip, + starting_trigger: trigger, + started_at: build(:timestamp), + finished_at: build(:timestamp), + runs: + Enum.map(jobs, fn j -> + build(:run, + job: j, + input_dataclip: dataclip, + output_dataclip: dataclip, + started_at: build(:timestamp), + finished_at: build(:timestamp), + exit_reason: "success" + ) + end) ) - insert(:attempt, - work_order: work_order, - finished_at: build(:timestamp), - starting_trigger: build(:trigger), - dataclip: build(:dataclip), - runs: runs - ) - %{work_order: work_order, workflow: workflow, jobs: jobs} end) @@ -1701,7 +1698,7 @@ defmodule LightningWeb.RunWorkOrderTest do log: true, success: true, pending: true, - killing: true, + killed: true, running: true, crashed: true, failed: true @@ -1716,7 +1713,7 @@ defmodule LightningWeb.RunWorkOrderTest do end view - |> form("##{scenario.work_order.id}-selection-form") + |> form("#selection-form-#{scenario.work_order.id}") |> render_change(%{selected: true}) for job <- scenario.jobs do @@ -1724,7 +1721,7 @@ defmodule LightningWeb.RunWorkOrderTest do end view - |> form("##{scenario.work_order.id}-selection-form") + |> form("#selection-form-#{scenario.work_order.id}") |> render_change(%{selected: false}) end end