From 305cacb0f4022b79ed6a5d95fded40ebb704c1ee Mon Sep 17 00:00:00 2001 From: Rick Carlino Date: Thu, 22 Mar 2018 15:39:52 -0500 Subject: [PATCH 1/3] Possible solution for in_use flag. Needs tests --- app/lib/celery_script/fetch_celery.rb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/lib/celery_script/fetch_celery.rb b/app/lib/celery_script/fetch_celery.rb index c7ca4adf5..33608475e 100644 --- a/app/lib/celery_script/fetch_celery.rb +++ b/app/lib/celery_script/fetch_celery.rb @@ -110,6 +110,10 @@ module CeleryScript def execute canonical_form = misc_fields.merge!(recurse_into_node(entry_node)) + canonical_form[:in_use] = \ + EdgeNode.where(kind: "sequence_id", value: sequence.id).exists? || + RegimenItem.where(sequence_id: sequence.id).exists? || + FarmEvent.where(executable: sequence).exists? return HashWithIndifferentAccess.new(canonical_form) end end From a1b19d579d885b50b62e225aa82ddc81ce9cd952 Mon Sep 17 00:00:00 2001 From: Rick Carlino Date: Fri, 23 Mar 2018 09:49:44 -0500 Subject: [PATCH 2/3] Tests for the in_use flag --- spec/factories/farm_event.rb | 4 +-- .../flat_ir_stuff/fetch_celery_spec.rb | 32 +++++++++++++++++++ 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/spec/factories/farm_event.rb b/spec/factories/farm_event.rb index 9ba561129..88ca9adce 100644 --- a/spec/factories/farm_event.rb +++ b/spec/factories/farm_event.rb @@ -1,8 +1,8 @@ FactoryBot.define do factory :farm_event do start_time { Date.yesterday - [*(1..5)].sample.days } - end_time { Date.today + 1.minute + ([*(1..5)].sample).days } - time_unit { FarmEvent::UNITS_OF_TIME.sample } + end_time { Date.today + 1.minute + ([*(1..5)].sample).days } + time_unit { FarmEvent::UNITS_OF_TIME.sample } repeat { [*(1..5)].sample } # device after(:build) do |s| diff --git a/spec/mutations/flat_ir_stuff/fetch_celery_spec.rb b/spec/mutations/flat_ir_stuff/fetch_celery_spec.rb index 99afdaa62..231747755 100644 --- a/spec/mutations/flat_ir_stuff/fetch_celery_spec.rb +++ b/spec/mutations/flat_ir_stuff/fetch_celery_spec.rb @@ -5,6 +5,38 @@ describe CeleryScript::FetchCelery do let(:user) { FactoryBot.create(:user) } let(:device) { user.device } + it "marks in_use as false when not in use" do + in_use = \ + CeleryScript::FetchCelery.run!(sequence: FakeSequence.create())[:in_use] + expect(in_use).to be(false) + end + + it "marks a sequence as in_use by Regimen" do + sequence = FakeSequence.create() + ri = RegimenItem.new(time_offset: 100, sequence_id: sequence.id) + regimen = FactoryBot.create(:regimen, regimen_items: [ri]) + results = CeleryScript::FetchCelery.run!(sequence: sequence) + + expect(results[:in_use]).to be(true) + end + + it "marks a sequence as in_use by FarmEvent" do + fe = FactoryBot.create(:farm_event) + sequence = fe.executable + results = CeleryScript::FetchCelery.run!(sequence: sequence) + + expect(results[:in_use]).to be(true) + end + + it "marks a sequence as in_use by Sequence" do + sequence = FakeSequence.create() + user = FakeSequence.create(body: [ + { kind: "execute", args: { sequence_id: sequence.id } } + ]) + results = CeleryScript::FetchCelery.run!(sequence: sequence) + expect(results[:in_use]).to be(true) + end + __NOTHING______ = "nothing" it "Makes JSON that is identical to the legacy implementation - part 1" do From 0f752c8810f44f5ef4d64bb0ebd7e826a33ae0ff Mon Sep 17 00:00:00 2001 From: Rick Carlino Date: Fri, 23 Mar 2018 09:51:31 -0500 Subject: [PATCH 3/3] Update FE interfaces --- webpack/sequences/interfaces.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/webpack/sequences/interfaces.ts b/webpack/sequences/interfaces.ts index f595aa9f5..4a544952e 100644 --- a/webpack/sequences/interfaces.ts +++ b/webpack/sequences/interfaces.ts @@ -57,6 +57,7 @@ export interface Sequence extends CeleryScriptSequence { id?: number; color: Color; name: string; + in_use?: boolean; } export interface SequenceReducerState {