@@ -12,4 +12,105 @@ class IngestorTest < ActiveSupport::TestCase
12
12
expected = "# Title\n \n - Item 1\n - Item 2"
13
13
assert_equal expected , ingestor . convert_description ( input )
14
14
end
15
- end
15
+
16
+ test 'sets event language from source default language' do
17
+ user = users ( :scraper_user )
18
+ provider = content_providers ( :portal_provider )
19
+
20
+ # Source has default language set
21
+ @source = Source . create! ( url : 'https://somewhere.com/stuff' , method : 'bioschemas' ,
22
+ enabled : true , approval_status : 'approved' ,
23
+ default_language : 'fr' ,
24
+ content_provider : provider , user : users ( :admin ) )
25
+
26
+ ingestor = Ingestors ::Ingestor . new
27
+
28
+ # Fake an event that was read ... no language set
29
+ ingestor . instance_variable_set ( :@events ,
30
+ [ OpenStruct . new ( url : 'https://some-course.ca' ,
31
+ title : 'Some course' ,
32
+ start : '2021-01-31 13:00:00' ,
33
+ end :'2021-01-31 14:00:00' ) ] )
34
+ assert_difference ( 'provider.events.count' , 1 ) do
35
+ ingestor . write ( user , provider , source : @source )
36
+ end
37
+ event = Event . find_by ( title : 'Some course' )
38
+ assert_equal ( event . language , 'fr' )
39
+ end
40
+
41
+ test 'does not override event language from source default language when language set' do
42
+ user = users ( :scraper_user )
43
+ provider = content_providers ( :portal_provider )
44
+
45
+ # Source has default language set
46
+ @source = Source . create! ( url : 'https://somewhere.com/stuff' , method : 'bioschemas' ,
47
+ enabled : true , approval_status : 'approved' ,
48
+ default_language : 'fr' ,
49
+ content_provider : provider , user : users ( :admin ) )
50
+
51
+ ingestor = Ingestors ::Ingestor . new
52
+
53
+ # Fake an event that was read ... with language set
54
+ ingestor . instance_variable_set ( :@events ,
55
+ [ OpenStruct . new ( url : 'https://some-course.de' ,
56
+ title : 'Some german course' ,
57
+ start : '2021-01-31 13:00:00' ,
58
+ end :'2021-01-31 14:00:00' ,
59
+ language : 'de' ) ] )
60
+ assert_difference ( 'provider.events.count' , 1 ) do
61
+ ingestor . write ( user , provider , source : @source )
62
+ end
63
+ event = Event . find_by ( title : 'Some german course' )
64
+ assert_equal ( event . language , 'de' )
65
+ end
66
+
67
+ test 'does not override event language when source default language missing' do
68
+ user = users ( :scraper_user )
69
+ provider = content_providers ( :portal_provider )
70
+
71
+ # Source has no default language set
72
+ @source = Source . create! ( url : 'https://somewhere.com/stuff' , method : 'bioschemas' ,
73
+ enabled : true , approval_status : 'approved' ,
74
+ content_provider : provider , user : users ( :admin ) )
75
+
76
+ ingestor = Ingestors ::Ingestor . new
77
+
78
+ # Fake an event that was read ... with language set
79
+ ingestor . instance_variable_set ( :@events ,
80
+ [ OpenStruct . new ( url : 'https://some-course.org' ,
81
+ title : 'Some other course' ,
82
+ start : '2021-01-31 13:00:00' ,
83
+ end :'2021-01-31 14:00:00' ,
84
+ language : 'de' ) ] )
85
+ assert_difference ( 'provider.events.count' , 1 ) do
86
+ ingestor . write ( user , provider , source : @source )
87
+ end
88
+ event = Event . find_by ( title : 'Some other course' )
89
+ assert_equal ( event . language , 'de' )
90
+ end
91
+
92
+ test 'does not set event language when languare and source default language missing' do
93
+ user = users ( :scraper_user )
94
+ provider = content_providers ( :portal_provider )
95
+
96
+ # Source has no default language set
97
+ @source = Source . create! ( url : 'https://somewhere.com/stuff' , method : 'bioschemas' ,
98
+ enabled : true , approval_status : 'approved' ,
99
+ content_provider : provider , user : users ( :admin ) )
100
+
101
+ ingestor = Ingestors ::Ingestor . new
102
+
103
+ # Fake an event that was read ... no language set
104
+ ingestor . instance_variable_set ( :@events ,
105
+ [ OpenStruct . new ( url : 'https://some-course.net' ,
106
+ title : 'Yet another course' ,
107
+ start : '2021-01-31 13:00:00' ,
108
+ end :'2021-01-31 14:00:00' ) ] )
109
+ assert_difference ( 'provider.events.count' , 1 ) do
110
+ ingestor . write ( user , provider , source : @source )
111
+ end
112
+ event = Event . find_by ( title : 'Yet another course' )
113
+ assert_nil ( event . language )
114
+ end
115
+
116
+ end
0 commit comments