/// <summary> /// セール期間を判別してセットする /// </summary> /// <param name="saleInformation"></param> /// <param name="count">現在何件目のセール情報</param> /// <param name="total">セール情報のトータル</param> void CheckSalePeriod(SaleInformation saleInformation, int count, int total) { if (saleInformation.Error == true) { return; } // タイトルから終了日を判別 saleInformation.SetSalePeriod(DateTime.Now, null, ExtractEndDate(saleInformation.Name), count, total); if (saleInformation.EndDate != null) { if (saleInformation.EndDate < DateTime.Now) { saleInformation.SaleFinished = true; } else { saleInformation.SaleStarted = true; } return; } // セールページをスクレイピングしてセール期間を判別 using (var stream = client.GetStreamAsync(GetAssociateLinkByBrowseNode(saleInformation.NodeId)).Result) { (var startDate, var endDate) = ExtractSalePeriod(saleInformation, stream); saleInformation.SetSalePeriod(DateTime.Now, startDate, endDate, count, total); } if (saleInformation.StartDate != null && saleInformation.EndDate != null) { if (saleInformation.EndDate < DateTime.Now) { saleInformation.SaleFinished = true; } else if (saleInformation.StartDate < DateTime.Now) { saleInformation.SaleStarted = true; saleInformation.SaleFinished = false; } return; } // ここまできたら、セールページは存在するが、タイトルからもセールページからもセール期間が判別できないので、 // 何も処理しない }
public void SetSalePeriodTest(int nowYear, int nowMonth, int nowDay, string startDate, string endDate, int count, int total, string expectedStartDate, string expectedEndDate) { var saleInformation = new SaleInformation(); DateTime now = new DateTime(nowYear, nowMonth, nowDay); saleInformation.SetSalePeriod(now, startDate, endDate, count, total); Assert.Equal(expectedStartDate, saleInformation.StartDate.ToString("yyyy/MM/dd")); Assert.Equal(expectedEndDate, saleInformation.EndDate.ToString("yyyy/MM/dd")); }