6
6
import json
7
7
8
8
from django .test import TestCase
9
- import pytest
10
9
11
10
from readthedocs .builds .constants import BRANCH , STABLE , TAG
12
11
from readthedocs .builds .models import Version
@@ -153,7 +152,7 @@ def test_new_tag_update_inactive(self):
153
152
version_8 = Version .objects .get (slug = '0.8.3' )
154
153
self .assertFalse (version_8 .active )
155
154
156
- def test_stable_stuck (self ):
155
+ def test_normal_behaviour_for_stable_after_deleting_user_defined_tag (self ):
157
156
"""
158
157
The repository has a tag named ``stable``,
159
158
when syncing the versions, the RTD's ``stable`` is lost
@@ -166,6 +165,7 @@ def test_stable_stuck(self):
166
165
verbose_name = '0.8.3' ,
167
166
type = TAG ,
168
167
active = False ,
168
+ machine = True ,
169
169
)
170
170
self .pip .update_stable_version ()
171
171
current_stable = self .pip .get_stable_version ()
@@ -185,6 +185,7 @@ def test_stable_stuck(self):
185
185
},
186
186
],
187
187
'tags' : [
188
+ # User new stable
188
189
{
189
190
'identifier' : '1abc2def3' ,
190
191
'verbose_name' : 'stable' ,
@@ -203,21 +204,7 @@ def test_stable_stuck(self):
203
204
)
204
205
self .assertEqual (resp .status_code , 200 )
205
206
206
- # The new tag is the new stable
207
- version8 = Version .objects .get (slug = '0.8.3' )
208
- version_stable = Version .objects .get (slug = 'stable' )
209
- current_stable = self .pip .get_stable_version ()
210
- self .assertEqual (
211
- version_stable .identifier ,
212
- current_stable .identifier ,
213
- )
214
-
215
- # The current_stable lost its machine property
216
- # it's not automatically updated anymore
217
- self .assertFalse (current_stable .machine )
218
-
219
- # Deleting the stable version should
220
- # return the RTD's stable
207
+ # Deleting the stable version should return the RTD's stable
221
208
version_post_data = {
222
209
'branches' : [
223
210
{
@@ -252,6 +239,7 @@ def test_stable_stuck(self):
252
239
'1abc2def3' ,
253
240
current_stable .identifier ,
254
241
)
242
+ self .assertTrue (current_stable .machine )
255
243
256
244
257
245
class TestStableVersion (TestCase ):
@@ -570,8 +558,85 @@ def test_unicode(self):
570
558
)
571
559
self .assertEqual (resp .status_code , 200 )
572
560
573
- def test_user_defined_stable_version_with_tags (self ):
561
+ def test_user_defined_stable_version_tag_with_tags (self ):
562
+ Version .objects .create (
563
+ project = self .pip ,
564
+ identifier = '0.8.3' ,
565
+ verbose_name = '0.8.3' ,
566
+ active = True ,
567
+ )
574
568
569
+ # A pre-existing active stable tag that was machine created
570
+ Version .objects .create (
571
+ project = self .pip ,
572
+ identifier = 'foo' ,
573
+ type = TAG ,
574
+ verbose_name = 'stable' ,
575
+ active = True ,
576
+ machine = True ,
577
+ )
578
+
579
+ version_post_data = {
580
+ 'branches' : [
581
+ {
582
+ 'identifier' : 'origin/master' ,
583
+ 'verbose_name' : 'master' ,
584
+ },
585
+ ],
586
+ 'tags' : [
587
+ # A new user-defined stable branch
588
+ {
589
+ 'identifier' : '1abc2def3' ,
590
+ 'verbose_name' : 'stable' ,
591
+ },
592
+ {
593
+ 'identifier' : '0.9' ,
594
+ 'verbose_name' : '0.9' ,
595
+ },
596
+ {
597
+ 'identifier' : '0.8.3' ,
598
+ 'verbose_name' : '0.8.3' ,
599
+ },
600
+ ],
601
+ }
602
+
603
+ resp = self .client .post (
604
+ '/api/v2/project/{}/sync_versions/' .format (self .pip .pk ),
605
+ data = json .dumps (version_post_data ),
606
+ content_type = 'application/json' ,
607
+ )
608
+ self .assertEqual (resp .status_code , 200 )
609
+
610
+ # Didn't update to newest tag
611
+ version_9 = Version .objects .get (slug = '0.9' )
612
+ self .assertFalse (version_9 .active )
613
+
614
+ # Did update to user-defined stable version
615
+ version_stable = Version .objects .get (slug = 'stable' )
616
+ self .assertFalse (version_stable .machine )
617
+ self .assertTrue (version_stable .active )
618
+ self .assertEqual (
619
+ '1abc2def3' ,
620
+ self .pip .get_stable_version ().identifier
621
+ )
622
+
623
+ # Check that posting again doesn't change anything from current state.
624
+ resp = self .client .post (
625
+ '/api/v2/project/{}/sync_versions/' .format (self .pip .pk ),
626
+ data = json .dumps (version_post_data ),
627
+ content_type = 'application/json' ,
628
+ )
629
+ self .assertEqual (resp .status_code , 200 )
630
+
631
+ version_stable = Version .objects .get (slug = 'stable' )
632
+ self .assertFalse (version_stable .machine )
633
+ self .assertTrue (version_stable .active )
634
+ self .assertEqual (
635
+ '1abc2def3' ,
636
+ self .pip .get_stable_version ().identifier
637
+ )
638
+
639
+ def test_user_defined_stable_version_branch_with_tags (self ):
575
640
Version .objects .create (
576
641
project = self .pip ,
577
642
identifier = '0.8.3' ,
@@ -583,7 +648,7 @@ def test_user_defined_stable_version_with_tags(self):
583
648
Version .objects .create (
584
649
project = self .pip ,
585
650
identifier = 'foo' ,
586
- type = 'branch' ,
651
+ type = BRANCH ,
587
652
verbose_name = 'stable' ,
588
653
active = True ,
589
654
machine = True ,
@@ -613,11 +678,12 @@ def test_user_defined_stable_version_with_tags(self):
613
678
],
614
679
}
615
680
616
- self .client .post (
681
+ resp = self .client .post (
617
682
'/api/v2/project/{}/sync_versions/' .format (self .pip .pk ),
618
683
data = json .dumps (version_post_data ),
619
684
content_type = 'application/json' ,
620
685
)
686
+ self .assertEqual (resp .status_code , 200 )
621
687
622
688
# Didn't update to newest tag
623
689
version_9 = Version .objects .get (slug = '0.9' )
@@ -627,13 +693,23 @@ def test_user_defined_stable_version_with_tags(self):
627
693
version_stable = Version .objects .get (slug = 'stable' )
628
694
self .assertFalse (version_stable .machine )
629
695
self .assertTrue (version_stable .active )
630
- self .assertEqual ('origin/stable' , self .pip .get_stable_version ().identifier )
696
+ self .assertEqual (
697
+ 'origin/stable' ,
698
+ self .pip .get_stable_version ().identifier
699
+ )
631
700
632
701
# Check that posting again doesn't change anything from current state.
633
- self .client .post (
702
+ resp = self .client .post (
634
703
'/api/v2/project/{}/sync_versions/' .format (self .pip .pk ),
635
704
data = json .dumps (version_post_data ),
636
705
content_type = 'application/json' ,
637
706
)
707
+ self .assertEqual (resp .status_code , 200 )
638
708
639
- self .assertEqual ('origin/stable' , self .pip .get_stable_version ().identifier )
709
+ version_stable = Version .objects .get (slug = 'stable' )
710
+ self .assertFalse (version_stable .machine )
711
+ self .assertTrue (version_stable .active )
712
+ self .assertEqual (
713
+ 'origin/stable' ,
714
+ self .pip .get_stable_version ().identifier
715
+ )
0 commit comments