Skip to content

Commit

Permalink
frontend: Distinguish between empty and null features
Browse files Browse the repository at this point in the history
Show different page for empty feature flags and
null feature flags.
  • Loading branch information
almusil committed Nov 10, 2020
1 parent 2df55ef commit acb70af
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 15 deletions.
8 changes: 2 additions & 6 deletions src/test/fakes.rs
Original file line number Diff line number Diff line change
Expand Up @@ -210,12 +210,8 @@ impl<'a> FakeRelease<'a> {
self
}

pub(crate) fn features(mut self, opt_features: Option<HashMap<String, Vec<String>>>) -> Self {
if let Some(features) = opt_features {
self.package.features = features;
} else {
self.package.features = HashMap::new();
}
pub(crate) fn features(mut self, features: HashMap<String, Vec<String>>) -> Self {
self.package.features = features;
self
}

Expand Down
34 changes: 28 additions & 6 deletions src/web/crate_details.rs
Original file line number Diff line number Diff line change
Expand Up @@ -751,8 +751,7 @@ mod tests {
env.fake_release()
.name("library")
.version("0.1.0")
.binary(false)
.features(None)
.features(HashMap::new())
.create()?;

let page = kuchiki::parse_html().one(
Expand All @@ -776,8 +775,7 @@ mod tests {
env.fake_release()
.name("library")
.version("0.1.0")
.binary(false)
.features(Some(features))
.features(features)
.create()?;

let page = kuchiki::parse_html().one(
Expand All @@ -801,8 +799,7 @@ mod tests {
env.fake_release()
.name("library")
.version("0.1.0")
.binary(false)
.features(Some(features))
.features(features)
.create()?;

let page = kuchiki::parse_html().one(
Expand All @@ -819,4 +816,29 @@ mod tests {
Ok(())
});
}

#[test]
fn feature_flags_report_null() {
wrapper(|env| {
env.fake_release()
.name("library")
.version("0.1.0")
.features(HashMap::new())
.create()?;

env.db().conn().query(
"releases SET features = NULL WHERE release_id = $1",
&[&"0.1.0"],
);

let page = kuchiki::parse_html().one(
env.frontend()
.get("/crate/library/0.1.0/features")
.send()?
.text()?,
);
assert!(page.select_first(r#"p[data-id="null-features"]"#).is_ok());
Ok(())
});
}
}
12 changes: 9 additions & 3 deletions templates/crate/features.html
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,13 @@
</a>
</li>
{%- endfor -%}
{%- elif metadata.features is defined -%}
<li class="pure-menu-item">
<span style="font-size: 13px;">This release does not have any feature flags.</span>
</li>
{%- else -%}
<li class="pure-menu-item">
<span style="font-size: 13px;">Feature flags are not available for this version.</span>
<span style="font-size: 13px;">Feature flags data are not available for this release.</span>
</li>
{%- endif -%}
</ul>
Expand All @@ -52,7 +56,7 @@ <h1>{{ metadata.name }}</h1>
{%- else -%}
0
{%- endif -%}
</b> of them being enabled by <b>default</b>.</p>
</b> of them enabled by <b>default</b>.</p>
{%- for feature in metadata.features -%}
<h3 id="{{ feature.name }}">{{ feature.name }}</h3>
<ul class="pure-menu-list">
Expand All @@ -67,8 +71,10 @@ <h3 id="{{ feature.name }}">{{ feature.name }}</h3>
{%- endif -%}
</ul>
{%- endfor -%}
{%- elif metadata.features is defined -%}
<p data-id="empty-features">This release does not have any feature flags.</p>
{%- else -%}
<p data-id="empty-features">Feature flags are not available for this release.</p>
<p data-id="null-features">Feature flags data are not available for this release.</p>
{%- endif -%}
</div>
</div>
Expand Down

0 comments on commit acb70af

Please sign in to comment.