-
Notifications
You must be signed in to change notification settings - Fork 1
/
coauthor.rs
123 lines (109 loc) · 2.94 KB
/
coauthor.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
mod helpers;
use assert_cmd::prelude::*;
use helpers::test_contexts::TestContextCli;
use predicates::prelude::*;
use std::error::Error;
use test_context::test_context;
#[test_context(TestContextCli, skip_teardown)]
#[test]
fn test_add_and_list_coauthors(ctx: TestContextCli) -> Result<(), Box<dyn Error>> {
// adding 2 co-authors
ctx.git()
.args([
"mob",
"coauthor",
"--add",
"lm",
"Leo Messi",
"leo.messi@example.com",
])
.assert()
.success()
.stdout(predicate::str::diff("Leo Messi <leo.messi@example.com>\n"));
ctx.git()
.args([
"mob",
"coauthor",
"--add",
"em",
"Emi Martinez",
"emi.martinez@example.com",
])
.assert()
.success()
.stdout(predicate::str::diff(
"Emi Martinez <emi.martinez@example.com>\n",
));
// co-authors list shows the 2 co-authors that were added
ctx.git()
.args(["mob", "coauthor", "--list"])
.assert()
.success()
.stdout(predicate::str::diff(
"lm Leo Messi <leo.messi@example.com>\nem Emi Martinez <emi.martinez@example.com>\n",
));
Ok(())
}
#[test_context(TestContextCli, skip_teardown)]
#[test]
fn test_list_coauthors_given_no_coauthors_added(ctx: TestContextCli) -> Result<(), Box<dyn Error>> {
ctx.git()
.args(["mob", "coauthor", "--list"])
.assert()
.success()
.stdout(predicate::str::diff(""));
Ok(())
}
#[test_context(TestContextCli, skip_teardown)]
#[test]
fn test_delete_coauthor(ctx: TestContextCli) -> Result<(), Box<dyn Error>> {
// adding 2 co-authors
ctx.git()
.args([
"mob",
"coauthor",
"--add",
"lm",
"Leo Messi",
"leo.messi@example.com",
])
.assert()
.success();
ctx.git()
.args([
"mob",
"coauthor",
"--add",
"em",
"Emi Martinez",
"emi.martinez@example.com",
])
.assert()
.success();
// deleting one co-author
ctx.git()
.args(["mob", "coauthor", "--delete", "lm"])
.assert()
.success();
// co-authors list excludes the deleted co-author
ctx.git()
.args(["mob", "coauthor", "--list"])
.assert()
.success()
.stdout(predicate::str::diff(
"em Emi Martinez <emi.martinez@example.com>\n",
));
Ok(())
}
#[test_context(TestContextCli, skip_teardown)]
#[test]
fn test_delete_coauthor_when_coauthor_not_found(ctx: TestContextCli) -> Result<(), Box<dyn Error>> {
ctx.git()
.args(["mob", "coauthor", "--delete", "lm"])
.assert()
.failure()
.stderr(predicate::str::diff(
"Error: \"No co-author found with key: lm\"\n",
));
Ok(())
}