golift.io/starr@v1.0.0/starrcmd/sonarr_test.go (about) 1 //nolint:paralleltest 2 package starrcmd_test 3 4 import ( 5 "os" 6 "testing" 7 8 "golift.io/starr/starrcmd" 9 ) 10 11 func TestSonarrApplicationUpdate(t *testing.T) { 12 t.Setenv("sonarr_eventtype", string(starrcmd.EventApplicationUpdate)) 13 t.Setenv("sonarr_update_previousversion", "2.0.3.5875") 14 t.Setenv("sonarr_update_newversion", "2.0.4.5909") 15 t.Setenv("sonarr_update_message", "Sonarr updated from 2.0.3.5875 to 2.0.4.5909") 16 17 cmd, err := starrcmd.New() 18 if err != nil { 19 t.Fatalf("got an unexpected error: %s", err) 20 } 21 22 switch info, err := cmd.GetSonarrApplicationUpdate(); { 23 case err != nil: 24 t.Fatalf("got an unexpected error: %s", err) 25 case info.Message != os.Getenv("sonarr_update_message"): 26 t.Fatalf("got wrong Message? %s", info.Message) 27 case info.NewVersion != "2.0.4.5909": 28 t.Fatalf("got wrong new version? wanted: '2.0.4.5909' got: %s", info.Message) 29 case info.PreviousVersion != "2.0.3.5875": 30 t.Fatalf("got wrong Message? wanted: '2.0.3.5875' got: %s", info.Message) 31 } 32 } 33 34 func TestSonarrHealthIssue(t *testing.T) { 35 t.Setenv("sonarr_eventtype", string(starrcmd.EventHealthIssue)) 36 t.Setenv("sonarr_health_issue_type", "SomeIssueTypeForSonarr") 37 t.Setenv("sonarr_health_issue_wiki", "https://wiki.servarr.com/sonarr") 38 t.Setenv("sonarr_health_issue_level", "Error") 39 t.Setenv("sonarr_health_issue_message", "Lists unavailable due to failures: List name here") 40 41 cmd, err := starrcmd.New() 42 if err != nil { 43 t.Fatalf("got an unexpected error: %s", err) 44 } 45 46 switch info, err := cmd.GetSonarrHealthIssue(); { 47 case err != nil: 48 t.Fatalf("got an unexpected error: %s", err) 49 case info.Message != os.Getenv("sonarr_health_issue_message"): 50 t.Fatalf("got wrong Message? %s", info.Message) 51 case info.Wiki != "https://wiki.servarr.com/sonarr": 52 t.Fatalf("got wrong wiki link? wanted: 'https://wiki.servarr.com/sonarr' got: %s", info.Wiki) 53 case info.Level != "Error": 54 t.Fatalf("got wrong level? wanted: 'Error' got: %s", info.Level) 55 case info.IssueType != "SomeIssueTypeForSonarr": 56 t.Fatalf("got wrong issue type? wanted: 'ImportListStatusCheck' got: %s", info.IssueType) 57 } 58 } 59 60 func TestSonarrTest(t *testing.T) { 61 t.Setenv("sonarr_eventtype", string(starrcmd.EventTest)) 62 63 cmd, err := starrcmd.New() 64 if err != nil { 65 t.Fatalf("got an unexpected error: %s", err) 66 } 67 68 switch info, err := cmd.GetSonarrTest(); { 69 case err != nil: 70 t.Fatalf("got an unexpected error: %s", err) 71 case info != starrcmd.SonarrTest{}: 72 t.Fatalf("got an wrong structure in return") 73 } 74 } 75 76 // XXX: this test could use a bit more love. 77 func TestSonarrDownload(t *testing.T) { 78 // Only testing a few members here. Expand this if you need more tests! 79 t.Setenv("sonarr_eventtype", string(starrcmd.EventDownload)) 80 t.Setenv("sonarr_series_title", "Le Title") 81 t.Setenv("sonarr_series_id", "1234") 82 t.Setenv("sonarr_isupgrade", "True") 83 t.Setenv("sonarr_episodefile_episodeairdatesutc", "1/21/2022 2:00:00 PM,1/21/2022 2:12:00 PM") 84 t.Setenv("sonarr_deletedpaths", "/path1|/path2") 85 t.Setenv("sonarr_episodefile_episodeairdates", "2022-01-21,2022-01-21") 86 t.Setenv("sonarr_episodefile_episodetitles", "Title 1|Title 2") 87 88 cmd, err := starrcmd.New() 89 if err != nil { 90 t.Fatalf("got an unexpected error: %s", err) 91 } 92 93 switch info, err := cmd.GetSonarrDownload(); { 94 default: 95 // fmt.Println(info.EpisodeAirDatesUTC) 96 case err != nil: 97 t.Fatalf("got an unexpected error: %s", err) 98 case info.DownloadClient != "": 99 t.Fatalf("got wrong download client? expected: <blank>, got: %v", info.DownloadClient) 100 case !info.IsUpgrade: 101 t.Fatalf("got wrong upgrade bool? expected: true, got: %v", info.IsUpgrade) 102 } 103 } 104 105 func TestSonarrGrab(t *testing.T) { 106 t.Setenv("sonarr_eventtype", string(starrcmd.EventGrab)) 107 t.Setenv("sonarr_release_quality", "HDTV-720p") 108 t.Setenv("sonarr_series_title", "This Is Us") 109 t.Setenv("sonarr_release_qualityversion", "1") 110 t.Setenv("sonarr_series_id", "47") 111 t.Setenv("sonarr_release_episodenumbers", "4") 112 t.Setenv("sonarr_release_episodecount", "1") 113 t.Setenv("sonarr_download_client", "NZBGet") 114 t.Setenv("sonarr_release_episodeairdates", "2022-01-25") 115 t.Setenv("sonarr_release_episodetitles", "Don't Let Me Keep You") 116 t.Setenv("sonarr_release_title", "This.is.Us.S06E04.720p.HDTV.x264-SYNCOPY") 117 t.Setenv("sonarr_download_id", "a87bda3c0e7f40a1b8fa011b421a5201") 118 t.Setenv("sonarr_release_indexer", "Indexor (Prowlarr)") 119 t.Setenv("sonarr_series_type", "Standard") 120 t.Setenv("sonarr_release_size", "885369406") 121 t.Setenv("sonarr_series_tvdbid", "311714") 122 t.Setenv("sonarr_series_tvmazeid", "17128") 123 t.Setenv("sonarr_release_releasegroup", "SYNCOPY") 124 t.Setenv("sonarr_release_seasonnumber", "6") 125 t.Setenv("sonarr_release_absoluteepisodenumbers", "92") 126 t.Setenv("sonarr_series_imdbid", "tt5555260") 127 t.Setenv("sonarr_release_episodeairdatesutc", "1/26/2022 2:00:00 AM") 128 129 cmd, err := starrcmd.New() 130 if err != nil { 131 t.Fatalf("got an unexpected error: %s", err) 132 } 133 134 switch info, err := cmd.GetSonarrGrab(); { 135 default: 136 // fmt.Println(info.EpisodeAirDatesUTC) 137 case err != nil: 138 t.Fatalf("got an unexpected error: %s", err) 139 case info.DownloadClient != "NZBGet": 140 t.Fatalf("got wrong download client? expected: <blank>, got: %v", info.DownloadClient) 141 } 142 } 143 144 func TestSonarrRename(t *testing.T) { 145 t.Setenv("sonarr_eventtype", string(starrcmd.EventRename)) 146 147 t.Setenv("sonarr_series_id", "12345") 148 t.Setenv("sonarr_series_title", "series.Title") 149 t.Setenv("sonarr_series_path", "series.Path") 150 t.Setenv("sonarr_series_tvdbid", "324") 151 t.Setenv("sonarr_series_tvmazeid", "23455") 152 t.Setenv("sonarr_series_imdbid", "iasdashdgaisdhaidhadji") 153 t.Setenv("sonarr_series_type", "anime") 154 t.Setenv("sonarr_episodefile_ids", "1,2,3,4") 155 t.Setenv("sonarr_episodefile_relativepaths", "foo") 156 t.Setenv("sonarr_episodefile_paths", "stuff") 157 t.Setenv("sonarr_episodefile_previousrelativepaths", "more stuff") 158 t.Setenv("sonarr_episodefile_previouspaths", "all the stuff") 159 160 cmd, err := starrcmd.New() 161 if err != nil { 162 t.Fatalf("got an unexpected error: %s", err) 163 } 164 165 switch info, err := cmd.GetSonarrRename(); { 166 default: 167 // fmt.Println(info.EpisodeAirDatesUTC) 168 case err != nil: 169 t.Fatalf("got an unexpected error: %s", err) 170 case info.ID != 12345: 171 t.Fatalf("got wrong ID? expected: 12345, got: %v", info.ID) 172 } 173 } 174 175 // SonarrSeriesDelete is the SeriesDelete event. 176 func TestSonarrSeriesDelete(t *testing.T) { 177 t.Setenv("sonarr_eventtype", string(starrcmd.EventSeriesDelete)) 178 179 t.Setenv("sonarr_series_id", "2323") 180 t.Setenv("sonarr_series_title", "series.Title") 181 t.Setenv("sonarr_series_path", "series.Path") 182 t.Setenv("sonarr_series_tvdbid", "232323") 183 t.Setenv("sonarr_series_tvmazeid", "343434") 184 t.Setenv("sonarr_series_imdbid", "series.ImdbId ?? string.Empty)") 185 t.Setenv("sonarr_series_type", "animar") 186 t.Setenv("sonarr_series_deletedfiles", "false") 187 188 cmd, err := starrcmd.New() 189 if err != nil { 190 t.Fatalf("got an unexpected error: %s", err) 191 } 192 193 switch info, err := cmd.GetSonarrSeriesDelete(); { 194 default: 195 // fmt.Println(info.EpisodeAirDatesUTC) 196 case err != nil: 197 t.Fatalf("got an unexpected error: %s", err) 198 case info.ID != 2323: 199 t.Fatalf("got wrong ID? expected: 2323, got: %v", info.ID) 200 } 201 } 202 203 // SonarrEpisodeFileDelete is the EpisodeFileDelete event. 204 func TestSonarrEpisodeFileDelete(t *testing.T) { 205 t.Setenv("sonarr_eventtype", string(starrcmd.EventEpisodeFileDelete)) 206 207 t.Setenv("sonarr_episodefile_deletereason", "deleteMessage.Reason.ToString())") 208 t.Setenv("sonarr_series_id", "31212") 209 t.Setenv("sonarr_series_title", "series.Title") 210 t.Setenv("sonarr_series_path", "series.Path") 211 t.Setenv("sonarr_series_tvdbid", "1234444") 212 t.Setenv("sonarr_series_tvmazeid", "44332") 213 t.Setenv("sonarr_series_imdbid", "series.ImdbId ?? string.Empty)") 214 t.Setenv("sonarr_series_type", "anime") 215 t.Setenv("sonarr_episodefile_id", "12121222") 216 t.Setenv("sonarr_episodefile_episodecount", "2") 217 t.Setenv("sonarr_episodefile_relativepath", "episodeFile.RelativePath") 218 t.Setenv("sonarr_episodefile_path", "Path.Combine(series.Path, episodeFile.RelativePath))") 219 t.Setenv("sonarr_episodefile_episodeids", "1,2,3,4") 220 t.Setenv("sonarr_episodefile_seasonnumber", "episodeFile.SeasonNumber.ToString())") 221 t.Setenv("sonarr_episodefile_episodenumbers", "1,2,3,4") 222 t.Setenv("sonarr_episodefile_episodeairdates", "") 223 t.Setenv("sonarr_episodefile_episodeairdatesutc", "") 224 t.Setenv("sonarr_episodefile_episodetitles", "title1|title2") 225 t.Setenv("sonarr_episodefile_quality", "") 226 t.Setenv("sonarr_episodefile_qualityversion", "no idea") 227 t.Setenv("sonarr_episodefile_releasegroup", "DOPE") 228 t.Setenv("sonarr_episodefile_scenename", "dirty harry") 229 230 cmd, err := starrcmd.New() 231 if err != nil { 232 t.Fatalf("got an unexpected error: %s", err) 233 } 234 235 switch info, err := cmd.GetSonarrEpisodeFileDelete(); { 236 default: 237 // fmt.Println(info.EpisodeAirDatesUTC) 238 case err != nil: 239 t.Fatalf("got an unexpected error: %s", err) 240 case info.ID != 31212: 241 t.Fatalf("got wrong ID? expected: 12345, got: %v", info.ID) 242 } 243 }