# frozen_string_literal: true

require "rails_helper"
require "exporter"

RSpec.describe Exporter do
  let(:params) { {
    answered_count: 144,
    asked_count: 72,
    comment_smiled_count: 15,
    commented_count: 12,
    confirmation_sent_at: 2.weeks.ago.utc,
    confirmed_at: 2.weeks.ago.utc + 1.hour,
    created_at: 2.weeks.ago.utc,
    current_sign_in_at: 8.hours.ago.utc,
    current_sign_in_ip: '198.51.100.220',
    last_sign_in_at: 1.hour.ago,
    last_sign_in_ip: '192.0.2.14',
    locale: 'en',
    privacy_allow_anonymous_questions: true,
    privacy_allow_public_timeline: false,
    privacy_allow_stranger_answers: false,
    privacy_show_in_search: true,
    screen_name: 'fizzyraccoon',
    show_foreign_themes: true,
    sign_in_count: 10,
    smiled_count: 28,
    profile: {
      display_name: 'Fizzy Raccoon',
      description: 'A small raccoon',
      location: 'Binland',
      motivation_header: '',
      website: 'https://retrospring.net',
    } } }
  let(:user) { FactoryBot.create(:user,
                                 **params) }
  let(:instance) { described_class.new(user) }

  describe '#collect_user_info' do
    subject { instance.send(:collect_user_info) }

    context 'exporting a user' do
      it "collects user info" do
        subject
        expect(instance.instance_variable_get(:@obj)).to eq(params.merge({
                                                                           administrator: false,
                                                                           moderator: false,
                                                                           id: user.id,
                                                                           updated_at: user.updated_at,
                                                                           profile_header: user.profile_header,
                                                                           profile_header_file_name: nil,
                                                                           profile_header_h: nil,
                                                                           profile_header_w: nil,
                                                                           profile_header_x: nil,
                                                                           profile_header_y: nil,
                                                                           profile_picture_file_name: nil,
                                                                           profile_picture_h: nil,
                                                                           profile_picture_w: nil,
                                                                           profile_picture_x: nil,
                                                                           profile_picture_y: nil,
                                                                         }))
      end
    end
  end
end