From b15a74ff06397478797305515501c9aac66bfd7c Mon Sep 17 00:00:00 2001
From: Flavio Auciello <flavioauciello@nebulab.it>
Date: Fri, 7 Jun 2019 12:43:26 +0200
Subject: [PATCH] Refactor SolidusDefaults#add_pages via #add_page

+ resolve Todo (the code is taken from an outdated PR
  https://github.com/solidusio-contrib/solidus_sitemap/pull/10)
+ fix typo
---
 lib/solidus_sitemap/solidus_defaults.rb           | 12 ++++++++----
 spec/lib/solidus_sitemap/solidus_defaults_spec.rb |  2 +-
 2 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/lib/solidus_sitemap/solidus_defaults.rb b/lib/solidus_sitemap/solidus_defaults.rb
index a61035d..d88ccde 100644
--- a/lib/solidus_sitemap/solidus_defaults.rb
+++ b/lib/solidus_sitemap/solidus_defaults.rb
@@ -47,17 +47,21 @@ def add_product(product, options = {})
   end
 
   def add_pages(options = {})
-    # TODO: this should be refactored to add_pages & add_page
-
     Spree::Page.active.each do |page|
-      add(page.path, options.merge(lastmod: page.updated_at))
+      add_page(page, options.merge(attr: :path))
     end if gem_available? 'spree_essential_cms'
 
     Spree::Page.visible.each do |page|
-      add(page.slug, options.merge(lastmod: page.updated_at))
+      add_page(page, options.merge(attr: :slug))
     end if gem_available? 'spree_static_content'
   end
 
+  def add_page(page, options = {})
+    opts = options.merge(lastmod: page.updated_at)
+    attr = opts.delete(:attr)
+    add(page.send(attr), opts)
+  end
+
   def add_taxons(options = {})
     Spree::Taxon.roots.each { |taxon| add_taxon(taxon, options) }
   end
diff --git a/spec/lib/solidus_sitemap/solidus_defaults_spec.rb b/spec/lib/solidus_sitemap/solidus_defaults_spec.rb
index 1a1fc95..a512bcd 100644
--- a/spec/lib/solidus_sitemap/solidus_defaults_spec.rb
+++ b/spec/lib/solidus_sitemap/solidus_defaults_spec.rb
@@ -79,7 +79,7 @@ def add(url, options)
       expect(subject.entries).to include("/products")
     end
 
-    it "includes avilable products" do
+    it "includes available products" do
       subject.add_products
 
       expect(subject.entries).to include("/products/#{available.slug}")