require 'spec_helper'
require 'pry'

RSpec.describe QAHelpers::FeaturesParser do
  before :all do
    @cucumber_pwd = File.join(Dir.pwd, 'spec/test_data')
  end

  let(:parser) do
    QAHelpers::FeaturesParser.new(@cucumber_pwd)
  end

  it 'detects all .feature files' do
    expected_feature_files = %w[
      /features/some_dir/some_dir1/test_feature3.feature
      /features/some_dir/test_feature2.feature
      /features/test_feature1.feature
    ]

    feature_files = parser.send(:all_feature_files).map { |x| x.gsub(@cucumber_pwd, '') }
    expect(feature_files).to match_array(expected_feature_files)
  end

  it 'gets list of users in each feature file' do
    users_to_features = parser.send(:users_to_features)
    expected_users = %w[
      label_7482
      label_10303
      label_7123
    ]
    expect(users_to_features.keys).to match_array(expected_users)
    expect(users_to_features['label_7482'][:features]).to match_array(
      %w[
        /features/some_dir/test_feature2.feature
        /features/test_feature1.feature
        /features/test_feature1.feature
      ]
    )
    expect(users_to_features['label_10303'][:features].count).to eq(3)
    expect(users_to_features['label_7123'][:features].count).to eq(1)
  end

  it 'gets user details using user_config.yml file' do
    user_details = parser.send(:label_details, :label_7482)
    expect(user_details[:id]).to eq(7482)
  end

  it 'gives stdout result' do
    expect(parser.users_to_features_stdout).to be
  end

  it 'generates an XLS file' do
    expect(parser.users_to_features_xls).to include(
      "#{QAHelpers::FeaturesParser::XLS_FILE_NAME} file was successfully created."
    )
  end
end
