diff --git a/Gemfile b/Gemfile index 022014e..5d3a0e2 100644 --- a/Gemfile +++ b/Gemfile @@ -22,6 +22,12 @@ group :test do else gem 'rails_test_params_backport' end + + if branch < 'v2.5' + gem 'factory_bot', '4.10.0' + else + gem 'factory_bot', '> 4.10.0' + end end group :development, :test do diff --git a/app/models/spree/tracker.rb b/app/models/spree/tracker.rb index 928e6fd..9ba056d 100644 --- a/app/models/spree/tracker.rb +++ b/app/models/spree/tracker.rb @@ -1,6 +1,8 @@ class Spree::Tracker < ActiveRecord::Base belongs_to :store + validates :tracker_type, presence: true + def self.current(store = nil, type = 'analytics') return if !store if store.is_a?(Spree::Store) diff --git a/app/views/spree/admin/trackers/_form.html.erb b/app/views/spree/admin/trackers/_form.html.erb index 05998f0..277fde8 100644 --- a/app/views/spree/admin/trackers/_form.html.erb +++ b/app/views/spree/admin/trackers/_form.html.erb @@ -10,11 +10,11 @@
<%= f.label :tacker_type %> - <%= select_tag :tracker_type, options_for_select(tracker_types, @tracker.tracker_type), include_blank: true, class: 'select2 fullwidth', name: 'tracker[tracker_type]' %> + <%= select_tag :tracker_type, options_for_select(tracker_types, @tracker.tracker_type), include_blank: true, class: 'select2 fullwidth', id: 'tracker_tracker_type', name: 'tracker[tracker_type]' %>
-
+
<%= f.label :active %>
    @@ -33,7 +33,7 @@
    <%= f.label :store %> - <%= select_tag :store_id, options_from_collection_for_select(Spree::Store.all, :id, :name, @tracker.store_id), include_blank: true, class: 'select2 fullwidth', name: 'tracker[store_id]' %> + <%= select_tag :store_id, options_from_collection_for_select(Spree::Store.all, :id, :name, @tracker.store_id), include_blank: true, class: 'select2 fullwidth', id: 'tracker_store_id', name: 'tracker[store_id]' %>
diff --git a/app/views/spree/admin/trackers/index.html.erb b/app/views/spree/admin/trackers/index.html.erb index 90eb95c..b5c6655 100644 --- a/app/views/spree/admin/trackers/index.html.erb +++ b/app/views/spree/admin/trackers/index.html.erb @@ -7,7 +7,7 @@ <% content_for :page_actions do %> <% if can?(:create, Spree::Tracker) %>
  • - <%= button_link_to Spree.t(:new_tracker), new_object_url, id: 'admin_new_tracker_link' %> + <%= link_to Spree.t(:new_tracker), new_object_url, id: 'admin_new_tracker_link', class: 'btn btn-primary' %>
  • <% end %> <% end %> @@ -36,9 +36,9 @@ <% @trackers.each do |tracker|%> '> <%= tracker.analytics_id %> - <%= tracker.tracker_type.capitalize %> + <%= tracker.tracker_type.try(:capitalize) %> <%= tracker.active ? Spree.t(:say_yes) : Spree.t(:say_no) %> - <%= tracker.store.name %> + <%= tracker.store.try(:name) %> <% if can?(:update, tracker) %> <%= link_to_edit tracker, :no_text => true %> diff --git a/lib/solidus_trackers/factories.rb b/lib/solidus_trackers/factories.rb index 68580b6..511d71a 100644 --- a/lib/solidus_trackers/factories.rb +++ b/lib/solidus_trackers/factories.rb @@ -2,5 +2,6 @@ factory :tracker, class: Spree::Tracker do analytics_id 'A100' active true + tracker_type 'analytics' end end diff --git a/spec/features/admin/configuration/analytics_tracker_spec.rb b/spec/features/admin/configuration/analytics_tracker_spec.rb index 3a1acae..51f374a 100644 --- a/spec/features/admin/configuration/analytics_tracker_spec.rb +++ b/spec/features/admin/configuration/analytics_tracker_spec.rb @@ -19,12 +19,14 @@ it "should have the right tabular values displayed" do within_row(1) do expect(column_text(1)).to eq("A100") - expect(column_text(2)).to eq("Yes") + expect(column_text(2)).to eq("Analytics") + expect(column_text(3)).to eq("Yes") end within_row(2) do expect(column_text(1)).to eq("A100") - expect(column_text(2)).to eq("Yes") + expect(column_text(2)).to eq("Analytics") + expect(column_text(3)).to eq("Yes") end end end @@ -39,14 +41,15 @@ it "should be able to create a new analytics tracker" do click_link "admin_new_tracker_link" fill_in "tracker_analytics_id", with: "A100" - option = first("#tracker_store_id option").text - select option, from: "tracker_store_id" + select all("#tracker_tracker_type option")[1].text, from: "tracker_tracker_type" + select all("#tracker_store_id option")[1].text, from: "tracker_store_id" click_button "Create" expect(page).to have_content("successfully created!") within_row(1) do expect(column_text(1)).to eq("A100") - expect(column_text(2)).to eq("Yes") + expect(column_text(2)).to eq("Analytics") + expect(column_text(3)).to eq("Yes") end end end @@ -56,7 +59,7 @@ create(:tracker, store: store) visit spree.root_path - expect(page).to have_css('#solidus_trackers', visible: false) + expect(page).to have_css('#solidus_trackers_analytics', visible: false) end end end diff --git a/spec/models/spree/tracker_spec.rb b/spec/models/spree/tracker_spec.rb index 08445c6..71406e6 100644 --- a/spec/models/spree/tracker_spec.rb +++ b/spec/models/spree/tracker_spec.rb @@ -1,7 +1,7 @@ require 'spec_helper' RSpec.describe Spree::Tracker, type: :model do - let(:store) { create(:store) } + let!(:store) { create(:store) } let!(:tracker) { create(:tracker, store: store) } let(:other_store) { create(:store, code: 'STORE2', url: 'realfakedoors.com') } let!(:other_tracker) { create(:tracker, store: other_store) } @@ -12,29 +12,29 @@ end it "returns the first active tracker" do - expect(Spree::Tracker.current(store)).to eq(tracker) + expect(Spree::Tracker.current(store)).to eq([tracker]) end it "does not return an inactive tracker" do tracker.update_attribute(:active, false) - expect(Spree::Tracker.current(store)).to be_nil + expect(Spree::Tracker.current(store)).to eq([]) end it "finds tracker by store" do - expect(Spree::Tracker.current(store)).to eq tracker + expect(Spree::Tracker.current(store)).to eq([tracker]) end it "finds tracker based on store code" do aggregate_failures do expect(ActiveSupport::Deprecation).to receive(:warn) - expect(Spree::Tracker.current('STORE2')).to eq other_tracker + expect(Spree::Tracker.current('STORE2')).to eq([other_tracker]) end end it "finds tracker based on store url" do aggregate_failures do expect(ActiveSupport::Deprecation).to receive(:warn) - expect(Spree::Tracker.current(store.url)).to eq tracker + expect(Spree::Tracker.current(store.url)).to eq([tracker]) end end end