Add Unit tests for VssAccessor - #3

Merged
G8XSU merged 1 commit into
lightningdevkit:mainfrom
G8XSU:accessor_tests
Aug 8, 2023
Merged

Add Unit tests for VssAccessor#3
G8XSU merged 1 commit into
lightningdevkit:mainfrom
G8XSU:accessor_tests

Conversation

@G8XSU

Copy link
Copy Markdown
Contributor

Depends on #1 and #2

@G8XSU
G8XSU marked this pull request as ready for review April 27, 2023 17:14
Comment threadvss-accessor/src/vss_error.rs Outdated
Comment threadvss-accessor/tests/tests.rs Outdated
Comment threadvss-accessor/tests/tests.rs Outdated
Comment threadvss-accessor/tests/tests.rs Outdated
@tnull

tnull commented May 4, 2023

Copy link
Copy Markdown
Contributor

Needs a rebase it seems:

> cargo test
Compiling vss-accessor v0.1.0 (/Users/ero/workspace/vss-rust-client/vss-accessor)
error[E0308]: arguments to this method are incorrect
--> vss-accessor/tests/tests.rs:32:31
|
32 | let actual_result = vss_acc.get("store", "k1").await.unwrap();
| ^^^ ------- ---- expected struct `String`, found `&str`
| |
| expected struct `String`, found `&str`
|
note: associated function defined here
--> /Users/ero/workspace/vss-rust-client/vss-accessor/src/lib.rs:29:15
|
29 | pub async fn get(&self, store: String, key: String) -> Result<GetObjectResponse, VssError> {
| ^^^
help: try using a conversion method
|
32 | let actual_result = vss_acc.get("store".to_string(), "k1").await.unwrap();
| ++++++++++++
help: try using a conversion method
|
32 | let actual_result = vss_acc.get("store", "k1".to_string()).await.unwrap();
| ++++++++++++
error[E0308]: arguments to this method are incorrect
--> vss-accessor/tests/tests.rs:64:31
|
64 | let actual_result = vss_acc.put("store", Some(4), "k1", 2, b"k1v3").await.unwrap();
| ^^^ ------- ---- expected struct `String`, found `&str`
| |
| expected struct `String`, found `&str`
|
note: associated function defined here
--> /Users/ero/workspace/vss-rust-client/vss-accessor/src/lib.rs:46:15
|
46 | pub async fn put(
| ^^^
help: try using a conversion method
|
64 | let actual_result = vss_acc.put("store".to_string(), Some(4), "k1", 2, b"k1v3").await.unwrap();
| ++++++++++++
help: try using a conversion method
|
64 | let actual_result = vss_acc.put("store", Some(4), "k1".to_string(), 2, b"k1v3").await.unwrap();
| ++++++++++++
...

@G8XSUG8XSU mentioned this pull request May 10, 2023
31 tasks

@tnulltnull left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some more comments, let me know if this is good for another round of review.

Comment threadvss-accessor/tests/generate_protos.rs Outdated
Comment threadvss-accessor/tests/generate_protos.rs Outdated
Comment threadvss-accessor/tests/tests.rs Outdated
Comment threadCargo.toml

[dependencies]
prost = "0.11.9"
prost = "0.11.6"

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • to keep msrv low
  • will eventually start enforcing it

@G8XSU
G8XSU requested a review from jkczyzJuly 20, 2023 19:52
Comment threadtests/tests.rs Outdated
let base_url = mockito::server_url().to_string();

// Set up the mock request/response.
let get_request = build_get_request();

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be better to inline the request here so the test is self-contained. Otherwise, you have to jump to the end of the file to see how this relates to the response.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree,
in fact it was like that earlier, only reason i extracted it to function was because it was repeated ~4 times.

Personally i prefer test to be self-contained as well than to over-emphasize on not repeating.

Inlining such functions.

Comment threadtests/tests.rs Outdated
Comment on lines +25 to +26
let mut mock_response = GetObjectResponse::default();
mock_response.value = Some(KeyValue { key: "k1".to_string(), version: 2, value: b"k1v2".to_vec() });

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Little more idiomatic to initialize using one statement.

let mock_response = GetObjectResponse{value:Some(KeyValue{key:"k1".to_string(),version:2,value:b"k1v2".to_vec()}),
..Default::default()};

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Makes sense!

Comment threadtests/tests.rs Outdated
Comment threadtests/tests.rs Outdated
Comment threadtests/tests.rs Outdated
Comment threadtests/tests.rs Outdated
@G8XSU
G8XSU requested a review from jkczyzAugust 7, 2023 03:06
Comment threadtests/tests.rs Outdated
Comment threadtests/tests.rs Outdated
Comment threadtests/tests.rs
Comment on lines +278 to +289
// Requests to endpoints are no longer mocked and will result in network error.
drop(_mock_server);

let get_network_err = vss_client.get_object(&get_request).await;
assert!(matches!(get_network_err.unwrap_err(), VssError::InternalError { .. }));

let put_network_err = vss_client.put_object(&put_request).await;
assert!(matches!(put_network_err.unwrap_err(), VssError::InternalError { .. }));

let list_network_err = vss_client.list_key_versions(&list_request).await;
assert!(matches!(list_network_err.unwrap_err(), VssError::InternalError { .. }));

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wasn't clear to me why this results in an InternalError. In a separate commit, could you add documentation to the enum variants and configure the library as following?

#![deny(missing_docs)]#![deny(unsafe_code)]

@G8XSUG8XSUAug 8, 2023

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sounds Good, it is already on my todo list 👍

@tnulltnull left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, mod the outstanding comments.

Comment threadCargo.toml Outdated
Comment threadtests/tests.rs Outdated
@G8XSU
G8XSU requested a review from jkczyzAugust 8, 2023 19:50
@G8XSU
G8XSU merged commit 3770cef into lightningdevkit:mainAug 8, 2023
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@G8XSU@tnull@jkczyz
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Add Unit tests for VssAccessor - #3

Merged
G8XSU merged 1 commit into
lightningdevkit:mainfrom
G8XSU:accessor_tests
Aug 8, 2023
Merged

Add Unit tests for VssAccessor#3
G8XSU merged 1 commit into
lightningdevkit:mainfrom
G8XSU:accessor_tests

Conversation

@G8XSU

Copy link
Copy Markdown
Contributor

Depends on #1 and #2

@G8XSU
G8XSU marked this pull request as ready for review April 27, 2023 17:14
Comment threadvss-accessor/src/vss_error.rs Outdated
Comment threadvss-accessor/tests/tests.rs Outdated
Comment threadvss-accessor/tests/tests.rs Outdated
Comment threadvss-accessor/tests/tests.rs Outdated
@tnull

tnull commented May 4, 2023

Copy link
Copy Markdown
Contributor

Needs a rebase it seems:

> cargo test
Compiling vss-accessor v0.1.0 (/Users/ero/workspace/vss-rust-client/vss-accessor)
error[E0308]: arguments to this method are incorrect
--> vss-accessor/tests/tests.rs:32:31
|
32 | let actual_result = vss_acc.get("store", "k1").await.unwrap();
| ^^^ ------- ---- expected struct `String`, found `&str`
| |
| expected struct `String`, found `&str`
|
note: associated function defined here
--> /Users/ero/workspace/vss-rust-client/vss-accessor/src/lib.rs:29:15
|
29 | pub async fn get(&self, store: String, key: String) -> Result<GetObjectResponse, VssError> {
| ^^^
help: try using a conversion method
|
32 | let actual_result = vss_acc.get("store".to_string(), "k1").await.unwrap();
| ++++++++++++
help: try using a conversion method
|
32 | let actual_result = vss_acc.get("store", "k1".to_string()).await.unwrap();
| ++++++++++++
error[E0308]: arguments to this method are incorrect
--> vss-accessor/tests/tests.rs:64:31
|
64 | let actual_result = vss_acc.put("store", Some(4), "k1", 2, b"k1v3").await.unwrap();
| ^^^ ------- ---- expected struct `String`, found `&str`
| |
| expected struct `String`, found `&str`
|
note: associated function defined here
--> /Users/ero/workspace/vss-rust-client/vss-accessor/src/lib.rs:46:15
|
46 | pub async fn put(
| ^^^
help: try using a conversion method
|
64 | let actual_result = vss_acc.put("store".to_string(), Some(4), "k1", 2, b"k1v3").await.unwrap();
| ++++++++++++
help: try using a conversion method
|
64 | let actual_result = vss_acc.put("store", Some(4), "k1".to_string(), 2, b"k1v3").await.unwrap();
| ++++++++++++
...

@G8XSUG8XSU mentioned this pull request May 10, 2023
31 tasks

@tnulltnull left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some more comments, let me know if this is good for another round of review.

Comment threadvss-accessor/tests/generate_protos.rs Outdated
Comment threadvss-accessor/tests/generate_protos.rs Outdated
Comment threadvss-accessor/tests/tests.rs Outdated
Comment threadCargo.toml

[dependencies]
prost = "0.11.9"
prost = "0.11.6"

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • to keep msrv low
  • will eventually start enforcing it

@G8XSU
G8XSU requested a review from jkczyzJuly 20, 2023 19:52
Comment threadtests/tests.rs Outdated
let base_url = mockito::server_url().to_string();

// Set up the mock request/response.
let get_request = build_get_request();

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be better to inline the request here so the test is self-contained. Otherwise, you have to jump to the end of the file to see how this relates to the response.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree,
in fact it was like that earlier, only reason i extracted it to function was because it was repeated ~4 times.

Personally i prefer test to be self-contained as well than to over-emphasize on not repeating.

Inlining such functions.

Comment threadtests/tests.rs Outdated
Comment on lines +25 to +26
let mut mock_response = GetObjectResponse::default();
mock_response.value = Some(KeyValue { key: "k1".to_string(), version: 2, value: b"k1v2".to_vec() });

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Little more idiomatic to initialize using one statement.

let mock_response = GetObjectResponse{value:Some(KeyValue{key:"k1".to_string(),version:2,value:b"k1v2".to_vec()}),
..Default::default()};

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Makes sense!

Comment threadtests/tests.rs Outdated
Comment threadtests/tests.rs Outdated
Comment threadtests/tests.rs Outdated
Comment threadtests/tests.rs Outdated
@G8XSU
G8XSU requested a review from jkczyzAugust 7, 2023 03:06
Comment threadtests/tests.rs Outdated
Comment threadtests/tests.rs Outdated
Comment threadtests/tests.rs
Comment on lines +278 to +289
// Requests to endpoints are no longer mocked and will result in network error.
drop(_mock_server);

let get_network_err = vss_client.get_object(&get_request).await;
assert!(matches!(get_network_err.unwrap_err(), VssError::InternalError { .. }));

let put_network_err = vss_client.put_object(&put_request).await;
assert!(matches!(put_network_err.unwrap_err(), VssError::InternalError { .. }));

let list_network_err = vss_client.list_key_versions(&list_request).await;
assert!(matches!(list_network_err.unwrap_err(), VssError::InternalError { .. }));

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wasn't clear to me why this results in an InternalError. In a separate commit, could you add documentation to the enum variants and configure the library as following?

#![deny(missing_docs)]#![deny(unsafe_code)]

@G8XSUG8XSUAug 8, 2023

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sounds Good, it is already on my todo list 👍

@tnulltnull left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, mod the outstanding comments.

Comment threadCargo.toml Outdated
Comment threadtests/tests.rs Outdated
@G8XSU
G8XSU requested a review from jkczyzAugust 8, 2023 19:50
@G8XSU
G8XSU merged commit 3770cef into lightningdevkit:mainAug 8, 2023
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@G8XSU@tnull@jkczyz
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add Unit tests for VssAccessor - #3

Merged
G8XSU merged 1 commit into
lightningdevkit:mainfrom
G8XSU:accessor_tests
Aug 8, 2023
Merged

Add Unit tests for VssAccessor#3
G8XSU merged 1 commit into
lightningdevkit:mainfrom
G8XSU:accessor_tests

Conversation

@G8XSU

Copy link
Copy Markdown
Contributor

Depends on #1 and #2

@G8XSU
G8XSU marked this pull request as ready for review April 27, 2023 17:14
Comment threadvss-accessor/src/vss_error.rs Outdated
Comment threadvss-accessor/tests/tests.rs Outdated
Comment threadvss-accessor/tests/tests.rs Outdated
Comment threadvss-accessor/tests/tests.rs Outdated
@tnull

tnull commented May 4, 2023

Copy link
Copy Markdown
Contributor

Needs a rebase it seems:

> cargo test
Compiling vss-accessor v0.1.0 (/Users/ero/workspace/vss-rust-client/vss-accessor)
error[E0308]: arguments to this method are incorrect
--> vss-accessor/tests/tests.rs:32:31
|
32 | let actual_result = vss_acc.get("store", "k1").await.unwrap();
| ^^^ ------- ---- expected struct `String`, found `&str`
| |
| expected struct `String`, found `&str`
|
note: associated function defined here
--> /Users/ero/workspace/vss-rust-client/vss-accessor/src/lib.rs:29:15
|
29 | pub async fn get(&self, store: String, key: String) -> Result<GetObjectResponse, VssError> {
| ^^^
help: try using a conversion method
|
32 | let actual_result = vss_acc.get("store".to_string(), "k1").await.unwrap();
| ++++++++++++
help: try using a conversion method
|
32 | let actual_result = vss_acc.get("store", "k1".to_string()).await.unwrap();
| ++++++++++++
error[E0308]: arguments to this method are incorrect
--> vss-accessor/tests/tests.rs:64:31
|
64 | let actual_result = vss_acc.put("store", Some(4), "k1", 2, b"k1v3").await.unwrap();
| ^^^ ------- ---- expected struct `String`, found `&str`
| |
| expected struct `String`, found `&str`
|
note: associated function defined here
--> /Users/ero/workspace/vss-rust-client/vss-accessor/src/lib.rs:46:15
|
46 | pub async fn put(
| ^^^
help: try using a conversion method
|
64 | let actual_result = vss_acc.put("store".to_string(), Some(4), "k1", 2, b"k1v3").await.unwrap();
| ++++++++++++
help: try using a conversion method
|
64 | let actual_result = vss_acc.put("store", Some(4), "k1".to_string(), 2, b"k1v3").await.unwrap();
| ++++++++++++
...

@G8XSUG8XSU mentioned this pull request May 10, 2023
31 tasks

@tnulltnull left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some more comments, let me know if this is good for another round of review.

Comment threadvss-accessor/tests/generate_protos.rs Outdated
Comment threadvss-accessor/tests/generate_protos.rs Outdated
Comment threadvss-accessor/tests/tests.rs Outdated
Comment threadCargo.toml

[dependencies]
prost = "0.11.9"
prost = "0.11.6"

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • to keep msrv low
  • will eventually start enforcing it

@G8XSU
G8XSU requested a review from jkczyzJuly 20, 2023 19:52
Comment threadtests/tests.rs Outdated
let base_url = mockito::server_url().to_string();

// Set up the mock request/response.
let get_request = build_get_request();

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be better to inline the request here so the test is self-contained. Otherwise, you have to jump to the end of the file to see how this relates to the response.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree,
in fact it was like that earlier, only reason i extracted it to function was because it was repeated ~4 times.

Personally i prefer test to be self-contained as well than to over-emphasize on not repeating.

Inlining such functions.

Comment threadtests/tests.rs Outdated
Comment on lines +25 to +26
let mut mock_response = GetObjectResponse::default();
mock_response.value = Some(KeyValue { key: "k1".to_string(), version: 2, value: b"k1v2".to_vec() });

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Little more idiomatic to initialize using one statement.

let mock_response = GetObjectResponse{value:Some(KeyValue{key:"k1".to_string(),version:2,value:b"k1v2".to_vec()}),
..Default::default()};

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Makes sense!

Comment threadtests/tests.rs Outdated
Comment threadtests/tests.rs Outdated
Comment threadtests/tests.rs Outdated
Comment threadtests/tests.rs Outdated
@G8XSU
G8XSU requested a review from jkczyzAugust 7, 2023 03:06
Comment threadtests/tests.rs Outdated
Comment threadtests/tests.rs Outdated
Comment threadtests/tests.rs
Comment on lines +278 to +289
// Requests to endpoints are no longer mocked and will result in network error.
drop(_mock_server);

let get_network_err = vss_client.get_object(&get_request).await;
assert!(matches!(get_network_err.unwrap_err(), VssError::InternalError { .. }));

let put_network_err = vss_client.put_object(&put_request).await;
assert!(matches!(put_network_err.unwrap_err(), VssError::InternalError { .. }));

let list_network_err = vss_client.list_key_versions(&list_request).await;
assert!(matches!(list_network_err.unwrap_err(), VssError::InternalError { .. }));

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wasn't clear to me why this results in an InternalError. In a separate commit, could you add documentation to the enum variants and configure the library as following?

#![deny(missing_docs)]#![deny(unsafe_code)]

@G8XSUG8XSUAug 8, 2023

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sounds Good, it is already on my todo list 👍

@tnulltnull left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, mod the outstanding comments.

Comment threadCargo.toml Outdated
Comment threadtests/tests.rs Outdated
@G8XSU
G8XSU requested a review from jkczyzAugust 8, 2023 19:50
@G8XSU
G8XSU merged commit 3770cef into lightningdevkit:mainAug 8, 2023
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@G8XSU@tnull@jkczyz
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add Unit tests for VssAccessor - #3

Merged
G8XSU merged 1 commit into
lightningdevkit:mainfrom
G8XSU:accessor_tests
Aug 8, 2023
Merged

Add Unit tests for VssAccessor#3
G8XSU merged 1 commit into
lightningdevkit:mainfrom
G8XSU:accessor_tests

Conversation

@G8XSU

Copy link
Copy Markdown
Contributor

Depends on #1 and #2

@G8XSU
G8XSU marked this pull request as ready for review April 27, 2023 17:14
Comment threadvss-accessor/src/vss_error.rs Outdated
Comment threadvss-accessor/tests/tests.rs Outdated
Comment threadvss-accessor/tests/tests.rs Outdated
Comment threadvss-accessor/tests/tests.rs Outdated
@tnull

tnull commented May 4, 2023

Copy link
Copy Markdown
Contributor

Needs a rebase it seems:

> cargo test
Compiling vss-accessor v0.1.0 (/Users/ero/workspace/vss-rust-client/vss-accessor)
error[E0308]: arguments to this method are incorrect
--> vss-accessor/tests/tests.rs:32:31
|
32 | let actual_result = vss_acc.get("store", "k1").await.unwrap();
| ^^^ ------- ---- expected struct `String`, found `&str`
| |
| expected struct `String`, found `&str`
|
note: associated function defined here
--> /Users/ero/workspace/vss-rust-client/vss-accessor/src/lib.rs:29:15
|
29 | pub async fn get(&self, store: String, key: String) -> Result<GetObjectResponse, VssError> {
| ^^^
help: try using a conversion method
|
32 | let actual_result = vss_acc.get("store".to_string(), "k1").await.unwrap();
| ++++++++++++
help: try using a conversion method
|
32 | let actual_result = vss_acc.get("store", "k1".to_string()).await.unwrap();
| ++++++++++++
error[E0308]: arguments to this method are incorrect
--> vss-accessor/tests/tests.rs:64:31
|
64 | let actual_result = vss_acc.put("store", Some(4), "k1", 2, b"k1v3").await.unwrap();
| ^^^ ------- ---- expected struct `String`, found `&str`
| |
| expected struct `String`, found `&str`
|
note: associated function defined here
--> /Users/ero/workspace/vss-rust-client/vss-accessor/src/lib.rs:46:15
|
46 | pub async fn put(
| ^^^
help: try using a conversion method
|
64 | let actual_result = vss_acc.put("store".to_string(), Some(4), "k1", 2, b"k1v3").await.unwrap();
| ++++++++++++
help: try using a conversion method
|
64 | let actual_result = vss_acc.put("store", Some(4), "k1".to_string(), 2, b"k1v3").await.unwrap();
| ++++++++++++
...

@G8XSUG8XSU mentioned this pull request May 10, 2023
31 tasks

@tnulltnull left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some more comments, let me know if this is good for another round of review.

Comment threadvss-accessor/tests/generate_protos.rs Outdated
Comment threadvss-accessor/tests/generate_protos.rs Outdated
Comment threadvss-accessor/tests/tests.rs Outdated
Comment threadCargo.toml

[dependencies]
prost = "0.11.9"
prost = "0.11.6"

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • to keep msrv low
  • will eventually start enforcing it

@G8XSU
G8XSU requested a review from jkczyzJuly 20, 2023 19:52
Comment threadtests/tests.rs Outdated
let base_url = mockito::server_url().to_string();

// Set up the mock request/response.
let get_request = build_get_request();

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be better to inline the request here so the test is self-contained. Otherwise, you have to jump to the end of the file to see how this relates to the response.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree,
in fact it was like that earlier, only reason i extracted it to function was because it was repeated ~4 times.

Personally i prefer test to be self-contained as well than to over-emphasize on not repeating.

Inlining such functions.

Comment threadtests/tests.rs Outdated
Comment on lines +25 to +26
let mut mock_response = GetObjectResponse::default();
mock_response.value = Some(KeyValue { key: "k1".to_string(), version: 2, value: b"k1v2".to_vec() });

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Little more idiomatic to initialize using one statement.

let mock_response = GetObjectResponse{value:Some(KeyValue{key:"k1".to_string(),version:2,value:b"k1v2".to_vec()}),
..Default::default()};

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Makes sense!

Comment threadtests/tests.rs Outdated
Comment threadtests/tests.rs Outdated
Comment threadtests/tests.rs Outdated
Comment threadtests/tests.rs Outdated
@G8XSU
G8XSU requested a review from jkczyzAugust 7, 2023 03:06
Comment threadtests/tests.rs Outdated
Comment threadtests/tests.rs Outdated
Comment threadtests/tests.rs
Comment on lines +278 to +289
// Requests to endpoints are no longer mocked and will result in network error.
drop(_mock_server);

let get_network_err = vss_client.get_object(&get_request).await;
assert!(matches!(get_network_err.unwrap_err(), VssError::InternalError { .. }));

let put_network_err = vss_client.put_object(&put_request).await;
assert!(matches!(put_network_err.unwrap_err(), VssError::InternalError { .. }));

let list_network_err = vss_client.list_key_versions(&list_request).await;
assert!(matches!(list_network_err.unwrap_err(), VssError::InternalError { .. }));

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wasn't clear to me why this results in an InternalError. In a separate commit, could you add documentation to the enum variants and configure the library as following?

#![deny(missing_docs)]#![deny(unsafe_code)]

@G8XSUG8XSUAug 8, 2023

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sounds Good, it is already on my todo list 👍

@tnulltnull left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, mod the outstanding comments.

Comment threadCargo.toml Outdated
Comment threadtests/tests.rs Outdated
@G8XSU
G8XSU requested a review from jkczyzAugust 8, 2023 19:50
@G8XSU
G8XSU merged commit 3770cef into lightningdevkit:mainAug 8, 2023
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@G8XSU@tnull@jkczyz
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Add Unit tests for VssAccessor - #3

Merged
G8XSU merged 1 commit into
lightningdevkit:mainfrom
G8XSU:accessor_tests
Aug 8, 2023
Merged

Add Unit tests for VssAccessor#3
G8XSU merged 1 commit into
lightningdevkit:mainfrom
G8XSU:accessor_tests

Conversation

@G8XSU

Copy link
Copy Markdown
Contributor

Depends on #1 and #2

@G8XSU
G8XSU marked this pull request as ready for review April 27, 2023 17:14
Comment threadvss-accessor/src/vss_error.rs Outdated
Comment threadvss-accessor/tests/tests.rs Outdated
Comment threadvss-accessor/tests/tests.rs Outdated
Comment threadvss-accessor/tests/tests.rs Outdated
@tnull

tnull commented May 4, 2023

Copy link
Copy Markdown
Contributor

Needs a rebase it seems:

> cargo test
Compiling vss-accessor v0.1.0 (/Users/ero/workspace/vss-rust-client/vss-accessor)
error[E0308]: arguments to this method are incorrect
--> vss-accessor/tests/tests.rs:32:31
|
32 | let actual_result = vss_acc.get("store", "k1").await.unwrap();
| ^^^ ------- ---- expected struct `String`, found `&str`
| |
| expected struct `String`, found `&str`
|
note: associated function defined here
--> /Users/ero/workspace/vss-rust-client/vss-accessor/src/lib.rs:29:15
|
29 | pub async fn get(&self, store: String, key: String) -> Result<GetObjectResponse, VssError> {
| ^^^
help: try using a conversion method
|
32 | let actual_result = vss_acc.get("store".to_string(), "k1").await.unwrap();
| ++++++++++++
help: try using a conversion method
|
32 | let actual_result = vss_acc.get("store", "k1".to_string()).await.unwrap();
| ++++++++++++
error[E0308]: arguments to this method are incorrect
--> vss-accessor/tests/tests.rs:64:31
|
64 | let actual_result = vss_acc.put("store", Some(4), "k1", 2, b"k1v3").await.unwrap();
| ^^^ ------- ---- expected struct `String`, found `&str`
| |
| expected struct `String`, found `&str`
|
note: associated function defined here
--> /Users/ero/workspace/vss-rust-client/vss-accessor/src/lib.rs:46:15
|
46 | pub async fn put(
| ^^^
help: try using a conversion method
|
64 | let actual_result = vss_acc.put("store".to_string(), Some(4), "k1", 2, b"k1v3").await.unwrap();
| ++++++++++++
help: try using a conversion method
|
64 | let actual_result = vss_acc.put("store", Some(4), "k1".to_string(), 2, b"k1v3").await.unwrap();
| ++++++++++++
...

@G8XSUG8XSU mentioned this pull request May 10, 2023
31 tasks

@tnulltnull left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some more comments, let me know if this is good for another round of review.

Comment threadvss-accessor/tests/generate_protos.rs Outdated
Comment threadvss-accessor/tests/generate_protos.rs Outdated
Comment threadvss-accessor/tests/tests.rs Outdated
Comment threadCargo.toml

[dependencies]
prost = "0.11.9"
prost = "0.11.6"

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • to keep msrv low
  • will eventually start enforcing it

@G8XSU
G8XSU requested a review from jkczyzJuly 20, 2023 19:52
Comment threadtests/tests.rs Outdated
let base_url = mockito::server_url().to_string();

// Set up the mock request/response.
let get_request = build_get_request();

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be better to inline the request here so the test is self-contained. Otherwise, you have to jump to the end of the file to see how this relates to the response.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree,
in fact it was like that earlier, only reason i extracted it to function was because it was repeated ~4 times.

Personally i prefer test to be self-contained as well than to over-emphasize on not repeating.

Inlining such functions.

Comment threadtests/tests.rs Outdated
Comment on lines +25 to +26
let mut mock_response = GetObjectResponse::default();
mock_response.value = Some(KeyValue { key: "k1".to_string(), version: 2, value: b"k1v2".to_vec() });

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Little more idiomatic to initialize using one statement.

let mock_response = GetObjectResponse{value:Some(KeyValue{key:"k1".to_string(),version:2,value:b"k1v2".to_vec()}),
..Default::default()};

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Makes sense!

Comment threadtests/tests.rs Outdated
Comment threadtests/tests.rs Outdated
Comment threadtests/tests.rs Outdated
Comment threadtests/tests.rs Outdated
@G8XSU
G8XSU requested a review from jkczyzAugust 7, 2023 03:06
Comment threadtests/tests.rs Outdated
Comment threadtests/tests.rs Outdated
Comment threadtests/tests.rs
Comment on lines +278 to +289
// Requests to endpoints are no longer mocked and will result in network error.
drop(_mock_server);

let get_network_err = vss_client.get_object(&get_request).await;
assert!(matches!(get_network_err.unwrap_err(), VssError::InternalError { .. }));

let put_network_err = vss_client.put_object(&put_request).await;
assert!(matches!(put_network_err.unwrap_err(), VssError::InternalError { .. }));

let list_network_err = vss_client.list_key_versions(&list_request).await;
assert!(matches!(list_network_err.unwrap_err(), VssError::InternalError { .. }));

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wasn't clear to me why this results in an InternalError. In a separate commit, could you add documentation to the enum variants and configure the library as following?

#![deny(missing_docs)]#![deny(unsafe_code)]

@G8XSUG8XSUAug 8, 2023

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sounds Good, it is already on my todo list 👍

@tnulltnull left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, mod the outstanding comments.

Comment threadCargo.toml Outdated
Comment threadtests/tests.rs Outdated
@G8XSU
G8XSU requested a review from jkczyzAugust 8, 2023 19:50
@G8XSU
G8XSU merged commit 3770cef into lightningdevkit:mainAug 8, 2023
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@G8XSU@tnull@jkczyz
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add Unit tests for VssAccessor - #3

Merged
G8XSU merged 1 commit into
lightningdevkit:mainfrom
G8XSU:accessor_tests
Aug 8, 2023
Merged

Add Unit tests for VssAccessor#3
G8XSU merged 1 commit into
lightningdevkit:mainfrom
G8XSU:accessor_tests

Conversation

@G8XSU

Copy link
Copy Markdown
Contributor

Depends on #1 and #2

@G8XSU
G8XSU marked this pull request as ready for review April 27, 2023 17:14
Comment threadvss-accessor/src/vss_error.rs Outdated
Comment threadvss-accessor/tests/tests.rs Outdated
Comment threadvss-accessor/tests/tests.rs Outdated
Comment threadvss-accessor/tests/tests.rs Outdated
@tnull

tnull commented May 4, 2023

Copy link
Copy Markdown
Contributor

Needs a rebase it seems:

> cargo test
Compiling vss-accessor v0.1.0 (/Users/ero/workspace/vss-rust-client/vss-accessor)
error[E0308]: arguments to this method are incorrect
--> vss-accessor/tests/tests.rs:32:31
|
32 | let actual_result = vss_acc.get("store", "k1").await.unwrap();
| ^^^ ------- ---- expected struct `String`, found `&str`
| |
| expected struct `String`, found `&str`
|
note: associated function defined here
--> /Users/ero/workspace/vss-rust-client/vss-accessor/src/lib.rs:29:15
|
29 | pub async fn get(&self, store: String, key: String) -> Result<GetObjectResponse, VssError> {
| ^^^
help: try using a conversion method
|
32 | let actual_result = vss_acc.get("store".to_string(), "k1").await.unwrap();
| ++++++++++++
help: try using a conversion method
|
32 | let actual_result = vss_acc.get("store", "k1".to_string()).await.unwrap();
| ++++++++++++
error[E0308]: arguments to this method are incorrect
--> vss-accessor/tests/tests.rs:64:31
|
64 | let actual_result = vss_acc.put("store", Some(4), "k1", 2, b"k1v3").await.unwrap();
| ^^^ ------- ---- expected struct `String`, found `&str`
| |
| expected struct `String`, found `&str`
|
note: associated function defined here
--> /Users/ero/workspace/vss-rust-client/vss-accessor/src/lib.rs:46:15
|
46 | pub async fn put(
| ^^^
help: try using a conversion method
|
64 | let actual_result = vss_acc.put("store".to_string(), Some(4), "k1", 2, b"k1v3").await.unwrap();
| ++++++++++++
help: try using a conversion method
|
64 | let actual_result = vss_acc.put("store", Some(4), "k1".to_string(), 2, b"k1v3").await.unwrap();
| ++++++++++++
...

@G8XSUG8XSU mentioned this pull request May 10, 2023
31 tasks

@tnulltnull left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some more comments, let me know if this is good for another round of review.

Comment threadvss-accessor/tests/generate_protos.rs Outdated
Comment threadvss-accessor/tests/generate_protos.rs Outdated
Comment threadvss-accessor/tests/tests.rs Outdated
Comment threadCargo.toml

[dependencies]
prost = "0.11.9"
prost = "0.11.6"

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • to keep msrv low
  • will eventually start enforcing it

@G8XSU
G8XSU requested a review from jkczyzJuly 20, 2023 19:52
Comment threadtests/tests.rs Outdated
let base_url = mockito::server_url().to_string();

// Set up the mock request/response.
let get_request = build_get_request();

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be better to inline the request here so the test is self-contained. Otherwise, you have to jump to the end of the file to see how this relates to the response.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree,
in fact it was like that earlier, only reason i extracted it to function was because it was repeated ~4 times.

Personally i prefer test to be self-contained as well than to over-emphasize on not repeating.

Inlining such functions.

Comment threadtests/tests.rs Outdated
Comment on lines +25 to +26
let mut mock_response = GetObjectResponse::default();
mock_response.value = Some(KeyValue { key: "k1".to_string(), version: 2, value: b"k1v2".to_vec() });

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Little more idiomatic to initialize using one statement.

let mock_response = GetObjectResponse{value:Some(KeyValue{key:"k1".to_string(),version:2,value:b"k1v2".to_vec()}),
..Default::default()};

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Makes sense!

Comment threadtests/tests.rs Outdated
Comment threadtests/tests.rs Outdated
Comment threadtests/tests.rs Outdated
Comment threadtests/tests.rs Outdated
@G8XSU
G8XSU requested a review from jkczyzAugust 7, 2023 03:06
Comment threadtests/tests.rs Outdated
Comment threadtests/tests.rs Outdated
Comment threadtests/tests.rs
Comment on lines +278 to +289
// Requests to endpoints are no longer mocked and will result in network error.
drop(_mock_server);

let get_network_err = vss_client.get_object(&get_request).await;
assert!(matches!(get_network_err.unwrap_err(), VssError::InternalError { .. }));

let put_network_err = vss_client.put_object(&put_request).await;
assert!(matches!(put_network_err.unwrap_err(), VssError::InternalError { .. }));

let list_network_err = vss_client.list_key_versions(&list_request).await;
assert!(matches!(list_network_err.unwrap_err(), VssError::InternalError { .. }));

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wasn't clear to me why this results in an InternalError. In a separate commit, could you add documentation to the enum variants and configure the library as following?

#![deny(missing_docs)]#![deny(unsafe_code)]

@G8XSUG8XSUAug 8, 2023

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sounds Good, it is already on my todo list 👍

@tnulltnull left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, mod the outstanding comments.

Comment threadCargo.toml Outdated
Comment threadtests/tests.rs Outdated
@G8XSU
G8XSU requested a review from jkczyzAugust 8, 2023 19:50
@G8XSU
G8XSU merged commit 3770cef into lightningdevkit:mainAug 8, 2023
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@G8XSU@tnull@jkczyz
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add Unit tests for VssAccessor - #3

Merged
G8XSU merged 1 commit into
lightningdevkit:mainfrom
G8XSU:accessor_tests
Aug 8, 2023
Merged

Add Unit tests for VssAccessor#3
G8XSU merged 1 commit into
lightningdevkit:mainfrom
G8XSU:accessor_tests

Conversation

@G8XSU

Copy link
Copy Markdown
Contributor

Depends on #1 and #2

@G8XSU
G8XSU marked this pull request as ready for review April 27, 2023 17:14
Comment threadvss-accessor/src/vss_error.rs Outdated
Comment threadvss-accessor/tests/tests.rs Outdated
Comment threadvss-accessor/tests/tests.rs Outdated
Comment threadvss-accessor/tests/tests.rs Outdated
@tnull

tnull commented May 4, 2023

Copy link
Copy Markdown
Contributor

Needs a rebase it seems:

> cargo test
Compiling vss-accessor v0.1.0 (/Users/ero/workspace/vss-rust-client/vss-accessor)
error[E0308]: arguments to this method are incorrect
--> vss-accessor/tests/tests.rs:32:31
|
32 | let actual_result = vss_acc.get("store", "k1").await.unwrap();
| ^^^ ------- ---- expected struct `String`, found `&str`
| |
| expected struct `String`, found `&str`
|
note: associated function defined here
--> /Users/ero/workspace/vss-rust-client/vss-accessor/src/lib.rs:29:15
|
29 | pub async fn get(&self, store: String, key: String) -> Result<GetObjectResponse, VssError> {
| ^^^
help: try using a conversion method
|
32 | let actual_result = vss_acc.get("store".to_string(), "k1").await.unwrap();
| ++++++++++++
help: try using a conversion method
|
32 | let actual_result = vss_acc.get("store", "k1".to_string()).await.unwrap();
| ++++++++++++
error[E0308]: arguments to this method are incorrect
--> vss-accessor/tests/tests.rs:64:31
|
64 | let actual_result = vss_acc.put("store", Some(4), "k1", 2, b"k1v3").await.unwrap();
| ^^^ ------- ---- expected struct `String`, found `&str`
| |
| expected struct `String`, found `&str`
|
note: associated function defined here
--> /Users/ero/workspace/vss-rust-client/vss-accessor/src/lib.rs:46:15
|
46 | pub async fn put(
| ^^^
help: try using a conversion method
|
64 | let actual_result = vss_acc.put("store".to_string(), Some(4), "k1", 2, b"k1v3").await.unwrap();
| ++++++++++++
help: try using a conversion method
|
64 | let actual_result = vss_acc.put("store", Some(4), "k1".to_string(), 2, b"k1v3").await.unwrap();
| ++++++++++++
...

@G8XSUG8XSU mentioned this pull request May 10, 2023
31 tasks

@tnulltnull left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some more comments, let me know if this is good for another round of review.

Comment threadvss-accessor/tests/generate_protos.rs Outdated
Comment threadvss-accessor/tests/generate_protos.rs Outdated
Comment threadvss-accessor/tests/tests.rs Outdated
Comment threadCargo.toml

[dependencies]
prost = "0.11.9"
prost = "0.11.6"

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • to keep msrv low
  • will eventually start enforcing it

@G8XSU
G8XSU requested a review from jkczyzJuly 20, 2023 19:52
Comment threadtests/tests.rs Outdated
let base_url = mockito::server_url().to_string();

// Set up the mock request/response.
let get_request = build_get_request();

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be better to inline the request here so the test is self-contained. Otherwise, you have to jump to the end of the file to see how this relates to the response.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree,
in fact it was like that earlier, only reason i extracted it to function was because it was repeated ~4 times.

Personally i prefer test to be self-contained as well than to over-emphasize on not repeating.

Inlining such functions.

Comment threadtests/tests.rs Outdated
Comment on lines +25 to +26
let mut mock_response = GetObjectResponse::default();
mock_response.value = Some(KeyValue { key: "k1".to_string(), version: 2, value: b"k1v2".to_vec() });

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Little more idiomatic to initialize using one statement.

let mock_response = GetObjectResponse{value:Some(KeyValue{key:"k1".to_string(),version:2,value:b"k1v2".to_vec()}),
..Default::default()};

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Makes sense!

Comment threadtests/tests.rs Outdated
Comment threadtests/tests.rs Outdated
Comment threadtests/tests.rs Outdated
Comment threadtests/tests.rs Outdated
@G8XSU
G8XSU requested a review from jkczyzAugust 7, 2023 03:06
Comment threadtests/tests.rs Outdated
Comment threadtests/tests.rs Outdated
Comment threadtests/tests.rs
Comment on lines +278 to +289
// Requests to endpoints are no longer mocked and will result in network error.
drop(_mock_server);

let get_network_err = vss_client.get_object(&get_request).await;
assert!(matches!(get_network_err.unwrap_err(), VssError::InternalError { .. }));

let put_network_err = vss_client.put_object(&put_request).await;
assert!(matches!(put_network_err.unwrap_err(), VssError::InternalError { .. }));

let list_network_err = vss_client.list_key_versions(&list_request).await;
assert!(matches!(list_network_err.unwrap_err(), VssError::InternalError { .. }));

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wasn't clear to me why this results in an InternalError. In a separate commit, could you add documentation to the enum variants and configure the library as following?

#![deny(missing_docs)]#![deny(unsafe_code)]

@G8XSUG8XSUAug 8, 2023

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sounds Good, it is already on my todo list 👍

@tnulltnull left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, mod the outstanding comments.

Comment threadCargo.toml Outdated
Comment threadtests/tests.rs Outdated
@G8XSU
G8XSU requested a review from jkczyzAugust 8, 2023 19:50
@G8XSU
G8XSU merged commit 3770cef into lightningdevkit:mainAug 8, 2023
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@G8XSU@tnull@jkczyz
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Add Unit tests for VssAccessor - #3

Merged
G8XSU merged 1 commit into
lightningdevkit:mainfrom
G8XSU:accessor_tests
Aug 8, 2023
Merged

Add Unit tests for VssAccessor#3
G8XSU merged 1 commit into
lightningdevkit:mainfrom
G8XSU:accessor_tests

Conversation

@G8XSU

Copy link
Copy Markdown
Contributor

Depends on #1 and #2

@G8XSU
G8XSU marked this pull request as ready for review April 27, 2023 17:14
Comment threadvss-accessor/src/vss_error.rs Outdated
Comment threadvss-accessor/tests/tests.rs Outdated
Comment threadvss-accessor/tests/tests.rs Outdated
Comment threadvss-accessor/tests/tests.rs Outdated
@tnull

tnull commented May 4, 2023

Copy link
Copy Markdown
Contributor

Needs a rebase it seems:

> cargo test
Compiling vss-accessor v0.1.0 (/Users/ero/workspace/vss-rust-client/vss-accessor)
error[E0308]: arguments to this method are incorrect
--> vss-accessor/tests/tests.rs:32:31
|
32 | let actual_result = vss_acc.get("store", "k1").await.unwrap();
| ^^^ ------- ---- expected struct `String`, found `&str`
| |
| expected struct `String`, found `&str`
|
note: associated function defined here
--> /Users/ero/workspace/vss-rust-client/vss-accessor/src/lib.rs:29:15
|
29 | pub async fn get(&self, store: String, key: String) -> Result<GetObjectResponse, VssError> {
| ^^^
help: try using a conversion method
|
32 | let actual_result = vss_acc.get("store".to_string(), "k1").await.unwrap();
| ++++++++++++
help: try using a conversion method
|
32 | let actual_result = vss_acc.get("store", "k1".to_string()).await.unwrap();
| ++++++++++++
error[E0308]: arguments to this method are incorrect
--> vss-accessor/tests/tests.rs:64:31
|
64 | let actual_result = vss_acc.put("store", Some(4), "k1", 2, b"k1v3").await.unwrap();
| ^^^ ------- ---- expected struct `String`, found `&str`
| |
| expected struct `String`, found `&str`
|
note: associated function defined here
--> /Users/ero/workspace/vss-rust-client/vss-accessor/src/lib.rs:46:15
|
46 | pub async fn put(
| ^^^
help: try using a conversion method
|
64 | let actual_result = vss_acc.put("store".to_string(), Some(4), "k1", 2, b"k1v3").await.unwrap();
| ++++++++++++
help: try using a conversion method
|
64 | let actual_result = vss_acc.put("store", Some(4), "k1".to_string(), 2, b"k1v3").await.unwrap();
| ++++++++++++
...

@G8XSUG8XSU mentioned this pull request May 10, 2023
31 tasks

@tnulltnull left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some more comments, let me know if this is good for another round of review.

Comment threadvss-accessor/tests/generate_protos.rs Outdated
Comment threadvss-accessor/tests/generate_protos.rs Outdated
Comment threadvss-accessor/tests/tests.rs Outdated
Comment threadCargo.toml

[dependencies]
prost = "0.11.9"
prost = "0.11.6"

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • to keep msrv low
  • will eventually start enforcing it

@G8XSU
G8XSU requested a review from jkczyzJuly 20, 2023 19:52
Comment threadtests/tests.rs Outdated
let base_url = mockito::server_url().to_string();

// Set up the mock request/response.
let get_request = build_get_request();

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be better to inline the request here so the test is self-contained. Otherwise, you have to jump to the end of the file to see how this relates to the response.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree,
in fact it was like that earlier, only reason i extracted it to function was because it was repeated ~4 times.

Personally i prefer test to be self-contained as well than to over-emphasize on not repeating.

Inlining such functions.

Comment threadtests/tests.rs Outdated
Comment on lines +25 to +26
let mut mock_response = GetObjectResponse::default();
mock_response.value = Some(KeyValue { key: "k1".to_string(), version: 2, value: b"k1v2".to_vec() });

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Little more idiomatic to initialize using one statement.

let mock_response = GetObjectResponse{value:Some(KeyValue{key:"k1".to_string(),version:2,value:b"k1v2".to_vec()}),
..Default::default()};

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Makes sense!

Comment threadtests/tests.rs Outdated
Comment threadtests/tests.rs Outdated
Comment threadtests/tests.rs Outdated
Comment threadtests/tests.rs Outdated
@G8XSU
G8XSU requested a review from jkczyzAugust 7, 2023 03:06
Comment threadtests/tests.rs Outdated
Comment threadtests/tests.rs Outdated
Comment threadtests/tests.rs
Comment on lines +278 to +289
// Requests to endpoints are no longer mocked and will result in network error.
drop(_mock_server);

let get_network_err = vss_client.get_object(&get_request).await;
assert!(matches!(get_network_err.unwrap_err(), VssError::InternalError { .. }));

let put_network_err = vss_client.put_object(&put_request).await;
assert!(matches!(put_network_err.unwrap_err(), VssError::InternalError { .. }));

let list_network_err = vss_client.list_key_versions(&list_request).await;
assert!(matches!(list_network_err.unwrap_err(), VssError::InternalError { .. }));

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wasn't clear to me why this results in an InternalError. In a separate commit, could you add documentation to the enum variants and configure the library as following?

#![deny(missing_docs)]#![deny(unsafe_code)]

@G8XSUG8XSUAug 8, 2023

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sounds Good, it is already on my todo list 👍

@tnulltnull left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, mod the outstanding comments.

Comment threadCargo.toml Outdated
Comment threadtests/tests.rs Outdated
@G8XSU
G8XSU requested a review from jkczyzAugust 8, 2023 19:50
@G8XSU
G8XSU merged commit 3770cef into lightningdevkit:mainAug 8, 2023
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@G8XSU@tnull@jkczyz