From 047c4d1c9473653a4947230da3eaf5353b4e4c7c Mon Sep 17 00:00:00 2001 From: Brooke Kuhlmann Date: Sat, 28 Feb 2026 13:54:04 -0700 Subject: [PATCH] Added empty recipe Necessary to build an empty recipe (handy when needing to leverage the Null Object Pattern). Milestone: minor --- lib/trmnl/api/models/recipe.rb | 2 ++ spec/lib/trmnl/api/models/recipe_spec.rb | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/lib/trmnl/api/models/recipe.rb b/lib/trmnl/api/models/recipe.rb index 4ffb19d..aa5cb90 100644 --- a/lib/trmnl/api/models/recipe.rb +++ b/lib/trmnl/api/models/recipe.rb @@ -5,6 +5,8 @@ module TRMNL module Models # Models the payload of the API response. Recipe = ::Data.define :data, :meta do + def self.empty(meta: Recipes::Meta.new) = new(data: [], meta:) + def self.for(**attributes) meta = attributes.slice :from, :to, diff --git a/spec/lib/trmnl/api/models/recipe_spec.rb b/spec/lib/trmnl/api/models/recipe_spec.rb index 420bab5..8851f67 100644 --- a/spec/lib/trmnl/api/models/recipe_spec.rb +++ b/spec/lib/trmnl/api/models/recipe_spec.rb @@ -18,6 +18,14 @@ RSpec.describe TRMNL::API::Models::Recipe do } end + describe ".empty" do + it "answers empty record" do + expect(described_class.empty).to eq( + described_class[data: [], meta: TRMNL::API::Models::Recipes::Meta.new] + ) + end + end + describe ".for" do let :attributes do {