@@ -91,7 +91,7 @@ public async Task PUT_promo_code_should_not_accept_a_expired_token(string url, s
9191 [ Theory ]
9292 [ InlineData ( $ "/accounts/{ TestUsersData . EMAIL_TEST1 } /campaigns/111/content/promo-code/222", TestUsersData . TOKEN_TEST1_EXPIRE_20330518 , 222 ) ]
9393 [ InlineData ( $ "/accounts/{ TestUsersData . EMAIL_TEST1 } /campaigns/111/content/promo-code/222", TestUsersData . TOKEN_SUPERUSER_EXPIRE_20330518 , 222 ) ]
94- public async Task PUT_campaign_should_accept_right_tokens_and_return_Ok ( string url , string token , int promoCodeId )
94+ public async Task PUT_promo_code_should_accept_right_tokens_and_return_Ok ( string url , string token , int promoCodeId )
9595 {
9696 // Arrange
9797 var dbContextMock = new Mock < IDbContext > ( ) ;
@@ -114,4 +114,38 @@ public async Task PUT_campaign_should_accept_right_tokens_and_return_Ok(string u
114114 // Assert
115115 Assert . Equal ( HttpStatusCode . OK , response . StatusCode ) ;
116116 }
117+
118+ [ Fact ]
119+ public async Task PUT_promo_code_should_return_NotFound_when_campaign_promocode_relation_does_not_exist ( )
120+ {
121+ // Arrange
122+ var dbContextMock = new Mock < IDbContext > ( ) ;
123+
124+ var campaignId = 111 ;
125+ var promoCodeId = 222 ;
126+ var endpointPath = $ "/accounts/{ TestUsersData . EMAIL_TEST1 } /campaigns/{ campaignId } /content/promo-code/{ promoCodeId } ";
127+ var token = TestUsersData . TOKEN_SUPERUSER_EXPIRE_20330518 ;
128+
129+ // Return 0, it does not found CampaignId/PromoCodeId relation to update
130+ dbContextMock
131+ . Setup ( x => x . ExecuteAsync ( It . Is < UpdatePromoCodeDbQuery > ( q => q . Id == promoCodeId && q . IdCampaign == campaignId ) ) )
132+ . ReturnsAsync ( 0 ) ;
133+
134+ var client = _factory . CreateSutClient ( serviceToOverride1 : dbContextMock . Object , token ) ;
135+
136+ // Act
137+ var response = await client . PutAsync ( endpointPath , JsonContent . Create ( new
138+ {
139+ type = "type" ,
140+ value = 10 ,
141+ includeShipping = true ,
142+ firstPurchase = true ,
143+ } ) ) ;
144+
145+ // Assert
146+ Assert . Equal ( HttpStatusCode . NotFound , response . StatusCode ) ;
147+
148+ var responseContent = await response . Content . ReadAsStringAsync ( ) ;
149+ Assert . Equal ( "The Campaign/PromoCode relation doesn't exist." , responseContent ) ;
150+ }
117151}
0 commit comments