Merge pull request #87 from snap-cloud/michael/delint

Setup Pronto and Try Some Delints
This commit is contained in:
Michael Ball 2021-02-24 21:25:33 -08:00 committed by GitHub
commit 86133d7fbe
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
38 changed files with 236 additions and 138 deletions

1
.flayignore Normal file
View file

@ -0,0 +1 @@
spec/**/*.rb

24
.github/workflows/pronto.yml vendored Normal file
View file

@ -0,0 +1,24 @@
name: Pronto
on: [pull_request]
jobs:
pronto:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- run: |
git fetch --no-tags --prune --depth=150 origin +refs/heads/*:refs/remotes/origin/*
- name: Setup Ruby
uses: ruby/setup-ruby@v1
- name: Setup bundler # Install only the linters group.
run: bundle config --global set without default development test staging production
- name: Install pronto
run: bundle install --without default development test staging production
- name: Run Pronto
run: pronto run -f github_status github_pr -c origin/${{ github.base_ref }}
env:
PRONTO_PULL_REQUEST_ID: ${{ github.event.pull_request.number }}
PRONTO_GITHUB_ACCESS_TOKEN: "${{ github.token }}"

View file

@ -15,6 +15,14 @@ AllCops:
#################### Style ###########################
Style/CommentAnnotation:
Keywords:
- TODO-SNAPCON
- TODO
- OPTIMIZE
- HACK
- REVIEW
##################### Metrics ##################################
##################### Rails ##################################

View file

@ -39,7 +39,6 @@ env:
matrix:
- TEST_SUITE=ability
- TEST_SUITE=features
- TEST_SUITE=linters
- TEST_SUITE=models
- TEST_SUITE=controllers
- TEST_SUITE=rest

23
Gemfile
View file

@ -115,8 +115,8 @@ end
gem 'bootstrap3-datetimepicker-rails', '~> 4.17.47'
# data tables
gem 'jquery-datatables'
gem 'ajax-datatables-rails'
gem 'jquery-datatables'
# for charts
gem 'chartkick'
@ -141,9 +141,9 @@ gem 'rqrcode'
gem 'axlsx', git: 'https://github.com/randym/axlsx.git'
gem 'axlsx_rails'
gem 'sentry-ruby'
gem 'sentry-rails'
gem 'sentry-delayed_job'
gem 'sentry-rails'
gem 'sentry-ruby'
# to make links faster
gem 'turbolinks'
@ -225,11 +225,7 @@ gem 'dalli'
group :development do
# to launch specs when files are modified
gem 'guard-rspec'
gem 'haml_lint'
gem 'spring-commands-rspec'
# for static code analisys
gem 'rubocop', require: false
gem 'rubocop-rspec'
# to open mails
gem 'letter_opener'
# view mail at /letter_opener/
@ -240,6 +236,7 @@ group :development do
gem 'web-console'
# as development database
gem 'sqlite3'
# prepend models with db schema
gem 'annotate'
end
@ -272,7 +269,17 @@ group :test do
gem 'pdf-inspector', require: "pdf/inspector"
end
group :development, :test do
group :development, :test, :linters do
# as debugger
gem 'byebug'
gem 'pry'
# Linters and static analysis.
gem 'pronto', require: false
gem 'pronto-flay', require: false
gem 'pronto-haml', require: false
gem 'pronto-rubocop', require: false
gem 'rubocop-rspec', require: false
gem 'haml-lint', require: false
end

View file

@ -184,6 +184,11 @@ GEM
fastimage (2.1.4)
feature (1.4.0)
ffi (1.10.0)
flay (2.12.1)
erubis (~> 2.7.0)
path_expander (~> 1.0)
ruby_parser (~> 3.0)
sexp_processor (~> 4.0)
font-awesome-rails (4.7.0.5)
railties (>= 3.2, < 6.1)
formatador (0.2.5)
@ -193,6 +198,9 @@ GEM
formtastic (>= 3.0)
geckodriver-helper (0.23.0)
archive-zip (~> 0.7)
gitlab (4.17.0)
httparty (~> 0.18)
terminal-table (~> 1.5, >= 1.5.1)
globalid (0.4.2)
activesupport (>= 4.2.0)
gravtastic (3.2.6)
@ -213,6 +221,8 @@ GEM
haml (5.0.4)
temple (>= 0.8.0)
tilt
haml-lint (0.999.999)
haml_lint
haml-rails (1.0.0)
actionpack (>= 4.0.1)
activesupport (>= 4.0.1)
@ -236,6 +246,9 @@ GEM
htmlentities (4.3.4)
http-cookie (1.0.3)
domain_name (~> 0.5)
httparty (0.18.1)
mime-types (~> 3.0)
multi_xml (>= 0.5.2)
i18n (1.8.9)
concurrent-ruby (~> 1.0)
i18n_data (0.8.0)
@ -320,6 +333,9 @@ GEM
multi_json (~> 1.3)
multi_xml (~> 0.5)
rack (>= 1.2, < 3)
octokit (4.20.0)
faraday (>= 0.9)
sawyer (~> 0.8.0, >= 0.5.3)
omniauth (1.9.1)
hashie (>= 3.4.6)
rack (>= 1.6.2, < 3)
@ -349,6 +365,7 @@ GEM
parallel (1.18.0)
parser (2.6.5.0)
ast (~> 2.4.0)
path_expander (1.1.0)
pdf-core (0.7.0)
pdf-inspector (1.3.0)
pdf-reader (>= 1.0, < 3.0.a)
@ -375,6 +392,24 @@ GEM
rails (>= 3.1.0)
prawn-table (0.2.2)
prawn (>= 1.3.0, < 3.0.0)
pronto (0.11.0)
gitlab (~> 4.4, >= 4.4.0)
httparty (>= 0.13.7)
octokit (~> 4.7, >= 4.7.0)
rainbow (>= 2.2, < 4.0)
rexml (~> 3.2)
rugged (>= 0.23.0, < 1.1.0)
thor (>= 0.20.3, < 2.0)
pronto-flay (0.11.0)
flay (~> 2.8)
pronto (~> 0.11.0)
pronto-haml (0.11.0)
haml_lint (~> 0.23)
pronto (~> 0.11.0)
rubocop (< 1.0)
pronto-rubocop (0.11.1)
pronto (~> 0.11.0)
rubocop (>= 0.63.1, < 2.0)
pry (0.10.4)
coderay (~> 1.1.0)
method_source (~> 0.8.1)
@ -463,6 +498,7 @@ GEM
http-cookie (>= 1.0.2, < 2.0)
mime-types (>= 1.16, < 4.0)
netrc (~> 0.8)
rexml (3.2.4)
rolify (5.2.0)
rqrcode (0.10.1)
chunky_png (~> 1.0)
@ -509,6 +545,7 @@ GEM
ruby_parser (3.11.0)
sexp_processor (~> 4.9)
rubyzip (1.3.0)
rugged (1.0.1)
safe_yaml (1.0.4)
sass (3.7.2)
sass-listen (~> 4.0.0)
@ -524,6 +561,9 @@ GEM
sassc (2.0.1)
ffi (~> 1.9)
rake
sawyer (0.8.2)
addressable (>= 2.3.5)
faraday (> 0.8, < 2.0)
selectize-rails (0.12.6)
selenium-webdriver (3.142.6)
childprocess (>= 0.5, < 4.0)
@ -575,6 +615,8 @@ GEM
stripe (> 5, < 6)
sysexits (1.2.0)
temple (0.8.0)
terminal-table (1.8.0)
unicode-display_width (~> 1.1, >= 1.1.1)
thor (1.1.0)
thread_safe (0.3.6)
tilt (2.0.9)
@ -663,8 +705,8 @@ DEPENDENCIES
geckodriver-helper
gravtastic
guard-rspec
haml-lint
haml-rails
haml_lint
iso-639
jquery-datatables
jquery-rails
@ -689,6 +731,11 @@ DEPENDENCIES
piwik_analytics (~> 1.0.1)
prawn-qrcode
prawn-rails
pronto
pronto-flay
pronto-haml
pronto-rubocop
pry
puma (~> 3.0)
rails (~> 5.2)
rails-assets-bootstrap-markdown!
@ -713,7 +760,6 @@ DEPENDENCIES
rqrcode
rspec-activemodel-mocks
rspec-rails
rubocop
rubocop-rspec
ruby-oembed
sass-rails (>= 4.0.2)

View file

@ -9,7 +9,7 @@ module Admin
def index
@events = Event.accessible_by(current_ability).where(program: @program,
state: [:confirmed, :unconfirmed])
state: [:confirmed, :unconfirmed])
@events_commercials = Commercial.where(commercialable_type: 'Event', commercialable_id: @events.pluck(:id))
@events_missing_commercial = @events.where.not(id: @events_commercials.pluck(:commercialable_id))
@events_with_requirements = @events.where.not(description: ['', nil])

View file

@ -10,21 +10,21 @@ class ApplicationController < ActionController::Base
check_authorization unless: :devise_controller?
skip_authorization_check if:
def store_location
# store last url - this is needed for post-login redirect to whatever the user last visited.
return unless request.get?
def store_location
# store last url - this is needed for post-login redirect to whatever the user last visited.
return unless request.get?
if (request.path != '/accounts/sign_in' &&
request.path != '/accounts/sign_up' &&
request.path != '/accounts/password/new' &&
request.path != '/accounts/password/edit' &&
request.path != '/accounts/confirmation' &&
request.path != '/accounts/sign_out' &&
request.path != '/users/ichain_registration/ichain_sign_up' &&
!request.path.starts_with?(Devise.ichain_base_url) &&
!request.xhr?) # don't store ajax calls
session[:return_to] = request.fullpath
end
if (request.path != '/accounts/sign_in' &&
request.path != '/accounts/sign_up' &&
request.path != '/accounts/password/new' &&
request.path != '/accounts/password/edit' &&
request.path != '/accounts/confirmation' &&
request.path != '/accounts/sign_out' &&
request.path != '/users/ichain_registration/ichain_sign_up' &&
!request.path.starts_with?(Devise.ichain_base_url) &&
!request.xhr?) # don't store ajax calls
session[:return_to] = request.fullpath
end
end
def after_sign_in_path_for(_resource)

View file

@ -66,7 +66,7 @@ class ConferenceRegistrationsController < ApplicationController
end
elsif @conference.registration_ticket_required? && !current_user.supports?(@conference)
redirect_to conference_tickets_path(@conference.short_title),
error: 'You must buy a registration ticket before registering.'
error: 'You must buy a registration ticket before registering.'
else
flash.now[:error] = "Could not create your registration for #{@conference.title}: "\
"#{@registration.errors.full_messages.join('. ')}."

View file

@ -27,7 +27,7 @@ class UsersController < ApplicationController
def user_params
params.require(:user).permit(:name, :biography, :nickname, :affiliation,
:picture, :picture_cache)
:picture, :picture_cache)
end
# Somewhat of a hack: users/current/edit

View file

@ -1,4 +1,3 @@
# frozen_string_literal: true
class UserDatatable < AjaxDatatablesRails::Base

View file

@ -188,7 +188,8 @@ module ApplicationHelper
'hidden' if Date.today > conference.end_date
end
# TODO:Snap!Con: Replace this with a search for a conference logo.
# TODO-SNAPCON: Replace this with a search for a conference logo.
# TODO: If conference is defined, the alt text should be conference name.
def nav_root_link_for(conference = nil)
path = conference&.id.present? ? conference_path(conference) : root_path
link_to(
@ -201,8 +202,8 @@ module ApplicationHelper
def nav_link_text(conference)
conference.try(:organization).try(:name) ||
ENV['OSEM_NAME'] ||
'OSEM'
ENV['OSEM_NAME'] ||
'OSEM'
end
# returns the url to be used for logo on basis of sponsorship level position

View file

@ -24,6 +24,7 @@ module ConferenceHelper
def short_ticket_description(ticket)
return unless ticket.description
markdown(ticket.description.split("\n").first&.strip)
end
end

View file

@ -164,7 +164,7 @@ module EventsHelper
conference_id,
event.id,
event.send(attribute),
url: admin_conference_program_event_path(
url: admin_conference_program_event_path(
conference_id,
event,
event: { attribute => nil }
@ -183,7 +183,7 @@ module EventsHelper
if current_user.roles.where(id: conference.roles).any?
# Show Pre-Event links for any memeber of the conference team.
link_to("Join Live Event #{'(Admin link)' unless is_now}",
event.url, target: '_blank')
event.url, target: '_blank')
elsif current_user.registered_to_event?(conference)
if is_now
link_to('Join Live Event', event.url, target: '_blank')
@ -206,12 +206,12 @@ module EventsHelper
start_timestamp = calendar_timestamp(event_schedule.start_time, conference.timezone)
end_timestamp = calendar_timestamp(event_schedule.end_time, conference.timezone)
event_details = {
action: 'TEMPLATE',
text: "#{event.title} at #{conference.title}",
details: calendar_event_text(event, event_schedule, conference),
action: 'TEMPLATE',
text: "#{event.title} at #{conference.title}",
details: calendar_event_text(event, event_schedule, conference),
location: "#{event.room.name} #{event.url}",
dates: "#{start_timestamp}/#{end_timestamp}",
ctz: event_schedule.timezone
dates: "#{start_timestamp}/#{end_timestamp}",
ctz: event_schedule.timezone
}
"#{calendar_base}?#{event_details.to_param}"
end
@ -220,13 +220,13 @@ module EventsHelper
def calendar_event_text(event, event_schedule, conference)
<<~TEXT
#{conference.title} - #{event.title}
#{event_schedule.start_time.strftime("%Y %B %e - %H:%M")} #{event_schedule.timezone}
#{conference.title} - #{event.title}
#{event_schedule.start_time.strftime('%Y %B %e - %H:%M')} #{event_schedule.timezone}
More Info: #{conference_program_proposal_url(conference, event)}
Join: #{event.url}
More Info: #{conference_program_proposal_url(conference, event)}
Join: #{event.url}
#{truncate(event.abstract, length: 200)}
#{truncate(event.abstract, length: 200)}
TEXT
end

View file

@ -184,12 +184,12 @@ module FormatHelper
return '' if text.nil?
options = {
autolink: true,
autolink: true,
space_after_headers: true,
tables: true,
strikethrough: true,
footnotes: true,
superscript: true
tables: true,
strikethrough: true,
footnotes: true,
superscript: true
}
markdown = Redcarpet::Markdown.new(Redcarpet::Render::HTML.new(escape_html: escape_html), options)
markdown.render(text).html_safe

View file

@ -86,7 +86,7 @@ class Conference < ApplicationRecord
has_many :highlighted_events,
-> { where(state: :confirmed, is_highlight: true) },
through: :program,
source: :events
source: :events
has_many :event_types, through: :program
has_many :surveys, as: :surveyable, dependent: :destroy do

View file

@ -310,7 +310,6 @@ class Event < ApplicationRecord
event_schedules.find_by(schedule_id: selected_schedule_id).try(:happening_now?)
end
##
# Returns true or false, if the event is already over or not
#

View file

@ -14,7 +14,7 @@
#
class EventUser < ApplicationRecord
ROLES = [%w[Speaker speaker], %w[Submitter submitter], %w[Moderator moderator],
%w[Volunteer volunteer]]
%w[Volunteer volunteer]]
belongs_to :event, touch: true
belongs_to :user

View file

@ -37,7 +37,7 @@ class Payment < ApplicationRecord
end
def stripe_description
#"ticket purchases(#{user.username})"
# "ticket purchases(#{user.username})"
"Tickets for #{conference.title} #{user.name} #{user.email}"
end

View file

@ -85,7 +85,7 @@ class Registration < ApplicationRecord
def user_has_registration_ticket
return if conference.registration_ticket_required? &&
TicketPurchase.where(user: user, ticket: conference.registration_tickets).paid.any?
TicketPurchase.where(user: user, ticket: conference.registration_tickets).paid.any?
errors.add(:base, 'You must purchase a registration ticket before registering')
if TicketPurchase.where(user: user, ticket: conference.registration_tickets).unpaid.any?

View file

@ -122,6 +122,7 @@ end
def count_purchased_registration_tickets(conference, purchases)
# TODO: WHAT CAUSED THIS???
return 0 unless purchases
conference.tickets.for_registration.inject(0) do |sum, registration_ticket|
sum + purchases[registration_ticket.id.to_s].to_i
end

View file

@ -101,9 +101,8 @@ class User < ApplicationRecord
[:database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable, :confirmable,
:omniauthable,
omniauth_providers: [:suse, :google, :facebook, :github, :discourse]
omniauth_providers: [:suse, :google, :facebook, :github, :discourse]]
# omniauth_providers: [:google, :discourse]
]
end
devise(*devise_modules)
@ -206,6 +205,7 @@ class User < ApplicationRecord
# Partials should *not* directly call `gravatar_url`
def profile_picture(opts = {})
return gravatar_url(opts) unless picture.present?
size = (opts[:size] || 0).to_i
if size < 50
picture.tiny.url
@ -346,7 +346,6 @@ class User < ApplicationRecord
events.where(program_id: conference.program.id, 'event_users.event_role': 'volunteer')
end
def self.empty?
User.count == 1 && User.first.email == 'deleted@localhost.osem'
end

View file

@ -14,9 +14,9 @@ Devise.setup do |config|
name: 'google',
scope: 'email'
# TODO (snapcon): This ought to be configurable. Use OSEM_DISCOURSE_KEY?
# TODO-SNAPCON: This ought to be configurable. Use OSEM_DISCOURSE_KEY?
config.omniauth :discourse,
sso_url: 'https://forum.snap.berkeley.edu/session/sso_provider',
sso_url: 'https://forum.snap.berkeley.edu/session/sso_provider',
sso_secret: ENV['OSEM_DISCOURSE_SECRET']
config.omniauth :facebook,

View file

@ -46,9 +46,9 @@ end
lowlevel_error_handler do |ex, env|
Sentry.capture_exception(
ex,
:message => ex.message,
:extra => { :puma => env },
:transaction => "Puma"
message: ex.message,
extra: { puma: env },
transaction: "Puma"
)
# note the below is just a Rack response
[500, {}, ["An error has occurred, and engineers have been informed. Please reload the page. If you continue to have problems, contact conference@snap.berkeley.edu\n"]]

View file

@ -7,51 +7,51 @@ if Rails.env.development?
# You can override any of these by setting an environment variable of the
# same name.
Annotate.set_defaults(
'active_admin' => 'false',
'additional_file_patterns' => [],
'routes' => 'false',
'models' => 'true',
'position_in_routes' => 'before',
'position_in_class' => 'before',
'position_in_test' => 'before',
'position_in_fixture' => 'before',
'position_in_factory' => 'before',
'position_in_serializer' => 'before',
'show_foreign_keys' => 'true',
'show_complete_foreign_keys' => 'false',
'show_indexes' => 'true',
'simple_indexes' => 'false',
'model_dir' => 'app/models',
'root_dir' => '',
'include_version' => 'false',
'require' => '',
'exclude_tests' => 'false',
'exclude_fixtures' => 'false',
'exclude_factories' => 'false',
'exclude_serializers' => 'false',
'exclude_scaffolds' => 'true',
'exclude_controllers' => 'true',
'exclude_helpers' => 'true',
'exclude_sti_subclasses' => 'false',
'ignore_model_sub_dir' => 'false',
'ignore_columns' => nil,
'ignore_routes' => nil,
'ignore_unknown_models' => 'false',
'hide_limit_column_types' => 'integer,bigint,boolean',
'hide_default_column_types' => 'json,jsonb,hstore',
'skip_on_db_migrate' => 'false',
'format_bare' => 'true',
'format_rdoc' => 'false',
'format_yard' => 'false',
'format_markdown' => 'false',
'sort' => 'false',
'force' => 'false',
'frozen' => 'false',
'classified_sort' => 'true',
'trace' => 'false',
'wrapper_open' => nil,
'wrapper_close' => nil,
'with_comment' => 'true'
'active_admin' => 'false',
'additional_file_patterns' => [],
'routes' => 'false',
'models' => 'true',
'position_in_routes' => 'before',
'position_in_class' => 'before',
'position_in_test' => 'before',
'position_in_fixture' => 'before',
'position_in_factory' => 'before',
'position_in_serializer' => 'before',
'show_foreign_keys' => 'true',
'show_complete_foreign_keys' => 'false',
'show_indexes' => 'true',
'simple_indexes' => 'false',
'model_dir' => 'app/models',
'root_dir' => '',
'include_version' => 'false',
'require' => '',
'exclude_tests' => 'false',
'exclude_fixtures' => 'false',
'exclude_factories' => 'false',
'exclude_serializers' => 'false',
'exclude_scaffolds' => 'true',
'exclude_controllers' => 'true',
'exclude_helpers' => 'true',
'exclude_sti_subclasses' => 'false',
'ignore_model_sub_dir' => 'false',
'ignore_columns' => nil,
'ignore_routes' => nil,
'ignore_unknown_models' => 'false',
'hide_limit_column_types' => 'integer,bigint,boolean',
'hide_default_column_types' => 'json,jsonb,hstore',
'skip_on_db_migrate' => 'false',
'format_bare' => 'true',
'format_rdoc' => 'false',
'format_yard' => 'false',
'format_markdown' => 'false',
'sort' => 'false',
'force' => 'false',
'frozen' => 'false',
'classified_sort' => 'true',
'trace' => 'false',
'wrapper_open' => nil,
'wrapper_close' => nil,
'with_comment' => 'true'
)
end

View file

@ -98,7 +98,7 @@ describe Admin::ConferencesController do
expect(response).to render_template :show
end
# TODO (snapcon): This is currently disabled due to slow performance.
# TODO-SNAPCON: This is currently disabled due to slow performance.
skip 'assigns conference withdrawn events distribution to event_type_distribution_withdrawn' do
conference
create(:event, program: conference.program)
@ -122,7 +122,7 @@ describe Admin::ConferencesController do
expect(assigns(:event_type_distribution_withdrawn)).to eq(result)
end
# TODO (snapcon): This is currently disabled due to slow performance.
# TODO-SNAPCON: This is currently disabled due to slow performance.
skip 'assigns conference withdrawn difficulty level distribution to difficulty_levels_distribution_withdrawn' do
conference
create(:event, program: conference.program)
@ -146,7 +146,7 @@ describe Admin::ConferencesController do
expect(assigns(:difficulty_levels_distribution_withdrawn)).to eq(result)
end
# TODO (snapcon): This is currently disabled due to slow performance.
# TODO-SNAPCON: This is currently disabled due to slow performance.
skip 'assigns conference withdrawn track distribution to tracks_distribution_withdrawn' do
conference
create(:event, program: conference.program)

View file

@ -69,8 +69,8 @@ describe Admin::TicketsController do
it 'creates new ticket' do
expect do
post :create, params: {
ticket: attributes_for(:ticket),
conference_id: conference
ticket: attributes_for(:ticket),
conference_id: conference
}
end.to change{ conference.tickets.count }.from(ticket_count).to(ticket_count + 1)
end

View file

@ -8,7 +8,7 @@ describe UserDatatable do
end
let(:data_cols) do
[:id, :confirmed_at, :email, :name, :attended, :roles, :view_url, :edit_url, :DT_RowId]
[:id, :confirmed_at, :email, :name, :username, :attended, :roles, :view_url, :edit_url, :DT_RowId]
end
let(:view) do
view = double(

View file

@ -68,8 +68,8 @@ feature Commercial do
end
scenario 'does not add an invalid commercial of an event', feature: true, js: true do
# TODO (snapcon)
skip("Snap!Con allows all materials to be saved.")
# TODO-SNAPCON
skip('Snap!Con allows all materials to be saved.')
visit edit_conference_program_proposal_path(conference.short_title, event.id)
click_link 'Materials'
fill_in 'commercial_url', with: 'invalid_commercial_url'

View file

@ -193,7 +193,7 @@ feature 'Has correct abilities' do
other_user = create(:user)
ticket = conference.registration_tickets.first
create(:paid_ticket_purchase,
user: other_user, ticket: ticket, quantity: 1, conference: conference)
user: other_user, ticket: ticket, quantity: 1, conference: conference)
create(:registration, user: other_user, conference: conference)
visit edit_admin_conference_registration_path(conference.short_title, conference.registrations.first)
expect(current_path).to eq(edit_admin_conference_registration_path(conference.short_title, conference.registrations.first))

View file

@ -61,7 +61,7 @@ feature 'Has correct abilities' do
expect(page).to_not have_link('New Conference', href: '/admin/conferences/new')
visit admin_conference_path(other_conference.short_title)
# TODO (snapcon): This conference already seems to have a venue.
# TODO-SNAPCON: This conference already seems to have a venue.
# expect(page).to have_link('Add venue', href: "/admin/conferences/#{other_conference.short_title}/venue/new")
visit edit_admin_conference_path(conference.short_title)
@ -200,7 +200,7 @@ feature 'Has correct abilities' do
other_user = create(:user)
ticket = conference.registration_tickets.first
create(:paid_ticket_purchase,
user: other_user, ticket: ticket, quantity: 1, conference: conference)
user: other_user, ticket: ticket, quantity: 1, conference: conference)
create(:registration, user: other_user, conference: conference)
visit edit_admin_conference_registration_path(conference.short_title, conference.registrations.first)
expect(current_path).to eq(edit_admin_conference_registration_path(conference.short_title, conference.registrations.first))

View file

@ -231,7 +231,7 @@ feature 'Version' do
expect(page).to have_text("Someone (probably via the console) deleted difficulty level Expert with ID #{difficulty_level_id} in conference #{conference.short_title}")
end
# TODO (snapcon): Figure out why this is failing!!
# TODO-SNAPCON: Figure out why this is failing!!
skip 'display changes in splashpages', feature: true, versioning: true, js: true do
visit admin_conference_splashpage_path(conference.short_title)
click_link 'Create Splashpage'
@ -300,7 +300,7 @@ feature 'Version' do
visit admin_conference_program_event_path(conference.short_title, event_with_commercial)
click_link 'History'
# TODO (snapcon): Figure out why this is here...
# TODO-SNAPCON: Figure out why this is here...
# expect(page).to have_text('Someone (probably via the console) created new commercial')
visit admin_conference_program_event_path(conference.short_title, event_without_commercial)
click_link 'History'

View file

@ -62,22 +62,36 @@ describe ApplicationHelper, type: :helper do
end
end
describe 'navigation title link' do
describe 'navigation image link' do
it 'should default to OSEM' do
ENV.delete('OSEM_NAME')
# TODO:Snap!Con: expect(nav_root_link_for(nil)).to match 'OSEM'
expect(nav_root_link_for(nil)).to match image_tag('snapcon_logo.png')
expect(nav_root_link_for(nil)).to include image_tag('snapcon_logo.png', alt: 'OSEM')
end
it 'should use the environment variable' do
ENV['OSEM_NAME'] = Faker::Company.name + "'"
# expect(nav_root_link_for(nil)).to match h(ENV['OSEM_NAME'])
expect(nav_root_link_for(nil)).to match image_tag('snapcon_logo.png')
expect(nav_root_link_for(nil)).to include image_tag('snapcon_logo.png', alt: ENV['OSEM_NAME'])
end
# TODO-SNAPCON: This is an indicator in a conference it should be the conference name.
it 'should use the conference organization name' do
expect(nav_root_link_for(conference)).to include image_tag('snapcon_logo.png', alt: conference.organization.name)
end
end
describe 'navigation link titke text' do
it 'should default to OSEM' do
ENV.delete('OSEM_NAME')
expect(nav_link_text(nil)).to match 'OSEM'
end
it 'should use the environment variable' do
ENV['OSEM_NAME'] = Faker::Company.name + "'"
expect(nav_link_text(nil)).to match ENV['OSEM_NAME']
end
it 'should use the conference organization name' do
# expect(nav_root_link_for(conference)).to match h(conference.organization.name)
expect(nav_root_link_for(nil)).to match image_tag('snapcon_logo.png')
expect(nav_link_text(conference)).to match conference.organization.name
end
end
end

View file

@ -13,12 +13,12 @@ describe FormatHelper, type: :helper do
expect(Redcarpet::Markdown).to receive(:new)
.with(
Redcarpet::Render::HTML,
autolink: true,
autolink: true,
space_after_headers: true,
tables: true,
strikethrough: true,
footnotes: true,
superscript: true
tables: true,
strikethrough: true,
footnotes: true,
superscript: true
)
.and_call_original

View file

@ -36,7 +36,7 @@
#
# index_conferences_on_organization_id (organization_id)
#
#!/bin/env ruby
# !/bin/env ruby
require 'spec_helper'
describe Conference do

View file

@ -45,7 +45,7 @@ describe Registration do
describe 'association' do
it { is_expected.to belong_to(:user) }
# TODO (snapcon): This fails because conference is nil, but obviously this works...
# TODO-SNAPCON: This fails because conference is nil, but obviously this works...
# it { is_expected.to belong_to(:conference) }
it { is_expected.to have_and_belong_to_many(:qanswers) }
it { is_expected.to have_and_belong_to_many(:vchoices) }

View file

@ -35,6 +35,7 @@ def mock_commercial_request
end
def mock_image_request
WebMock.stub_request(:post, "https://api.cloudinary.com/v1_1/snapcon/image/destroy").
to_return(status: 200, body: {}.to_json, headers: {})
# TODO-SNAPCON: This needs to be configurable somehow.
WebMock.stub_request(:post, 'https://api.cloudinary.com/v1_1/snapcon/image/destroy')
.to_return(status: 200, body: {}.to_json, headers: {})
end

View file

@ -15,8 +15,6 @@ module OmniauthMacros
ENV['OSEM_DISCOURSE_KEY'] = 'test key discourse'
ENV['OSEM_DISCOURSE_SECRET'] = 'test secret discourse'
def mock_auth_new_user
OmniAuth.config.mock_auth[:google] =
OmniAuth::AuthHash.new(