| 
									
										
										
										
											2023-03-31 09:07:22 +11:00
										 |  |  | # frozen_string_literal: true | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | require "rails_helper" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | describe ::TopicsController do | 
					
						
							|  |  |  |   fab!(:topic) { Fabricate(:topic) } | 
					
						
							|  |  |  |   fab!(:topic1) { Fabricate(:topic) } | 
					
						
							|  |  |  |   fab!(:topic2) { Fabricate(:topic) } | 
					
						
							| 
									
										
										
										
											2023-03-31 11:04:34 +11:00
										 |  |  |   fab!(:topic3) { Fabricate(:topic) } | 
					
						
							| 
									
										
										
										
											2023-03-31 09:07:22 +11:00
										 |  |  |   fab!(:user) { Fabricate(:admin) } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   before do | 
					
						
							| 
									
										
										
										
											2023-03-31 11:04:34 +11:00
										 |  |  |     SiteSetting.ai_embeddings_semantic_related_topics_enabled = true | 
					
						
							|  |  |  |     SiteSetting.ai_embeddings_semantic_related_topics = 2
 | 
					
						
							| 
									
										
										
										
											2023-03-31 09:07:22 +11:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   context "when a user is logged on" do | 
					
						
							|  |  |  |     it "includes related topics in payload when configured" do | 
					
						
							| 
									
										
										
										
											2023-09-05 11:08:23 -03:00
										 |  |  |       DiscourseAi::Embeddings::SemanticRelated | 
					
						
							|  |  |  |         .any_instance | 
					
						
							|  |  |  |         .stubs(:related_topic_ids_for) | 
					
						
							|  |  |  |         .returns([topic1.id, topic2.id, topic3.id]) | 
					
						
							| 
									
										
										
										
											2023-03-31 11:04:34 +11:00
										 |  |  | 
 | 
					
						
							|  |  |  |       get("#{topic.relative_url}.json") | 
					
						
							| 
									
										
										
										
											2023-05-23 18:57:52 -03:00
										 |  |  |       expect(response.status).to eq(200) | 
					
						
							| 
									
										
										
										
											2023-03-31 11:04:34 +11:00
										 |  |  |       json = response.parsed_body | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       expect(json["suggested_topics"].length).to eq(0) | 
					
						
							|  |  |  |       expect(json["related_topics"].length).to eq(2) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-03-31 09:07:22 +11:00
										 |  |  |       sign_in(user) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       get("#{topic.relative_url}.json") | 
					
						
							|  |  |  |       json = response.parsed_body | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       expect(json["suggested_topics"].length).to eq(0) | 
					
						
							| 
									
										
										
										
											2023-03-31 11:04:34 +11:00
										 |  |  |       expect(json["related_topics"].length).to eq(2) | 
					
						
							| 
									
										
										
										
											2023-03-31 09:07:22 +11:00
										 |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end |