From 8e8b5ddb2a34f9d25772be6a9c318d9e463bf0eb Mon Sep 17 00:00:00 2001 From: Karina Kwiatek Date: Sat, 9 Jul 2022 19:22:05 +0200 Subject: [PATCH] Add test for `Exporter#collect_smiles` --- lib/exporter.rb | 2 +- spec/factories/smile.rb | 4 ++-- spec/lib/exporter_spec.rb | 33 +++++++++++++++++++++++++++++++++ 3 files changed, 36 insertions(+), 3 deletions(-) diff --git a/lib/exporter.rb b/lib/exporter.rb index 4d901917..d2624b51 100644 --- a/lib/exporter.rb +++ b/lib/exporter.rb @@ -227,7 +227,7 @@ class Exporter end type = smile.parent.class.name.downcase - sobj[type.to_sym] = send(:"process_#{type}", smile.parent, include_comments: false) + sobj[type.to_sym] = send(:"process_#{type}", smile.parent, include_comments: false, include_user: false) sobj end diff --git a/spec/factories/smile.rb b/spec/factories/smile.rb index 1970c8e4..43bd9bf4 100644 --- a/spec/factories/smile.rb +++ b/spec/factories/smile.rb @@ -2,8 +2,8 @@ FactoryBot.define do factory :smile, class: Appendable::Reaction do - user { FactoryBot.build(:user) } - parent { FactoryBot.build(:answer) } + user { FactoryBot.create(:user) } + parent { FactoryBot.create(:answer, user: FactoryBot.create(:user)) } content { "🙂" } end end diff --git a/spec/lib/exporter_spec.rb b/spec/lib/exporter_spec.rb index 1f874119..1d66d0f8 100644 --- a/spec/lib/exporter_spec.rb +++ b/spec/lib/exporter_spec.rb @@ -64,4 +64,37 @@ RSpec.describe Exporter do end end end + + describe "#collect_smiles" do + let!(:smiles) { FactoryBot.create_list(:smile, 25, user: user) } + + subject { instance.send(:collect_smiles) } + + context "exporting a user" do + it "collects reactions" do + subject + expect(instance.instance_variable_get(:@obj)[:smiles]).to eq(smiles.map do |s| + { + id: s.id, + created_at: s.created_at, + answer: { + comment_count: s.parent.comment_count, + content: s.parent.content, + created_at: s.parent.created_at, + id: s.parent.id, + question: { + answer_count: s.parent.question.answer_count, + author_is_anonymous: s.parent.question.author_is_anonymous, + content: s.parent.question.content, + created_at: s.parent.question.created_at, + id: s.parent.question.id, + user: nil # we're not populating this in the factory + }, + smile_count: s.parent.smile_count + } + } + end) + end + end + end end