Farmbot-Web-App/db/seeds.rb

135 lines
5.1 KiB
Ruby

if Rails.env == "development"
POINT_COUNT = 8
PLANT_COUNT = 8
DATE_RANGE_LO = 1..3
DATE_RANGE_HI = 3..8
ENV["MQTT_HOST"] = "blooper.io"
ENV["OS_UPDATE_SERVER"] = "http://example-server.com"
# CREDIT: Faker Ruby Gem
VEGGIES = %w(artichoke arugula asparagus broccoli cabbage carrot cauliflower
celery cucumber eggplant garlic kale kohlrabi leek lettuce okra
parsnip potato pumpkin radicchio radish raspberry spinach squash
tomato turnip zucchini)
[
Alert,
Sensor,
Peripheral,
Log,
PinBinding,
PointGroupItem,
PointGroup,
Point,
TokenIssuance,
ToolSlot,
User,
PlantTemplate,
SavedGarden,
SensorReading,
FarmwareInstallation,
Tool,
Delayed::Job,
Delayed::Backend::ActiveRecord::Job,
Fragment,
Device,
].map(&:delete_all)
Users::Create.run!(name: "Test",
email: "test@test.com",
password: "password123",
password_confirmation: "password123",
confirmed_at: Time.now,
agreed_to_terms_at: Time.now,
skip_email: true)
User.update_all(confirmed_at: Time.now,
agreed_to_terms_at: Time.now)
u = User.last
u.update(device: Devices::Create.run!(user: u))
# === Parameterized Sequence stuff
json = JSON.parse(File.read("spec/lib/celery_script/ast_fixture5.json"), symbolize_names: true)
Sequences::Create.run!(json, device: u.device)
# === Parameterized Sequence stuff
Log.transaction do
FactoryBot.create_list(:log, 35, device: u.device)
end
["https://via.placeholder.com/350x250?text=Image%20Zero",
"https://i.imgur.com/XvFBGA4.jpg",
"https://via.placeholder.com/350x250?text=Image%20Two",
"https://i.imgur.com/XsFczCY.jpg",
"https://via.placeholder.com/350x250?text=Image%20Four"].each do |url|
Images::Create.run!(attachment_url: url,
device: u.device,
meta: { x: rand(40...970),
y: rand(40...470),
z: rand(1...300) })
end
all_of_em = []
1.upto(8) do |n1|
1.upto(8) do |n2|
veggie = VEGGIES.sample
p = Plant.create(device: u.device,
x: n1 * 80,
y: n2 * 80,
radius: rand(20...70),
name: veggie,
openfarm_slug: veggie.downcase.gsub(" ", "-"))
all_of_em.push(p.id)
end
end
PointGroups::Create.run!(device: u.device,
name: "TEST GROUP I",
point_ids: all_of_em.sample(8),
sort_type: "random")
Device.all.map { |device| SavedGardens::Snapshot.run!(device: device) }
POINT_COUNT.times do
GenericPointer.create(device: u.device,
x: rand(40...970) + rand(40...970),
y: rand(40...470) + rand(40...470),
z: 5,
radius: (rand(1...150) + rand(1...150)) / 20,
meta: {
created_by: "plant-detection",
color: (Sequence::COLORS + [nil]).sample,
})
end
s = Sequences::Create.run!(device: u.device,
name: "Goto 0, 0, 0",
body: [{ kind: "move_absolute", args: { location: { kind: "coordinate", args: { x: 0,
y: 0, z: 0 } }, offset: { kind: "coordinate", args: { x: 0, y: 0, z: 0 } }, speed: 100 } }])
t = Tools::Create.run!(name: "Trench Digging Tool", device: u.device)
body_txt = File.read("spec/lib/celery_script/ast_fixture4.json")
.gsub("__SEQUENCE_ID__", s[:id].to_s)
.gsub("__TOOL_ID__", t.id.to_s)
Sequences::Create.run!(device: u.device,
name: "Every Node",
body: JSON.parse(body_txt))
Regimens::Create.run(device: u.device,
name: "Test Regimen 456",
color: "gray",
regimen_items: [
{ time_offset: 300000, sequence_id: s[:id] },
{ time_offset: 173100000, sequence_id: s[:id] },
{ time_offset: 345900000, sequence_id: s[:id] },
])
Peripherals::Create.run!(device: u.device, pin: 13, label: "LED")
WebcamFeeds::Create.run!(device: u.device,
name: "My Feed 1",
url: "https://nature.nps.gov/air/webcams/parks/yosecam/yose.jpg")
ts = Points::Create.run!(device: u.device,
tool_id: t.id,
name: "Slot One.",
x: 10,
y: 10,
z: 10,
pointer_type: "ToolSlot")
d = u.device
Sensors::Create
.run!(device: d, pin: 14, label: "Stub sensor", mode: 0)
User.update_all(confirmed_at: Time.now)
end