private void FetchLevelsCallback(bool success, string response) { if (!success) { Prompt(FETCH_LEVELS_FAILURE_PROMPT); return; } ParsedResponse parsedResponse = JsonUtility.FromJson <ParsedResponse>(response); if (!parsedResponse.success) { Prompt(FETCH_LEVELS_FAILURE_PROMPT); return; } Prompt(FETCH_LEVELS_SUCCESS_PROMPT); SessionManager.Instance.InitializeSession(parsedResponse.username, parsedResponse.session_id); ParsedLevelCollection parsedLevelCollection = JsonUtility.FromJson <ParsedLevelCollection>(parsedResponse.data); levelListManager.ClearLevels(); foreach (ParsedLevel parsedLevel in parsedLevelCollection.levels) { levelListManager.AddLevelEntry(parsedLevel.level_id, parsedLevel.level_name, parsedLevel.level_designer, parsedLevel.level_metadata); } }
private void FetchAttemptsCallback(bool success, string response) { if (!success) { Prompt(FETCH_ATTEMPTS_FAILURE_PROMPT); return; } ParsedResponse parsedResponse = JsonUtility.FromJson <ParsedResponse>(response); if (!parsedResponse.success) { Prompt(FETCH_ATTEMPTS_FAILURE_PROMPT); return; } Prompt(FETCH_ATTEMPTS_SUCCESS_PROMPT); SessionManager.Instance.InitializeSession(parsedResponse.username, parsedResponse.session_id); ParsedAttemptCollection parsedAttemptCollection = JsonUtility.FromJson <ParsedAttemptCollection>(parsedResponse.data); levelListManager.ClearAttempts(); foreach (ParsedAttempt parsedAttempt in parsedAttemptCollection.attempts) { levelListManager.AddAttemptEntry( parsedAttempt.level_id, parsedAttempt.level_name, parsedAttempt.attempt_designer, parsedAttempt.level_metadata, parsedAttempt.attempt_metadata, parsedAttempt.avg_speed, parsedAttempt.budget_req, parsedAttempt.score); } levelListManager.OpenOverlay(); }
public async Task PrecompiledView_RendersCorrectly() { // Arrange IServiceCollection serviceCollection = null; var server = TestHelper.CreateServer(_app, SiteName, services => { _configureServices(services); serviceCollection = services; }); var client = server.CreateClient(); var serviceProvider = serviceCollection.BuildServiceProvider(); var applicationEnvironment = serviceProvider.GetRequiredService <IApplicationEnvironment>(); var viewsDirectory = Path.Combine(applicationEnvironment.ApplicationBasePath, "Views", "Home"); var indexContent = File.ReadAllText(Path.Combine(viewsDirectory, "Index.cshtml")); // We will render a view that writes the fully qualified name of the Assembly containing the type of // the view. If the view is precompiled, this assembly will be PrecompilationWebsite. var assemblyNamePrefix = GetAssemblyNamePrefix(); try { // Act - 1 var response = await client.GetAsync("http://localhost/Home/Index"); var responseContent = await response.Content.ReadAsStringAsync(); // Assert - 1 Assert.Equal(HttpStatusCode.OK, response.StatusCode); var parsedResponse1 = new ParsedResponse(responseContent); Assert.StartsWith(assemblyNamePrefix, parsedResponse1.ViewStart); Assert.StartsWith(assemblyNamePrefix, parsedResponse1.Layout); Assert.StartsWith(assemblyNamePrefix, parsedResponse1.Index); // Act - 2 // Touch the Index file and verify it remains unaffected. await TouchFile(viewsDirectory, "Index.cshtml"); responseContent = await client.GetStringAsync("http://localhost/Home/Index"); // Assert - 2 var response2 = new ParsedResponse(responseContent); Assert.StartsWith(assemblyNamePrefix, response2.ViewStart); Assert.StartsWith(assemblyNamePrefix, response2.Index); Assert.StartsWith(assemblyNamePrefix, response2.Layout); } finally { File.WriteAllText(Path.Combine(viewsDirectory, "Index.cshtml"), indexContent.TrimEnd(' ')); } }
public async Task PrecompiledView_RendersCorrectly() { // Arrange IServiceCollection serviceCollection = null; var server = TestHelper.CreateServer(_app, SiteName, services => { _configureServices(services); serviceCollection = services; }); var client = server.CreateClient(); var serviceProvider = serviceCollection.BuildServiceProvider(); var applicationEnvironment = serviceProvider.GetRequiredService<IApplicationEnvironment>(); var viewsDirectory = Path.Combine(applicationEnvironment.ApplicationBasePath, "Views", "Home"); var indexContent = File.ReadAllText(Path.Combine(viewsDirectory, "Index.cshtml")); // We will render a view that writes the fully qualified name of the Assembly containing the type of // the view. If the view is precompiled, this assembly will be PrecompilationWebsite. var assemblyNamePrefix = GetAssemblyNamePrefix(); try { // Act - 1 var response = await client.GetAsync("http://localhost/Home/Index"); var responseContent = await response.Content.ReadAsStringAsync(); // Assert - 1 Assert.Equal(HttpStatusCode.OK, response.StatusCode); var parsedResponse1 = new ParsedResponse(responseContent); Assert.StartsWith(assemblyNamePrefix, parsedResponse1.ViewStart); Assert.StartsWith(assemblyNamePrefix, parsedResponse1.Layout); Assert.StartsWith(assemblyNamePrefix, parsedResponse1.Index); // Act - 2 // Touch the Index file and verify it remains unaffected. await TouchFile(viewsDirectory, "Index.cshtml"); responseContent = await client.GetStringAsync("http://localhost/Home/Index"); // Assert - 2 var response2 = new ParsedResponse(responseContent); Assert.StartsWith(assemblyNamePrefix, response2.ViewStart); Assert.StartsWith(assemblyNamePrefix, response2.Index); Assert.StartsWith(assemblyNamePrefix, response2.Layout); } finally { File.WriteAllText(Path.Combine(viewsDirectory, "Index.cshtml"), indexContent.TrimEnd(' ')); } }
private void PublishCallback(bool success, string response) { if (!success) { UIManager.Instance.Prompt(PUBLISH_ATTEMPT_FAILURE_PROMPT); return; } ParsedResponse parsedResponse = JsonUtility.FromJson <ParsedResponse>(response); if (!parsedResponse.success) { UIManager.Instance.Prompt(PUBLISH_ATTEMPT_FAILURE_PROMPT); return; } UIManager.Instance.Prompt(PUBLISH_ATTEMPT_SUCCESS_PROMPT); SessionManager.Instance.InitializeSession(parsedResponse.username, parsedResponse.session_id); }
public async Task PrecompiledView_RendersCorrectly() { // Arrange // We will render a view that writes the fully qualified name of the Assembly containing the type of // the view. If the view is precompiled, this assembly will be PrecompilationWebsite. var assemblyNamePrefix = GetAssemblyNamePrefix(); // Act var response = await Client.GetAsync("http://localhost/Home/Index"); var responseContent = await response.Content.ReadAsStringAsync(); // Assert Assert.Equal(HttpStatusCode.OK, response.StatusCode); var parsedResponse1 = new ParsedResponse(responseContent); Assert.StartsWith(assemblyNamePrefix, parsedResponse1.ViewStart); Assert.StartsWith(assemblyNamePrefix, parsedResponse1.Layout); Assert.StartsWith(assemblyNamePrefix, parsedResponse1.Index); }
private void RegisterCallback(bool success, string response) { if (!success) { Prompt(REGISTER_FAILURE_PROMPT); FocusUsername(); return; } ParsedResponse parsedResponse = JsonUtility.FromJson <ParsedResponse>(response); if (!parsedResponse.success) { Prompt(REGISTER_FAILURE_PROMPT); FocusUsername(); return; } Prompt(REGISTER_SUCCESS_PROMPT); }
public ResponseBase(string rawResponse, int statusCode, bool successful) { RawResponse = rawResponse; StatusCode = statusCode; Successful = successful; try { ParsedResponse = JToken.Parse(rawResponse); //Seems to be an error response, populate the Error property if (ParsedResponse[nameof(Error.ErrorIdentifier)] != null) { Error = ParsedResponse.ToObject <Error>(); } } catch { //ignore } }
private void FetchRankCallback(bool success, string response) { if (!success) { score.text = string.Format("{0:0.000} (?th percentile)", simulationStats.Score); return; } ParsedResponse parsedResponse = JsonUtility.FromJson <ParsedResponse>(response); if (!parsedResponse.success) { score.text = string.Format("{0:0.000} (?th percentile)", simulationStats.Score); return; } SessionManager.Instance.InitializeSession(parsedResponse.username, parsedResponse.session_id); ParsedRank parsedRank = JsonUtility.FromJson <ParsedRank>(parsedResponse.data); float percentile = 100.0f * (parsedRank.above + 1) / (parsedRank.above + 1 + parsedRank.below); score.text = string.Format("{0:0.000} ({1:0.#}th percentile)", simulationStats.Score, percentile); }
private void LoginCallback(bool success, string response) { if (!success) { Prompt(LOG_IN_FAILURE_PROMPT); FocusUsername(); return; } ParsedResponse parsedResponse = JsonUtility.FromJson <ParsedResponse>(response); if (!parsedResponse.success) { Prompt(LOG_IN_FAILURE_PROMPT); FocusUsername(); return; } Prompt(LOG_IN_SUCCESS_PROMPT); SessionManager.Instance.InitializeSession(parsedResponse.username, parsedResponse.session_id); SceneManager.LoadScene(SceneUtils.LOBBY); }
public async Task PrecompiledView_RendersCorrectly() { // Arrange IServiceCollection serviceCollection = null; var server = TestHelper.CreateServer(_app, SiteName, services => { _configureServices(services); serviceCollection = services; }); var client = server.CreateClient(); var serviceProvider = serviceCollection.BuildServiceProvider(); var applicationEnvironment = serviceProvider.GetRequiredService<IApplicationEnvironment>(); var viewsDirectory = Path.Combine(applicationEnvironment.ApplicationBasePath, "Views", "Home"); var layoutContent = File.ReadAllText(Path.Combine(viewsDirectory, "Layout.cshtml")); var indexContent = File.ReadAllText(Path.Combine(viewsDirectory, "Index.cshtml")); var viewstartContent = File.ReadAllText(Path.Combine(viewsDirectory, "_ViewStart.cshtml")); var globalContent = File.ReadAllText(Path.Combine(viewsDirectory, "_ViewImports.cshtml")); // We will render a view that writes the fully qualified name of the Assembly containing the type of // the view. If the view is precompiled, this assembly will be PrecompilationWebsite. var assemblyNamePrefix = GetAssemblyNamePrefix(); try { // Act - 1 var response = await client.GetAsync("http://localhost/Home/Index"); var responseContent = await response.Content.ReadAsStringAsync(); // Assert - 1 Assert.Equal(HttpStatusCode.OK, response.StatusCode); var parsedResponse1 = new ParsedResponse(responseContent); Assert.StartsWith(assemblyNamePrefix, parsedResponse1.ViewStart); Assert.StartsWith(assemblyNamePrefix, parsedResponse1.Layout); Assert.StartsWith(assemblyNamePrefix, parsedResponse1.Index); // Act - 2 // Touch the Layout file and verify it is now dynamically compiled. await TouchFile(viewsDirectory, "Layout.cshtml"); responseContent = await client.GetStringAsync("http://localhost/Home/Index"); // Assert - 2 var response2 = new ParsedResponse(responseContent); Assert.StartsWith(assemblyNamePrefix, response2.ViewStart); Assert.StartsWith(assemblyNamePrefix, response2.Index); Assert.DoesNotContain(assemblyNamePrefix, response2.Layout); // Act - 3 // Touch the _ViewStart file and verify it is is dynamically compiled. await TouchFile(viewsDirectory, "_ViewStart.cshtml"); responseContent = await client.GetStringAsync("http://localhost/Home/Index"); // Assert - 3 var response3 = new ParsedResponse(responseContent); Assert.NotEqual(assemblyNamePrefix, response3.ViewStart); Assert.Equal(response2.Index, response3.Index); Assert.Equal(response2.Layout, response3.Layout); // Act - 4 // Touch the _ViewImports file and verify it causes all files to recompile. await TouchFile(viewsDirectory, "_ViewImports.cshtml"); responseContent = await client.GetStringAsync("http://localhost/Home/Index"); // Assert - 4 var response4 = new ParsedResponse(responseContent); Assert.NotEqual(response3.ViewStart, response4.ViewStart); Assert.NotEqual(response3.Index, response4.Index); Assert.NotEqual(response3.Layout, response4.Layout); // Act - 5 // Touch Index file and verify it is the only page that recompiles. await TouchFile(viewsDirectory, "Index.cshtml"); responseContent = await client.GetStringAsync("http://localhost/Home/Index"); // Assert - 5 var response5 = new ParsedResponse(responseContent); // Layout and _ViewStart should not have changed. Assert.Equal(response4.Layout, response5.Layout); Assert.Equal(response4.ViewStart, response5.ViewStart); Assert.NotEqual(response4.Index, response5.Index); // Act - 6 // Touch the _ViewImports file. This time, we'll verify the Non-precompiled -> Non-precompiled workflow. await TouchFile(viewsDirectory, "_ViewImports.cshtml"); responseContent = await client.GetStringAsync("http://localhost/Home/Index"); // Assert - 6 var response6 = new ParsedResponse(responseContent); // Everything should've recompiled. Assert.NotEqual(response5.ViewStart, response6.ViewStart); Assert.NotEqual(response5.Index, response6.Index); Assert.NotEqual(response5.Layout, response6.Layout); // Act - 7 // Add a new _ViewImports file var newViewImports = await TouchFile(Path.GetDirectoryName(viewsDirectory), "_ViewImports.cshtml"); responseContent = await client.GetStringAsync("http://localhost/Home/Index"); // Assert - 7 // Everything should've recompiled. var response7 = new ParsedResponse(responseContent); Assert.NotEqual(response6.ViewStart, response7.ViewStart); Assert.NotEqual(response6.Index, response7.Index); Assert.NotEqual(response6.Layout, response7.Layout); // Act - 8 // Remove new _ViewImports file File.Delete(newViewImports); await Task.Delay(_cacheDelayInterval); responseContent = await client.GetStringAsync("http://localhost/Home/Index"); // Assert - 8 // Everything should've recompiled. var response8 = new ParsedResponse(responseContent); Assert.NotEqual(response7.ViewStart, response8.ViewStart); Assert.NotEqual(response7.Index, response8.Index); Assert.NotEqual(response7.Layout, response8.Layout); // Act - 9 // Refetch and verify we get cached types responseContent = await client.GetStringAsync("http://localhost/Home/Index"); // Assert - 9 var response9 = new ParsedResponse(responseContent); Assert.Equal(response8.ViewStart, response9.ViewStart); Assert.Equal(response8.Index, response9.Index); Assert.Equal(response8.Layout, response9.Layout); } finally { File.WriteAllText(Path.Combine(viewsDirectory, "Layout.cshtml"), layoutContent.TrimEnd(' ')); File.WriteAllText(Path.Combine(viewsDirectory, "Index.cshtml"), indexContent.TrimEnd(' ')); File.WriteAllText(Path.Combine(viewsDirectory, "_ViewStart.cshtml"), viewstartContent.TrimEnd(' ')); File.WriteAllText(Path.Combine(viewsDirectory, "_ViewImports.cshtml"), globalContent.TrimEnd(' ')); } }
public async Task PrecompiledView_RendersCorrectly() { // Arrange IServiceCollection serviceCollection = null; var server = TestHelper.CreateServer(_app, SiteName, services => { _configureServices(services); serviceCollection = services; }); var client = server.CreateClient(); var serviceProvider = serviceCollection.BuildServiceProvider(); var applicationEnvironment = serviceProvider.GetRequiredService <IApplicationEnvironment>(); var viewsDirectory = Path.Combine(applicationEnvironment.ApplicationBasePath, "Views", "Home"); var layoutContent = File.ReadAllText(Path.Combine(viewsDirectory, "Layout.cshtml")); var indexContent = File.ReadAllText(Path.Combine(viewsDirectory, "Index.cshtml")); var viewstartContent = File.ReadAllText(Path.Combine(viewsDirectory, "_ViewStart.cshtml")); var globalContent = File.ReadAllText(Path.Combine(viewsDirectory, "_ViewImports.cshtml")); // We will render a view that writes the fully qualified name of the Assembly containing the type of // the view. If the view is precompiled, this assembly will be PrecompilationWebsite. var assemblyNamePrefix = GetAssemblyNamePrefix(); try { // Act - 1 var response = await client.GetAsync("http://localhost/Home/Index"); var responseContent = await response.Content.ReadAsStringAsync(); // Assert - 1 Assert.Equal(HttpStatusCode.OK, response.StatusCode); var parsedResponse1 = new ParsedResponse(responseContent); Assert.StartsWith(assemblyNamePrefix, parsedResponse1.ViewStart); Assert.StartsWith(assemblyNamePrefix, parsedResponse1.Layout); Assert.StartsWith(assemblyNamePrefix, parsedResponse1.Index); // Act - 2 // Touch the Layout file and verify it is now dynamically compiled. await TouchFile(viewsDirectory, "Layout.cshtml"); responseContent = await client.GetStringAsync("http://localhost/Home/Index"); // Assert - 2 var response2 = new ParsedResponse(responseContent); Assert.StartsWith(assemblyNamePrefix, response2.ViewStart); Assert.StartsWith(assemblyNamePrefix, response2.Index); Assert.DoesNotContain(assemblyNamePrefix, response2.Layout); // Act - 3 // Touch the _ViewStart file and verify it is is dynamically compiled. await TouchFile(viewsDirectory, "_ViewStart.cshtml"); responseContent = await client.GetStringAsync("http://localhost/Home/Index"); // Assert - 3 var response3 = new ParsedResponse(responseContent); Assert.NotEqual(assemblyNamePrefix, response3.ViewStart); Assert.Equal(response2.Index, response3.Index); Assert.Equal(response2.Layout, response3.Layout); // Act - 4 // Touch the _ViewImports file and verify it causes all files to recompile. await TouchFile(viewsDirectory, "_ViewImports.cshtml"); responseContent = await client.GetStringAsync("http://localhost/Home/Index"); // Assert - 4 var response4 = new ParsedResponse(responseContent); Assert.NotEqual(response3.ViewStart, response4.ViewStart); Assert.NotEqual(response3.Index, response4.Index); Assert.NotEqual(response3.Layout, response4.Layout); // Act - 5 // Touch Index file and verify it is the only page that recompiles. await TouchFile(viewsDirectory, "Index.cshtml"); responseContent = await client.GetStringAsync("http://localhost/Home/Index"); // Assert - 5 var response5 = new ParsedResponse(responseContent); // Layout and _ViewStart should not have changed. Assert.Equal(response4.Layout, response5.Layout); Assert.Equal(response4.ViewStart, response5.ViewStart); Assert.NotEqual(response4.Index, response5.Index); // Act - 6 // Touch the _ViewImports file. This time, we'll verify the Non-precompiled -> Non-precompiled workflow. await TouchFile(viewsDirectory, "_ViewImports.cshtml"); responseContent = await client.GetStringAsync("http://localhost/Home/Index"); // Assert - 6 var response6 = new ParsedResponse(responseContent); // Everything should've recompiled. Assert.NotEqual(response5.ViewStart, response6.ViewStart); Assert.NotEqual(response5.Index, response6.Index); Assert.NotEqual(response5.Layout, response6.Layout); // Act - 7 // Add a new _ViewImports file var newViewImports = await TouchFile(Path.GetDirectoryName(viewsDirectory), "_ViewImports.cshtml"); responseContent = await client.GetStringAsync("http://localhost/Home/Index"); // Assert - 7 // Everything should've recompiled. var response7 = new ParsedResponse(responseContent); Assert.NotEqual(response6.ViewStart, response7.ViewStart); Assert.NotEqual(response6.Index, response7.Index); Assert.NotEqual(response6.Layout, response7.Layout); // Act - 8 // Remove new _ViewImports file File.Delete(newViewImports); await Task.Delay(_cacheDelayInterval); responseContent = await client.GetStringAsync("http://localhost/Home/Index"); // Assert - 8 // Everything should've recompiled. var response8 = new ParsedResponse(responseContent); Assert.NotEqual(response7.ViewStart, response8.ViewStart); Assert.NotEqual(response7.Index, response8.Index); Assert.NotEqual(response7.Layout, response8.Layout); // Act - 9 // Refetch and verify we get cached types responseContent = await client.GetStringAsync("http://localhost/Home/Index"); // Assert - 9 var response9 = new ParsedResponse(responseContent); Assert.Equal(response8.ViewStart, response9.ViewStart); Assert.Equal(response8.Index, response9.Index); Assert.Equal(response8.Layout, response9.Layout); } finally { File.WriteAllText(Path.Combine(viewsDirectory, "Layout.cshtml"), layoutContent.TrimEnd(' ')); File.WriteAllText(Path.Combine(viewsDirectory, "Index.cshtml"), indexContent.TrimEnd(' ')); File.WriteAllText(Path.Combine(viewsDirectory, "_ViewStart.cshtml"), viewstartContent.TrimEnd(' ')); File.WriteAllText(Path.Combine(viewsDirectory, "_ViewImports.cshtml"), globalContent.TrimEnd(' ')); } }
public async Task PrecompiledView_RendersCorrectly() { // Arrange var applicationEnvironment = _services.GetRequiredService <IApplicationEnvironment>(); var viewsDirectory = Path.Combine(applicationEnvironment.ApplicationBasePath, "Views", "Home"); var layoutContent = File.ReadAllText(Path.Combine(viewsDirectory, "Layout.cshtml")); var indexContent = File.ReadAllText(Path.Combine(viewsDirectory, "Index.cshtml")); var viewstartContent = File.ReadAllText(Path.Combine(viewsDirectory, "_ViewStart.cshtml")); var server = TestServer.Create(_services, _app); var client = server.CreateClient(); // We will render a view that writes the fully qualified name of the Assembly containing the type of // the view. If the view is precompiled, this assembly will be PrecompilationWebsite. var assemblyName = typeof(Startup).GetTypeInfo().Assembly.GetName().ToString(); try { // Act - 1 var response = await client.GetAsync("http://localhost/Home/Index"); var responseContent = await response.Content.ReadAsStringAsync(); // Assert - 1 Assert.Equal(HttpStatusCode.OK, response.StatusCode); var parsedResponse1 = new ParsedResponse(responseContent); Assert.Equal(assemblyName, parsedResponse1.ViewStart); Assert.Equal(assemblyName, parsedResponse1.Layout); Assert.Equal(assemblyName, parsedResponse1.Index); // Act - 2 // Touch the Layout file and verify it is now dynamically compiled. await TouchFile(viewsDirectory, "Layout.cshtml"); responseContent = await client.GetStringAsync("http://localhost/Home/Index"); // Assert - 2 var response2 = new ParsedResponse(responseContent); Assert.NotEqual(assemblyName, response2.Layout); Assert.Equal(assemblyName, response2.ViewStart); Assert.Equal(assemblyName, response2.Index); // Act - 3 // Touch the _ViewStart file and verify it causes all files to recompile. await TouchFile(viewsDirectory, "_ViewStart.cshtml"); responseContent = await client.GetStringAsync("http://localhost/Home/Index"); // Assert - 3 var response3 = new ParsedResponse(responseContent); Assert.NotEqual(assemblyName, response3.ViewStart); Assert.NotEqual(assemblyName, response3.Index); Assert.NotEqual(response2.Layout, response3.Layout); // Act - 4 // Touch Index file and verify it is the only page that recompiles. await TouchFile(viewsDirectory, "Index.cshtml"); responseContent = await client.GetStringAsync("http://localhost/Home/Index"); // Assert - 4 var response4 = new ParsedResponse(responseContent); // Layout and _ViewStart should not have changed. Assert.Equal(response3.Layout, response4.Layout); Assert.Equal(response3.ViewStart, response4.ViewStart); Assert.NotEqual(response3.Index, response4.Index); // Act - 5 // Touch the _ViewStart file. This time, we'll verify the Non-precompiled -> Non-precompiled workflow. await TouchFile(viewsDirectory, "_ViewStart.cshtml"); responseContent = await client.GetStringAsync("http://localhost/Home/Index"); // Assert - 5 var response5 = new ParsedResponse(responseContent); // Everything should've recompiled. Assert.NotEqual(response4.ViewStart, response5.ViewStart); Assert.NotEqual(response4.Index, response5.Index); Assert.NotEqual(response4.Layout, response5.Layout); // Act - 6 // Add a new _ViewStart file File.WriteAllText(Path.Combine(viewsDirectory, "..", "_ViewStart.cshtml"), string.Empty); await Task.Delay(_cacheDelayInterval); responseContent = await client.GetStringAsync("http://localhost/Home/Index"); // Assert - 6 // Everything should've recompiled. var response6 = new ParsedResponse(responseContent); Assert.NotEqual(response5.ViewStart, response6.ViewStart); Assert.NotEqual(response5.Index, response6.Index); Assert.NotEqual(response5.Layout, response6.Layout); // Act - 7 // Remove new _ViewStart file File.Delete(Path.Combine(viewsDirectory, "..", "_ViewStart.cshtml")); await Task.Delay(_cacheDelayInterval); responseContent = await client.GetStringAsync("http://localhost/Home/Index"); // Assert - 7 // Everything should've recompiled. var response7 = new ParsedResponse(responseContent); Assert.NotEqual(response6.ViewStart, response7.ViewStart); Assert.NotEqual(response6.Index, response7.Index); Assert.NotEqual(response6.Layout, response7.Layout); // Act - 8 // Refetch and verify we get cached types responseContent = await client.GetStringAsync("http://localhost/Home/Index"); // Assert - 7 var response8 = new ParsedResponse(responseContent); Assert.Equal(response7.ViewStart, response8.ViewStart); Assert.Equal(response7.Index, response8.Index); Assert.Equal(response7.Layout, response8.Layout); } finally { File.WriteAllText(Path.Combine(viewsDirectory, "Layout.cshtml"), layoutContent); File.WriteAllText(Path.Combine(viewsDirectory, "Index.cshtml"), indexContent); File.WriteAllText(Path.Combine(viewsDirectory, "_ViewStart.cshtml"), viewstartContent); } }