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  }