Add headings to header tags (#1003)

* updating all headers to have h* tags, or changing elements

* Remove commented out binding.pry

* Remove unused page

* Use article instead of div for consistency

* Update snapshot with new section tag

* Use h4 tags again for new views
This commit is contained in:
Ashwin Vaswani 2018-12-19 13:47:44 -08:00 committed by Ben Halpern
parent bbbfe6af51
commit fbdd80d5fc
50 changed files with 99 additions and 179 deletions

View file

@ -44,7 +44,7 @@
border-top-right-radius:2px;
}
}
header{
article{
padding:0px 0px;
position:relative;
.image{

View file

@ -964,6 +964,9 @@
&:hover{
opacity:1;
}
h4{
margin: 0;
}
&.signin-cta-widget{
background: lighten($purple, 3%);
border: 1px solid darken($bold-blue, 5%);
@ -1030,6 +1033,10 @@
font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace;
a{
color: $black;
h4{
display: inline-block;
margin: 0;
}
&:hover{
text-decoration: underline;
}

View file

@ -35,6 +35,10 @@
@media screen and ( min-width: 430px ){
font-size:19px;
}
h4{
margin: 0;
font-weight: 500;
}
}
a{
color:$black;
@ -66,4 +70,4 @@
font-size:18.5px;
}
}
}
}

View file

@ -3,6 +3,9 @@
.sidebar-additional{
.widget{
.widget-suggested-follows-container{
h4{
margin: 0;
}
.widget-body{
.widget-list-item__suggestions{
.widget-list-item__close-button{

View file

@ -24,7 +24,7 @@ exports[`<Article /> should load article 1`] = `
<div
class="container"
>
<header>
<section>
<div
class="image image-final"
style={
@ -33,7 +33,7 @@ exports[`<Article /> should load article 1`] = `
}
}
/>
</header>
</section>
<div
class="title"
>

View file

@ -100,7 +100,7 @@ export default class Article extends Component {
});
let coverImage = '';
if (article.cover_image) {
coverImage = <header><div class="image image-final" style={{backgroundImage:`url(${article.cover_image}`}}></div></header>
coverImage = <section><div class="image image-final" style={{backgroundImage:`url(${article.cover_image}`}}></div></section>
}
return (
<div className='activechatchannel__activeArticle'>

View file

@ -79,7 +79,7 @@ class SidebarWidget extends Component {
return (
<div className="widget" id="widget-00001">
<div className="widget-suggested-follows-container">
<header>{'who to follow'}</header>
<header><h4>who to follow</h4></header>
<div className="widget-body">{users}</div>
</div>
</div>

View file

@ -85,13 +85,13 @@
<div id="article-preview" class="editor-view editor-article-view hidden">
<div class="container article" style="padding-bottom: 50px;">
<header id="image_area">
<article id="image_area">
<div id="image_preview">
<div class="image" id="main_image"></div>
</div>
<div class="blank-space" id="blank_space">
</div>
</header>
</article>
<div class="title">
<% if current_user.organization %>
<a href="<%= current_user.organization.path %>" class="org-branded-title-link">
@ -100,7 +100,7 @@
</div>
</a>
<% end %>
<h1 id="article_title" >
<h1 id="article_title">
</h1>
<h3>
<a href="/<%= @user.username %>">

View file

@ -5,7 +5,7 @@
<%= render "articles/sidebar_nav" %>
<div class="widget sponsorship-widget <%= "showing" unless user_signed_in? %>" id="sponsorship-widget">
<header>
<a href="/sponsors">community sponsors</a>
<a href="/sponsors"><h4>community sponsors</h4></a>
<span class="emoji">
<img src="<%= asset_path "emoji/emoji-one-heart.png" %>" alt="emoji heart"/>
</span>
@ -56,7 +56,7 @@
</div>
<div class="widget">
<header>
key links
<h4>key links</h4>
</header>
<div class="widget-body">
<a href="https://twitter.com/thepracticaldev" target="_blank" rel="noopener"><img src="<%= asset_path("twitter-logo.svg") %>" alt="Twitter logo" class="social-icon" /></a>

View file

@ -4,7 +4,7 @@
<% unless user_signed_in? %>
<div class="widget signin-cta-widget">
<header>
DEV.TO(GETHER)
<h4>DEV.TO(GETHER)</h4>
</header>
<div class="widget-body">
<center style="margin-bottom: 2px;">
@ -28,7 +28,7 @@
<% ApplicationConfig["TRENDING_TAGS"].split(",").each do |tag| %>
<div class="widget">
<header>
<a href="/t/<%= tag %>">#<%= tag %></a>
<a href="/t/<%= tag %>"><h4>#<%= tag %></h4></a>
</header>
<div class="widget-body">
<div class="widget-link-list">
@ -44,7 +44,7 @@
<% if Article.active_help.any? %>
<div class="widget">
<header>
<a href="/t/help">#help</a>
<a href="/t/help"><h4>#help</h4></a>
</header>
<div class="widget-body">
<div class="widget-link-list">
@ -59,7 +59,7 @@
<% if Article.active_threads(["ama"], Timeframer.new(params[:timeframe]).datetime).any? %>
<div class="widget">
<header>
<a href="/t/ama">#ama</a>
<a href="/t/ama"><h4>#ama</h4></a>
</header>
<div class="widget-body">
<div class="widget-link-list">
@ -75,7 +75,7 @@
<% if Article.active_threads(["challenge"], Timeframer.new(params[:timeframe]).datetime).any? %>
<div class="widget">
<header>
<a href="/t/challenge">#challenge</a>
<a href="/t/challenge"><h4>#challenge</h4></a>
</header>
<div class="widget-body">
<div class="widget-link-list">
@ -90,7 +90,7 @@
<% end %>
<div class="widget">
<header>
<a href="/t/discuss">#discuss</a>
<a href="/t/discuss"><h4>#discuss</h4></a>
</header>
<div class="widget-body">
<div class="widget-link-list">
@ -104,7 +104,7 @@
</div>
<div class="widget">
<header>
<a href="/t/explainlikeimfive">#explainlikeimfive</a>
<a href="/t/explainlikeimfive"><h4>#explainlikeimfive</h4></a>
</header>
<div class="widget-body">
<div class="widget-link-list">
@ -118,7 +118,7 @@
</div>
<div class="widget">
<header>
<a href="/t/healthydebate">#healthydebate</a>
<a href="/t/healthydebate"><h4>#healthydebate</h4></a>
</header>
<div class="widget-body">
<div class="widget-link-list">
@ -132,7 +132,7 @@
</div>
<div class="widget">
<header>
<a href="/t/meta">#meta</a>
<a href="/t/meta"><h4>#meta</h4></a>
</header>
<div class="widget-body">
<div class="widget-link-list">
@ -147,7 +147,7 @@
<% if user_signed_in? %>
<div class="widget" id="podcast-widget">
<header>
<a href="/pod">latest podcasts</a>
<a href="/pod"><h4>latest podcasts</h4></a>
</header>
<div class="widget-body">
<% @podcast_episodes.each do |ep| %>
@ -167,7 +167,7 @@
<% if @boostable_posts.any? %>
<div class="widget">
<header>
trending guides/resources
<h4>trending guides/resources</h4>
</header>
<div class="widget-body">
<div class="widget-link-list">

View file

@ -8,7 +8,7 @@
<a href="<%= article.path %>" style="display:block;color:#0e0e0e">
<div class="widget">
<header>
<span class="emoji">💪</span> <%= article.title %>
<h4><span class="emoji">💪</span> <%= article.title %></h4>
</header>
<img src="<%= ProfileImage.new(article.user).get(420) %>" style="cursor:pointer;" alt="<%= article.user.username %>"/>
</div>

View file

@ -3,7 +3,7 @@
<div class="side-bar">
<div class="widget fixed-widget">
<header>
search results
<h4>search results</h4>
</header>
<div class="widget-body" style="margin-bottom:16px;">
<a class="query-filter-button" data-filter="class_name:Article">POSTS</a>

View file

@ -75,7 +75,7 @@
<% if @article.video_state == "PROGRESSING" %>
<h1 style="text-align:center;">⏳ Video Transcoding In Progress ⏳</h1>
<% end %>
<section itemscope itemtype="http://schema.org/Article" itemprop="mainEntityOfPage">
<article itemscope itemtype="http://schema.org/Article" itemprop="mainEntityOfPage">
<meta itemprop="url" content="https://dev.to<%=@article.path%>">
<meta itemprop="image" content="<%= cloud_social_image(@article) %>">
<div itemprop="publisher" itemscope itemtype="https://schema.org/Organization">
@ -86,7 +86,7 @@
</div>
<meta itemprop="name" content="DEV Community">
</div>
<header>
<section>
<% if !@article.published %>
<a href="<%=@article.path %>/edit" class="unpublished">
Unpublished Post. This URL is public but secret, so share at your own discretion. <em style="display: inline-block;">Click to edit.</em>
@ -100,8 +100,8 @@
<% else %>
<div class="blank-space"></div>
<% end %>
</header>
<div class="title" id="main-title">
</section>
<header class="title" id="main-title">
<% if @organization %>
<a href="<%= @organization.path %>" class="org-branded-title-link">
<div class="org-branded-title">
@ -159,7 +159,7 @@
<a class="tag" href="/t/<%= tag %>" style="background-color:<%=tag_colors(tag)[:background] %>;color:<%=tag_colors(tag)[:color] %>">#<%= tag %></a>
<% end %>
</div>
</div>
</header>
<%= render "articles/collection", position: "top" %>
<div class="body" data-article-id="<%= @article.id %>" id="article-body" itemprop="articleBody">
<%= @article.processed_html.html_safe %>
@ -168,7 +168,7 @@
<%= render "articles/collection", position: "bottom" %>
<% end %>
<%= render 'articles/actions' %>
</section>
</article>
<% if @article.body_markdown && @article.body_markdown.size > 900 %>
<% cache("article-about-author-#{@user.id}-#{@user.updated_at}", :expires_in => 100.hours) do %>
<%= render 'articles/about_author' %>

View file

@ -4,7 +4,7 @@
<% if @tag_model && @tag_model.short_summary.present? %>
<div class="widget">
<header>
#<%= @tag %> 👋
<h4>#<%= @tag %> 👋</h4>
</header>
<div class="widget-body">
<%= @tag_model.short_summary.html_safe %>
@ -14,7 +14,7 @@
<% if @tag_model && @tag_model.rules_html.present? %>
<div class="widget">
<header>
submission guidelines
<h4>submission guidelines</h4>
</header>
<div class="widget-body">
<%= @tag_model.rules_html.html_safe %>
@ -27,7 +27,7 @@
<% if @tag_model && @tag_model.wiki_body_html.present? %>
<div class="widget">
<header>
about #<%= @tag %>
<h4>about #<%= @tag %></h4>
</header>
<div class="widget-body">
<%= @tag_model.wiki_body_html.html_safe %>

View file

@ -4,7 +4,7 @@
<% if Article.active_threads([@tag,"discuss"], Timeframer.new(params[:timeframe]).datetime).any? %>
<div class="widget">
<header>
#discuss
<h4>#discuss</h4>
</header>
<div class="widget-body">
<div class="widget-link-list">
@ -26,7 +26,7 @@
<% if @boostable_posts.any? %>
<div class="widget">
<header>
trending guides/resources
<h4>trending guides/resources</h4>
</header>
<div class="widget-body">
<div class="widget-link-list">

View file

@ -1,7 +1,6 @@
<% title "#{@badge.title} Badge" %>
<header>
<div class="blank-space"></div>
</header>
<div class="blank-space"></div>
<div class="container article">
<h1 style="text-align: center;font-size:calc(1.66vw + <%= 34 - (@badge.title.size/1.1).to_i %>px);max-width:96%;margin: 30px auto;padding-top:8px;">🏅 <%= @badge.title %> Badge 🏅</h1>
<div class="body" style="text-align: center">

View file

@ -16,9 +16,7 @@
<meta name="twitter:image:src" content="https://thepracticaldev.s3.amazonaws.com/i/bhavxzyx2e7bdsyvysve.jpg">
<% end %>
<header>
<div class="blank-space"></div>
</header>
<div class="blank-space"></div>
<script type="text/javascript" src="https://addevent.com/libs/atc/1.6.1/atc.min.js" async defer></script>
@ -45,4 +43,4 @@
<%= render 'event', event: event %>
<% end %>
</div>
</div>

View file

@ -26,9 +26,7 @@
<% end %>
<% end %>
<header>
<div class="blank-space"></div>
</header>
<div class="blank-space"></div>
<style>

View file

@ -1,7 +1,7 @@
<h1>Editing Giveaway</h1>
<header class="giveaway-header" style="background-image:url(https://res.cloudinary.com/practicaldev/image/upload/c_scale,f_auto,fl_progressive,q_80,w_1000/v1487774090/stickers_e0antp.png)">
</header>
<div class="giveaway-header" style="background-image:url(https://res.cloudinary.com/practicaldev/image/upload/c_scale,f_auto,fl_progressive,q_80,w_1000/v1487774090/stickers_e0antp.png)">
</div>
<div class="giveaway-container">
<% if !current_user %>

View file

@ -25,8 +25,8 @@
<% end %>
</style>
<header class="giveaway-header" style="background-image:url(https://res.cloudinary.com/practicaldev/image/upload/c_scale,f_auto,fl_progressive,q_80,w_1000/v1487774090/stickers_e0antp.png)">
</header>
<div class="giveaway-header" style="background-image:url(https://res.cloudinary.com/practicaldev/image/upload/c_scale,f_auto,fl_progressive,q_80,w_1000/v1487774090/stickers_e0antp.png)">
</div>
<div class="giveaway-container">
<center>
<p>* * *</p>

View file

@ -26,7 +26,7 @@
<div class="side-bar">
<div class="widget fixed-widget">
<header>
notifications
<h4>notifications</h4>
</header>
<div class="widget-body">
<a class="query-filter-button <%= "selected" if params[:filter].blank? %>" href="/notifications">ALL</a>

View file

@ -4,7 +4,7 @@
<% if @organization.story.present? %>
<div class="widget">
<header>
our story
<h4>our story</h4>
</header>
<div class="widget-body">
<%= sanitized_sidebar @organization.story %>
@ -14,7 +14,7 @@
<% if @organization.tech_stack.present? %>
<div class="widget">
<header>
our stack
<h4>our stack</h4>
</header>
<div class="widget-body">
<%= sanitized_sidebar @organization.tech_stack %>

View file

@ -4,7 +4,7 @@
<% if @organization.users.any? %>
<div class="widget">
<div class="widget-suggested-follows-container">
<header>meet the team</header>
<header><h4>meet the team</h4></header>
<div class="widget-body">
<% @organization.users.each do |user| %>
<div class="widget-user-pic">

View file

@ -48,9 +48,7 @@
}
</style>
<header>
<div class="blank-space"></div>
</header>
<div class="blank-space"></div>
<div class="container article">
<div class="title">
<h1>

View file

@ -1,47 +0,0 @@
<% title "App Academy Information" %>
<%= content_for :page_meta do %>
<link rel="canonical" href="https://dev.to/p/appacademy_info"/>
<meta name="description" content="dev.to | App Academy Information page">
<meta name="keywords" content="software development,engineering,rails,javascript,ruby">
<!-- Currently no OG / social cards, which I think is okay -->
<% end %>
<!-- <p id="notice"><%#= notice %></p> -->
<header>
<div class="blank-space"></div>
</header>
<div class="container article">
<div class="title">
<h1>
Hey there App Academy 👋
</h1>
</div>
<div class="body">
<p>Thanks for checking out <a href="https://dev.to">dev.to</a>, a community where programmers share ideas and help each other grow. We're a place to discover and create articles, have friendly debates, and make new connections and friends.<br>
Anyone is welcome to share articles, questions, and start discussions. You can also cross-post from your own blog (including setting the canonical_url)!<br>
We're excited that the friendly folks at <a href="https://www.appacademy.io/">AppAcademy</a> have sent you our way. There are a few ways you can get started on the site:</p>
<h2>Create an Account</h2>
<p>You can sign up by authenticating via Twitter and/or GitHub. Youll then be able to write an intro post, fill out your profile, and start following authors and tags.</p>
<h2>Leave a Comment</h2>
<p>A great way to start engaging with the community is by leaving a comment. It can be as simple as “Great article” or “Thanks for sharing.” Because the articles on dev.to are created by the actual author, youre able to engage in an authentic two-way dialogue to ask questions and provide constructive feedback. We've found that these exchanges tend to be much more positive and productive than the conversations that tend to take place on aggregators.</p>
<h2>Write an Article</h2>
<p>When youre ready, consider writing an article of your own. It doesnt have to set the world on fire or be the hardest-hitting technical breakdown of all time, just sharing your experience and individual perspective can be terrifically helpful. The act of writing is also very valuable both personally and professionally -- it helps force you to organize your ideas, and also showcases to future employers that you know how to communicate effectively on technical topics.<br>
If youd like some feedback on your draft, simply keep “published” set to “false” and send an email to <a href="mailto:yo@dev.to">yo@dev.to</a>. Wed be happy to get in touch and give you some thoughts and advice before you hit publish.<br>
Welcome to the dev.to community! Please be sure to reach out via Twitter and/or email if we can ever be of help 😀
</p>
</div>
</div>

View file

@ -21,9 +21,7 @@
<header>
<div class="blank-space"></div>
</header>
<div class="blank-space"></div>
<div class="container article">
<div class="title">
<h1>

View file

@ -14,9 +14,7 @@
<meta name="twitter:title" content="The Practical Dev Bounty System">
<% end %>
<header>
<div class="blank-space"></div>
</header>
<div class="blank-space"></div>
<div class="container article">
<div class="title">
<h1>

View file

@ -16,9 +16,7 @@
<!-- <meta name="twitter:image:src" content="http://i.imgur.com/B4JNl1w.png"> -->
<% end %>
<header>
<div class="blank-space"></div>
</header>
<div class="blank-space"></div>
<div class="container article">
<div class="title">

View file

@ -7,7 +7,5 @@
<% end %>
<header>
<div class="blank-space"></div>
</header>
<%= render "editor_guide_text", version: "1" %>
<div class="blank-space"></div>
<%= render "editor_guide_text", version: "1" %>

View file

@ -23,9 +23,7 @@
<!-- <p id="notice"><%#= notice %></p> -->
<header>
<div class="blank-space"></div>
</header>
<div class="blank-space"></div>
<div class="container article">
<div class="title">
<h1>

View file

@ -28,16 +28,14 @@
padding: 40px 0px;
}
.social-links img {
width: 35px;
width: 35px;
height: 35px;
margin: 5px 10px;
}
</style>
<!-- <p id="notice"><%#= notice %></p> -->
<header>
<div class="blank-space"></div>
</header>
<div class="blank-space"></div>
<div class="container article">
<div class="title">
<h1>

View file

@ -7,9 +7,7 @@
<% end %>
<header>
<div class="blank-space"></div>
</header>
<div class="blank-space"></div>
<div class="container article">
<div class="title">
<h1>Markdown Basics 🤓</h1>

View file

@ -20,9 +20,7 @@
<% end %>
<header>
<div class="blank-space"></div>
</header>
<div class="blank-space"></div>
<style>
body{
@ -30,7 +28,7 @@
}
.container .body p{
margin:1.2em 0 1.50em;
}
.container .body h1{
margin:1.3em 0 1.50em;

View file

@ -7,9 +7,7 @@
<% end %>
<header>
<div class="blank-space"></div>
</header>
<div class="blank-space"></div>
<style>
.cta-button{

View file

@ -19,9 +19,7 @@
<meta name="twitter:image:src" content="https://thepracticaldev.s3.amazonaws.com/i/g355ol6qsrg0j2mhngz9.png">
<% end %>
<header>
<div class="blank-space"></div>
</header>
<div class="blank-space"></div>
<div class="container article">
<div class="title">
<h1>

View file

@ -21,9 +21,7 @@
<!-- <p id="notice"><%#= notice %></p> -->
<header>
<div class="blank-space"></div>
</header>
<div class="blank-space"></div>
<div class="container article">
<div class="title">
<h1>

View file

@ -12,9 +12,7 @@
<meta name="twitter:title" content="Report Abuse">
<% end %>
<header>
<div class="blank-space"></div>
</header>
<div class="blank-space"></div>
<div class="container article">
<div class="title">

View file

@ -20,9 +20,7 @@
<% end %>
<!-- <p id="notice"><%#= notice %></p> -->
<header>
<div class="blank-space"></div>
</header>
<div class="blank-space"></div>
<div class="container article">
<div class="title" style="height:30px">
</div>

View file

@ -7,17 +7,15 @@
<% end %>
<header>
<div class="blank-space"></div>
</header>
<div class="blank-space"></div>
<style>
.container .body h4 img {
top: 10px;
display: inline;
left: 0;
}
}
}
}
</style>
<div class="container article">

View file

@ -1,8 +1,6 @@
<% title "Sponsorship Info and FAQ" %>
<header>
<div class="blank-space"></div>
</header>
<div class="blank-space"></div>
<div class="container article">
<div class="title">
<h1>

View file

@ -21,9 +21,7 @@
<header>
<div class="blank-space"></div>
</header>
<div class="blank-space"></div>
<div class="container article">
<div class="title" style="text-align:center">
<h1 style="margin-top: 2vw">

View file

@ -13,9 +13,8 @@
<!-- <p id="notice"><%#= notice %></p> -->
<header>
<div class="blank-space"></div>
</header>
<div class="blank-space"></div>
<div class="container article">
<div class="title">
<h1>

View file

@ -23,9 +23,7 @@
<!-- <p id="notice"><%#= notice %></p> -->
<header>
<div class="blank-space"></div>
</header>
<div class="blank-space"></div>
<div class="container article">
<div class="title">
<h1>

View file

@ -1,8 +1,6 @@
<% title "The DEV Sustaining Membership" %>
<header>
<div class="blank-space"></div>
</header>
<div class="blank-space"></div>
<style>
.events-container {
@ -24,4 +22,4 @@
<p> Workshops are available to dev.to <a href="/membership">sustaining members</a> with workshop passes. For those unable to become a sustaining member, we encourage you to apply for a <a href="/p/scholarships">scholarship</a>.
<p> February workshops will be announced soon.</p>
</div>
</div>

View file

@ -4,7 +4,7 @@
<% if @podcast_index && @podcasts %>
<div class="widget podcast-pic-widget">
<header>
&lt;ALL SHOWS&gt;
<h4>&lt;ALL SHOWS&gt;</h4>
</header>
<div class="widget-body">
<% @podcasts.each do |podcast| %>

View file

@ -20,9 +20,7 @@
<% end %>
<header>
<div class="blank-space"></div>
</header>
<div class="blank-space"></div>
<style>
body{

View file

@ -10,14 +10,14 @@
<div class="breadcrumb"><a href="<%= @user.path %>">View All Activity</a></div>
<header>
<% if @user.comments_count > 250 %>
Last 250 Comments
<h4>Last 250 Comments</h4>
<% else %>
All <%= @user.comments_count %> Comments
<h4>All <%= @user.comments_count %> Comments</h4>
<% end %>
</header>
<% else %>
<header>
Recent Comments
<h4>Recent Comments</h4>
</header>
<% end %>
<% end %>

View file

@ -5,7 +5,7 @@
<% if @user.mostly_work_with.present? %>
<div class="widget">
<header>
skills/languages
<h4>skills/languages</h4>
</header>
<div class="widget-body">
<%= sanitized_sidebar @user.mostly_work_with %>
@ -15,7 +15,7 @@
<% if @user.currently_learning.present? %>
<div class="widget">
<header>
learning/trying
<h4>learning/trying</h4>
</header>
<div class="widget-body">
<%= sanitized_sidebar @user.currently_learning %>
@ -25,7 +25,7 @@
<% if @user.currently_hacking_on.present? %>
<div class="widget">
<header>
projects and hacks
<h4>projects and hacks</h4>
</header>
<div class="widget-body">
<%= sanitized_sidebar @user.currently_hacking_on %>
@ -35,7 +35,7 @@
<% if @user.available_for.present? %>
<div class="widget">
<header>
available for
<h4>available for</h4>
</header>
<div class="widget-body">
<%= sanitized_sidebar @user.available_for %>

View file

@ -4,7 +4,7 @@
<% @user.github_repos.where(featured: true).order({stargazers_count: :desc}, {name: :asc}).each do |repo| %>
<a class="widget" href="<%= repo.url %>" target="_blank">
<header>
<span class="emoji"><img src="<%= asset_path("github-logo.svg") %>" /></span><%= repo.name %>
<h4><span class="emoji"><img src="<%= asset_path("github-logo.svg") %>" /></span><%= repo.name %></h4>
</header>
<div class="widget-body">
<%= repo.description %>

View file

@ -71,7 +71,6 @@ RSpec.describe "internal/users", type: :request do
banish_user
# failed = Delayed::Job.where("failed_at IS NOT NULL").first
# failed = YAML.load(failed.handler) if failed
# binding.pry
expect(Delayed::Job.where("failed_at IS NOT NULL").count).to eq(0)
expect(user.old_username).to eq(nil)
expect(user.twitter_username).to eq("")